當前位置:
首頁 > 新聞 > 滲透測試中利用基於時間差反饋的遠程代碼執行漏洞(Timed Based RCE)進行數據獲取

滲透測試中利用基於時間差反饋的遠程代碼執行漏洞(Timed Based RCE)進行數據獲取


在最近的滲透測試項目中,為了進一步驗證漏洞的可用性和危害性,我們遇到了這樣一種情形:構造基於時間差反饋的系統注入命令(OS command injection time based ),從某邏輯隔離的伺服器中實現數據獲取。

以下是測試過程中的相關思路整理,僅供借鑒參考

(滲透測試最終利用工具請移步

GitHub-TBDEx

)。


漏洞說明

由於該邏輯隔離伺服器僅能通過API服務提供的程序介面實現特定服務訪問,而在對該API介面的測試過程中,我們發現了一個有趣的GET request請求,其中包含了兩個參數,一個為字元串,另一個為請求包的ID號。

之後在對參數的fuzzing中,其對單引號的處理方式和特徵貌似像是SQL注入漏洞,但在漏洞利用過程中卻不能成功實現注入攻擊,然而,當我們執行了『sleep 10′命令後,HTTP response在10秒鐘之後有了回應,這下可能有戲了!我們首先想到的是,該API程序完蛋了,因為這樣就可以對API服務端執行遠程代碼了。


Payload不能有效執行

但一切都高興得太早,本來我們通過HTTP響應頭判斷API服務應該是架設在Windows平台上,但漏洞利用payload只在Bash或PowerShell下可用,所以,只能重新在Bash或PowerShell模式下進行可行性測試。

為了模擬實際測試效果,我們通過在linux環境下運行形如以下、包含sleep命令的「time if」判斷語句來查看系統反饋信息:


linux下time命令可以獲取到一個程序的執行時間,包括程序的實際運行時間(real time),以及程序運行在用戶態的時間(user time)和內核態的時間(sys time)。

利用這種方式,我們在模擬伺服器上進行了各種ncat、wget、curl測試和其它數據竊取動作,如FTP 連接、 DNS請求,甚至是ICMP請求,但依然不能成功,沒有效果。後來,我們才意識到,由於目標伺服器主機處於有防火牆的邏輯隔離網路內,我們執行的命令估計被防火牆阻擋了。


構造基於時間延遲的判斷執行命令

之後,一個同事建議可以嘗試用形如以下sleep語句來運行包含的任務命令,這樣一方面可以通過時間延遲來逐字元判斷輸出值,又能實現命令自動化,就像從基於時間(time-based)的SQL注入中獲取輸出信息一樣。

考慮到網路延遲,我們首先想到的是,構造一個包含以下命令,按字元位置進行猜解判斷的腳本,可以看到,以下黃色框內命令中:


time if [ $(whoami | cut -c 1 == r)]; then sleep 5; fi

如果系統用戶為root,通過whoami | cut -c 1 == r 方式取root的第一個字元「r」成功,則相應的時間延遲為5秒,與判斷命令中的sleep 5結果一致,以此方式猜解出系統用戶為root


Linux系統cut命令從文件的每一行剪切位元組、字元和欄位並將這些位元組、字元和欄位寫至標準輸出。

-b :以位元組為單位進行分割

-c :以字元為單位進行分割,cut -c 1 取第1個字元

-d :自定義分隔符,默認為製表符

-f :與-d一起使用,指定顯示哪個區域

-n :取消分割多位元組字元



突破限制構造有效Payload命令

你可以想像用這種方式是多麼的繁雜,更煩人的是,前述發現的GET請求參數中竟然有48個字元的最大限制, 而我們構造的payload遠遠超過48個字元。為了繞過這種限制,我們只有把任務命令的輸出結果重定向到系統某個臨時文件中,然後用cut方式分割這些輸出結果,取出需要的位置字元,結合time命令的時間延遲方式判斷猜解,大概方法如下:

使用以上方法構造的payload可以控制在48個字元以內,但是在payload獲取數據時候又遇到字元限制的問題:只能獲取9個字元以內的數據。之後,我們想到可以向遠程主機中分段寫入命令,形成腳本,之後,利用這個過渡腳本就可以執行某種命令。

我們最終把以上這些所有想法和思路集成為了一個python工具TBDEx(Time Based Data Exfiltration Tool),另外,為了提高運行效率,用猜解判斷字元的ASCII碼值方式替代了單純的字元判斷。


為什麼不用Commix?

Commix是一款系統命令注入漏洞自動化測試工具,它具有包含Time-based在內的很多數據獲取技術。可能有人會問,怎麼不用Commix呢?這主要有兩方面原因:


