挖洞經驗丨有上傳文件的文件名處發現的時間延遲注入漏洞

*本文中涉及到的相關漏洞已報送廠商並得到修復,本文僅限技術研究與討論,嚴禁用於非法用途,否則產生的一切後果自行承擔。

0_ErN7MyOU7wjQLSgM.jpg該Writeup是作者在邀請測試項目中發現的,在上傳文件的文件名處(filename)的一個時間延遲盲注漏洞,這種姿勢相對少見,分享在此希望能對大家起到借鑑學習作用。以下是作者的發現過程。

本月初,我受邀參與了HackerOne平臺某廠商的一個私密衆測項目,由於此前我有些朋友也做過該廠商的衆測,所以我就向他們徵詢該廠商相關係統應用的大概情況,以便提前瞭解其中存在的難點和會遇到的坑。

從註冊頁面入手發現上傳功能

在和朋友@reefbr聊過之後,他發給了我目標廠商某重要域名下的一個會員註冊頁面,剛好該註冊頁面在本次測試範圍之內。現在要做的就是,實際註冊測試一下吧。整個註冊過程都很正常,一會之後,我留的註冊郵箱就收到了一封包含訪問Web應用憑據的郵件。

以會員身份登錄目標Web應用之後,我發現其中存在一個文件上傳功能。於是,我通過隨機文件上傳進行測試看看其中的安全限制,發現:

上傳只接受PDF格式文檔

Web應用後端部署有殺毒軟件AV

經過一番分析之後,我覺得該上傳點只接收類似”filename.pdf”的PDF格式文檔,我曾嘗試繞過這種文件格式限制措施,雖然某些條件下可以成功上傳其它格式文件,但上傳文件卻不能在服務端有效執行,所以,我轉向了其它功能點的測試。

記得以前在做滲透測試時,我曾遇到過一個把文件名都包含存儲到數據庫中的Web應用,那次,我通過構造其文件名參數,成功發現了其基於時間差盲注(Time-Based Blind SQL)的漏洞。那麼,這個Web應用是否存在該漏洞呢?試試看。

BurpSuite抓包分析

用Burp Proxy代理抓包分析HTTP請求,點擊上傳按鈕後,把其中的文件名filename值更改爲以下紅框內的值:

sqli-blog-01.png注意:以上filename值情況下,當我不加最後的.pdf後綴名發送請求時,目標Web應用是拒絕接收的。探測發現,目標Web應用之後部署有Cloudflare WAF,所以我的好多測試都被這個WAF給阻擋了,返回的都是”Access Denied” 消息。

我突然想到朋友@reefbr說過他在該廠商之間的測試項目中,曾上報過一個Cloudflare的繞過漏洞,這是一個由配置問題導致的問題,所以,我剛好可以拿來試試看,這一試,我就發現了一個SQL盲注漏洞了。什麼都不說了,直接上POC吧。

POC

利用上述的文件名構造方式,結合Cloudflare繞過問題,我發起了以下請求,注意看其中的時間延遲sleep:

sqli-blog-02.png以上是sleep(0)無延遲的情況,請求需要1380毫秒。現在換成sleep(10)延遲10秒,即10000毫秒,看看:

sqli-blog-03.png增加10000毫秒後,確實變成11350毫秒了。現在,再增加成20秒,即20000毫秒:

sqli-blog-04.png最後時間確實在之前基礎上增加了20000毫秒,變成了21358毫秒了。廠商團隊應該清楚問題實質了吧,我們再增加一點延遲時間看看:

sqli-blog-05.png

那麼,這裏明顯存在一個盲注漏洞。由於目標系統負責處理大量的個人身份信息(PII),所以,如果攻擊者利用這種盲注漏洞對系統中的數據進行提取,將會導致大量的敏感信息泄露,也是因爲此種原因,我才採用了破壞力稍低的時間延遲注入方法來說明漏洞問題。

上報進程

漏洞初報

漏洞分類

漏洞修復

賞金獎勵

*參考來源:jspin,clouds編譯,轉載請註明來自FreeBuf.COM 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章