1. 程式人生 > 其它 >SSRF介紹及利用

SSRF介紹及利用

一、介紹

  定義:SSRF(Server-Side Request Forgery:伺服器端請求偽造)通過篡改 HTTP 請求中的資源地址傳送給伺服器,伺服器沒有校驗請求的合法性,伺服器解析使用者傳遞過來的請求,處理之後返回給使用者。簡單理解就是將WEB伺服器作為了一個跳板(代理)去請求更深層(內網)的資源。   危害及利用: 1.外網的埠和服務掃描 2.主機本地敏感資料的讀取(任意檔案讀取) 3.內外網主機應用程式漏洞的利用 4.內外網 Web 站點漏洞的利用   產生的原因: 1.引數使用者可控 2.後端使用了一些危險函式。例如 
PHP中下面函式的使用不當會導致SSRF:
file_get_contents() 可以讀取PHP檔案
fsockopen()
curl_exec() 不能讀取PHP檔案
  一句話來說,SSRF是為了攻擊我們直接打不到的地方。內網一般來說太脆弱了,通過SSRF很容易就攻破了。

二、實戰(靶場為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=

看如下示例:

 

 然後我們解碼獲取到的資料即可。