Commix形成的payload非常長而且在我們的滲透場景中執行不成功

Commix對我們特定命令的執行非常耗時,讀取一個whoami命令都很慢


TBDEx如何使用?

該工具包含三個部分:


length.py或length.bat:猜測判斷重定向輸出文件中包含的執行命令結果長度

ascii.py或ascii.bat:猜測判斷特定位置字元的ASCII碼值

timebased.py:程序執行主文件,發送命令請求並分析響應時間是否滿足漏洞利用條件


數據獲取過程:


把執行命令結果重定向輸出到某個文件

用length.py或length.bat猜測判斷執行命令結果輸出長度

猜解判斷獲取數據的實際ASCII碼值

對執行命令結果輸出長度的判斷,請遵循以下幾個綜合判斷步驟:


1.輸出長度是否大於 0? : python l.py 0 0 0 4 =>沒有檢測到延遲,這意味著它是真的;

2.輸出長度是否大於10?: python l.py 10 0 0 4 =>檢測到4秒延遲,這意味著這是假的

3.輸出是否等於10?: python l.py 10 1 0 4 =>沒有檢測到延遲,這意味著是假的

4.輸出是否等於9?: python l.py 9 1 0 4 => 檢測到4秒延遲,這意味著我們找到了實際的輸出長度

得到執行命令輸出結果長度之後,我們就可以用程序進行實際的ASCII碼值猜解:


python ascii.py {CHAR_POS} {ASCII_VALUE} {IS_GREATER} {WHERE_THE_OUTPUT_IS_AT} {TIME_DELAY}

當然,用主程序來執行的例子如下:


python timbesed.py -url http://192.168.207.128/ml.php?c=%here% -payload_limit 48 -tmp

執行uname -a:

完美獲取長度達2863字元的/etc/password結果:

測試鏈接http://192.168.207.128/ml.php中的ml.php可以是以下內容,感興趣的話,可以自行嘗試:


運行TBDEx工具的必備安裝組件pycurl:


pip install pycurl

apt-get install pycurl

apt-get install python-pycurl


TBDEx的使用命令和運行參數:


-h, –help show this help message and exit

-url URL URL

-post POST POST

-threads THREADS Threads

-cookie COOKIE FILE Cookie File

-file HEADER FILE Burp request file

-retry RETRY Retry request N times in case of network errors

-timeout TIMEOUT General timeout request

-time AVGTIME Added timeout to request

-os OS OS type (U unix/linux , W windows)

-payload limit LIMIT If there is any command length limitation

-force write Force writing auxiliary files

-tmp Writing auxiliary files in tmp folder

TBDEx工具下載:

Github


*參考來源:

securitycafe

,FB小編clouds編譯,轉載請註明來自FreeBuf.COM


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

如何利用sdclt磁碟備份工具繞過UAC
釣魚引發的APT攻擊回溯 | C&C伺服器位於韓國,whois註冊卻在中國上海
蘋果公司遭遇黑客組織勒索:不付贖金就曝光或抹除3億iCloud賬戶信息
PHP網站滲透中的奇技淫巧:檢查相等時的漏洞

TAG:FreeBuf |

您可能感興趣

Windows Lnk遠程代碼執行漏洞利用測試
遠程遙控IPTables進行埠復用
Spring WebFlow 遠程代碼執行漏洞分析
挖洞經驗 | 看我如何綜合利用4個漏洞實現GitHub Enterprise 遠程代碼執行
【FB TV】一周「BUF大事件」:Struts2又曝高危遠程代碼執行漏洞;維基解密CIA系列新工具;MongoDB啟示錄延續
基於Python的遠程管理工具(RAT) – Stitch
Samba 遠程代碼執行漏洞
用JMX遠程監控Tomcat
Windows Server中的 WINS 伺服器遠程內存損壞漏洞分析
HIROTEC選擇PTC ThingWorx平台實施遠程監控 實時監測在全球各地的生產系統
知名 Web 應用伺服器 Tomcat 信息泄漏和遠程代碼執行漏洞
rubygems.org遠程命令執行漏洞分析
關於對Windows Office遠程代碼執行漏洞開展安全加固的緊急通報
Scope AR支持ARKit 將它用到遠程協作中
i-Safe IoT遠程伴侶系統
Struts2遠程代碼執行漏洞安全分析
【FB TV】一周「BUF大事件」:IIS 6.0曝遠程代碼執行漏洞;LastPass再曝高危漏洞;58同城簡歷泄露事件
Oracle人力資源管理系統PeopleSoft未授權遠程代碼執行漏洞解析
如何把Photoshop改造成遠程控制工具(RAT)來利用