最近key佬發現了用友NC的ssrf漏洞,現在我們來看看這個漏洞的發現過程
用友UAP系統存在SSRF漏漏洞洞,該漏漏洞洞為回顯型別,可以直接檢視內網的Web資訊,並可以藉助此漏漏洞洞將伺服器 作為HTTP攻擊跳板。
漏洞挖掘過程
在做專案的時候遇到了這個系統,系統版本較新,所以以前的漏洞都沒辦法去使 用。探測 網站 目錄發現了了 /uapws/ , 二次探測發現了了 service ,訪問 /uapws/service 即可獲取到 一堆WSDL接 口:
隨便便找 一個接 口 /uapws/service/nc。itf。bd。crm。ICurrtypeExportToCrmService?wsdl 進 入:
發現 一個接 口帶有 xsd 引數: /uapws/service/nc。itf。bd。crm。ICurrtypeExportToCrmService? xsd=/nc/vo/pub/BusinessException。xsd
根據其引數值 /nc/vo/pub/BusinessException。xsd ,初步判斷為 檔案讀取,去測試發現並不存在檔案讀取的問題:
file:///etc/passwd
。。/。。/。。/。。/。。/。。/etc/passwd
302 redirect
換個思路,將 xsd 引數的值設為URL,是否能成功呢?來測試下,將 xsd 引數的值設為 burp
collaborator 的地址去請求:
目標伺服器 請求成功並返回了了請求的響應主體, burp collaborator 也成功收到了了請求,猜想驗證成功: 可作為HTTP請求攻擊跳板
經過測試是可以探測內 網主機的,並且在這里該點會跟蹤302跳轉(基於PoCBox平臺):
PoC 程式碼
· -*- coding:utf-8 -*-
· Author: Vulkey_Chen
· Email: gh0stkey@hi-ourlife。com
· Team: Defense Team of Mystery Security
· Website: www。hi-ourlife。com
· About: YongYou NC UAPWS SSRF
· Usage: python ssrf。py target_url
import requests,sys
def attack(url):
poc_uri = “/uapws/service”
url = url + poc_uri
r = requests。get(url)
if (r。status_code == 200) and (“wsdl” in r。text):
print “Vulnerable: {0}”。format(url)
if __name__ == ‘__main__’:
attack(sys。argv[1])
漏洞利用難點
這個點主要用於獲取XSD文件內容的,所以很多返回的 非XSD 文件的內容就會有500的錯誤,導致有很多攻擊只能盲打而無法去獲取實際返回內容。
可以看到,這個漏洞屬於webservice API介面漏洞中的ssrf漏洞,本質上是透過wsdl介面,判斷檔案是否存在,從而造成SSRF
我們在挖掘這類漏洞的時候可以利用以下工具:
· Soap UI PRO,滲透測試流程的發起,通訊報文的解析、集合payload之後通訊報文的重新組裝等,14天試用,可以做自動化測試。
· SoapUI Free,手工測試
· SOAPSonar,SOAP UI 的替代。
· Burp Suite,代理攔截,跟蹤通訊過程和結果,對通訊進行重放和二次處理等。
· WSSAT
· WS-Attacker
測試的漏洞除了ssrf還有
· Fuzzing
· XSS /SQLi/ Malformed XML
· File Upload
· Xpath Injection
· XML Bomb (DoS)
· Authentication based attacks
· Replay attacks
· Session fixation
· XML Signature wrapping
· Session timeout
· Host Cipher Support/ Valid Certificate/ Protocol Support
· Hashing Algorithm Support
總之key佬還是很細心的