SSRF介紹及利用
阿新 • • 發佈:2022-03-31
一、介紹
定義:SSRF(Server-Side Request Forgery:伺服器端請求偽造)通過篡改 HTTP 請求中的資源地址傳送給伺服器,伺服器沒有校驗請求的合法性,伺服器解析使用者傳遞過來的請求,處理之後返回給使用者。簡單理解就是將WEB伺服器作為了一個跳板(代理)去請求更深層(內網)的資源。 危害及利用: 1.內外網的埠和服務掃描 2.主機本地敏感資料的讀取(任意檔案讀取) 3.內外網主機應用程式漏洞的利用 4.內外網 Web 站點漏洞的利用 產生的原因: 1.引數使用者可控 2.後端使用了一些危險函式。例如PHP中下面函式的使用不當會導致SSRF: file_get_contents() 可以讀取PHP檔案 fsockopen() curl_exec() 不能讀取PHP檔案
二、實戰(靶場為pikachu)
1.埠掃描
在靶場的SSRF內容裡面
我們只要將 /pikachu/vul/ssrf/ssrf_info/info1.php 換成對應的埠號,然後進行爆破(bp或者自己寫指令碼),就可以瞭解哪些埠是開放的。
這裡注意有時候http協議不好用,我們可以將http協議換成dict協議。
2.SSRF任意檔案讀取
(1)簡單基礎檔案
在這裡我們要注意,web伺服器的許可權 ,讀取的檔案一定是web伺服器許可權所允許的,不然許可權不夠無法讀取。
示例如下:
注意我們這裡利用了file協議去讀取檔案,讀取 / 根目錄下的etc下的passwd檔案。
至於SSRF能用哪些協議,每一個站點都不一樣,需要自己去測試。
補充:file協議不能讀取php檔案。我們要利用以下方法。
(2)PHP檔案讀取
用到的方法介紹
官方回答太複雜了,簡單來說就是利用 php://filter來讀取一個數據流。固定寫法:php://filter/read=convert.base64-encode/resource=
看如下示例:
然後我們解碼獲取到的資料即可。