一、SSRF概述(部分內容來自pikachu平台)
SSRF(Server-Side Request Forgery:服務器端請求偽造),其形成的原因大都是由於服務端提供了從其他服務器應用獲取數據的功能,但又沒有對目標地址做嚴格過濾與限制,導致攻擊者可以傳入任意的地址來讓后端服務器對其發起請求,並返回對該目標地址請求的數據。
數據流:攻擊者----->服務器---->目標地址
根據后台使用的函數的不同,對應的影響和利用方法又有不一樣
PHP中下面函數的使用不當會導致SSRF:
file_get_contents()
fsockopen()
curl_exec()
三個函數支持的協議略有不同,那么進一步深層次的問題,又想了解的可以去百度搜索更多的資源。
如果一定要通過后台服務器遠程去對用戶指定("或者預埋在前端的請求")的地址進行資源請求,則請做好目標地址的過濾。
二、演示環節
2.1 SSRF(curl)
1、我們來到pikachu實驗平台,打開對應的模塊。
2、向后端傳入的URL我們是否可以改成別的呢?我們來試一下同網段的其它地址。
3、由於我測試的機器並沒有聯網,如果你在你的遠端服務器上搭建的pikuchu,在這里你甚至可以將URL地址改為www.baidu.com,都沒有問題。現在我們來看一下源碼。
2.2 SSRF(file_get_contents)
1、來到對應的模塊
2、我們再來看一下源代碼。
3、采用內網請求的方式,我們來測試一下漏洞。