SSRF(服務端請求偽造)
形成原因:由於服務端提供了從其他服務器應用獲取數據的功能,但又沒有對目標地址做嚴格過濾與限制,導致攻擊者可以傳入任意的地址來讓后端服務器對其發送請求,並返回對該目標地址請求的數據
在PHP中:某些函數的不當使用會導致SSRF:如file_get_conntents()、fsockopen()、curl_exec()
file_get_conntents():把文件寫入字符串,當url是內網文件時,會先把這個文件的內容讀出來再寫入,導致了文件讀取
fsockopen():實現獲取用戶指定url的數據(文件或者html),這個函數會使用socket跟服務器建立tcp連接,傳輸原始數據
curl_exec:通過file、dict、gopher三個協議來進行滲透
危害:獲取web應用可達服務器服務的banner信息,以及收集內網web應用的指紋識別,根據這些信息再進行進一步的滲透
攻擊運行在內網的系統或應用程序,獲取內網系統弱口令進行內網漫游,對有漏洞的內網web應用實施攻擊獲取webshell
利用由脆弱性的組件結合ftp://、file://、dict://等協議實施攻擊
漏洞發生點:
通過url地址分享網頁內容
文件處理、編碼處理、轉碼等服務
在線翻譯
通過url地址加載與下載圖片
圖片、文章收藏功能
未公開的api實現及其他調用url的功能
網站郵箱收取其他郵箱郵件功能
從url關鍵字尋找:share,wap,url,link,src,source,target,u,3g,display,sourceURL,imageURL,domain等
這一部分關於
內網訪問
偽協議讀取文件
端口掃描
內網訪問
根據提示
構造:
得到flag
偽協議讀取文件
提示
file偽協議上一篇講過了用法,此題運用file協議讀取
構造:
端口掃描
提示
這題運用了dict協議
dict協議運用:
curl:一種命令行工具,作用是發出網絡請求,獲取數據
curl -v ‘dict://ip:端口’:顯示HTTP通信的整個過程,包括端口連接和HTTP request頭信息
dict協議是一個字典服務器協議,通常用於讓客戶端使用過程中能夠訪問更多的字典源,在SSRF中如果可以使用此協議,就可以輕易獲取目標服務器端口上運行的服務版本等信息(遠程利用)
用bp的intruder模塊進行測試
①
②
③start attack
掃描出8237端口,注意這里每個人測出來的端口會不同,最后構造payload訪問得到flag