1. 程式人生 > 實用技巧 >SSRF漏洞

SSRF漏洞

SSRF參考視訊 (源自嗶哩嗶哩): https://www.bilibili.com/video/BV1p4411X7UZ?p=60

參考文章 :

https://www.freebuf.com/column/157466.html

https://www.sohu.com/a/241307328_653604

https://www.secshi.com/36469.html

https://blog.csdn.net/fageweiketang/article/details/88983921

https://www.freebuf.com/tag/ssrf%E6%BC%8F%E6%B4%9E

https://blog.csdn.net/qq_37133717/article/details/94647789

https://blog.csdn.net/weixin_34015566/article/details/88678240?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase <衷心感謝!!!!!>


0X -1 SSRF漏洞解釋

SSRF定義:是一種構造請求,由服務端發起的安全請求漏洞。

SSRF與CSRF的區別就是,一個是服務端向內網發起的請求,一個是客戶端向服務端發起的請求。

什麼是SSRF
SSRF(Server-Side Request Forgery:伺服器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。SSRF 形成的原因大都是由於服務端提供了從其他伺服器應用獲取資料的功能且沒有對目標地址做過濾與限制。比如從指定URL地址獲取網頁文字內容,載入指定地址的圖片,下載等等。

正常情況下,客戶端無法直接獲取內網資源,只能通過先伺服器請求,然後伺服器再向內網資源傳送請求,內網資源把資料傳回給伺服器,伺服器在傳回給客戶端,(也就是說,伺服器和內網之間是相互串通的,伺服器可以訪問任何內網的資源,但是客戶端不可以直接向內網請求獲取資料),在正常情況下,客戶端對伺服器的請求是有限制的,也就是說只能請求一部分內網的資源,但是如果伺服器端存在SSRF 漏洞,客戶端就可以隨便向服務端傳送請求,也就是說,客戶端可以任意訪問內網資源,造成內網資源洩露產生更大影響。


0X-2 SSRF漏洞程式碼分析

//存在SSRF漏洞程式碼
<?php
   function curl($curl){
            
            $ch = curl_init();       //初始化程式碼
            curl_setopt($ch,CURLOPT_URL,$url);
            curl_setopt($ch,CURLOPT_HEARER,0);
            curl_exec($ch);      //執行訪問URL
            curl_close($ch);     //關閉連線
   }
   $url = $_GET['url'];      //GET請求獲取URL
   curl($url);
?>

PHP cURL 函式


概述

PHP支援的由Daniel Stenberg建立的libcurl庫允許你與各種的伺服器使用各種型別的協議進行連線和通訊

libcurl目前支援http、https、ftp、gopher、telnet、dict、file和ldap協議。libcurl同時也支援HTTPS認證、HTTP POST、HTTP PUT、 FTP 上傳(這個也能通過PHP的FTP擴充套件完成)、HTTP 基於表單的上傳、代理、cookies和使用者名稱+密碼的認證。

PHP中使用cURL實現Get和Post請求的方法

這些函式在PHP 4.0.2中被引入。

這裡也可以使用burpsuite對檔案的路徑(C:/windows/win.ini)進行猜解。

0x00 PHP偽協議
file:// — 訪問本地檔案系統 http:// — 訪問 HTTP(s) 網址 ftp:// — 訪問 FTP(s) URLs php:// — 訪問各個輸入/輸出流(I/O streams) zlib:// — 壓縮流 data:// — 資料(RFC 2397) glob:// — 查詢匹配的檔案路徑模式 phar:// — PHP 歸檔 ssh2:// — Secure Shell 2 rar:// — RAR ogg:// — 音訊流 expect:// — 處理互動式的流


0X-3 產生SSRF漏洞的程式碼分析


0X-4 SSRF利用方式&&漏洞挖掘

SSRF可以做什麼

  • 敏感資料的讀取 : 可以對外網伺服器所在的內網、本地進行埠掃描,獲取一些服務的banner資訊
  • 攻擊執行在內網或者本地的應用程式。
  • 對內網web應用進行指紋識別,通過訪問預設檔案實現 。
  • 內外網主機應用程式漏洞的利用 : 攻擊內外網的web應用。sql注入、struct2、redis等。
  • 利用file協議讀取本地檔案等。

【SSRF漏洞挖掘】

PHP相關函式:

file_get_content()
curl -> curl_exec()
socket - fsockopen()


一、從web功能上尋找
1、分享:通過URL地址分享網頁內容


2、轉碼服務:通過URL地址把原地址的網頁內容調優使其適合手機螢幕瀏覽
3、線上翻譯:通過URL地址翻譯對應文字的內容 提供此功能的百度、有道等。有道翻譯某處SSRF可通網易內網:
4、圖片載入與下載:通過URL地址載入或下載圖片
圖片載入遠端圖片地址此功能用到的地方很多,但大多都是比較隱祕,比如在有些公司中的載入自家圖片伺服器上的圖片用於展示。(此處可能會有人有疑問,為什麼載入圖片伺服器上的圖片 也會有問題,直接使用img標籤不就好了,沒錯是這樣,但是開發者為了有更好的使用者體驗通常對圖片做些微小調整例如加水印、壓縮等,就必須要把圖片下載到伺服器的本地,所以就可能造 成SSRF問題)。
5、圖片、文章收藏功能

二、從URL關鍵字中尋找

share

wap

url

link

src

source

target

u

3g

display

sourceURL

imageURL

domain

..... 配合fofa或者sodan

三. 通用的SSRF例項

Weblogic配置不當,天生ssrf漏洞
Discuz x2.5/x3.0/x3.1/x3.2 ssrf漏洞

【SSRF漏洞的驗證】

一、基本判斷(排除法)
排除法一:
你可以直接右鍵圖片,在新視窗開啟圖片,如果是瀏覽器上URL位址列是http://www.baidu.com/img/bd_logo1.png,說明不存在SSRF漏洞

排除法二:
使用burpsuit等抓包工具來判斷是否不是SSRF,首先SSRF是由服務端發起的請求,因此在載入圖片的時候,是由服務端發起的,所有,在我們本地瀏覽器的請求中就不應該存在圖片的請求,在此例子中,如果重新整理當前頁面,有如下請求,則可以判斷不是SSRF。(前提是burpsuit截斷圖片的請求,預設是放行的)


用排除法的原因:
http://read.*******.com/image?imageUrl=http://www.baidu.com/img/bd_logo1.png
現在大多數修復SSRF的方法基本都是區分內外網來做限制(暫不考慮利用此問題來發起請求,攻擊其他網站,從而隱藏攻擊者IP,防止此問題就要做請求的地址的白名單了),如果我們請求
http://read.******.com/image?imageUrl=http://10.10.10.1/favicon.ico
而沒有內容顯示,我們是判斷這個點不存在SSRF漏洞,還是http://10.10.10.1/favicon.ico這個地址被過濾了,還是http://10.10.10.1/favicon.ico這個地址的圖片檔案不存在,如果我們事先不知道http://10.10.10.1/favicon.ico這個地址的檔案是否存在的時候是判斷不出來是哪個原因的,所以我們採用排除法。

二、


三 、驗證是否可以探測內網

經過簡單的排除驗證之後,我們就要驗證看看此URL是否可以來請求對應的內網地址。在此例子中,首先我們要獲取內網存在HTTP服務且存在favicon.ico檔案的地址,才能驗證是否是SSRF漏洞。
找存在HTTP服務的內網地址:
1、從漏洞平臺中的歷史漏洞尋找洩漏的存在web應用內網地址
2、通過二級域名暴力猜解工具模糊猜測內網地址

0X-5 SSRF漏洞練習

下載bWAPP靶場安裝包下載地址:https://sourceforge.net/projects/bwapp/files/bWAPP/ 直接匯入到 phpstudy中訪問/install目錄即可安裝

進入到SSRF練習模組, 這個模組是檔案包含加上SSRF漏洞利用,

可以看到,當language = 百度 的時候,直接就把百度的頁面給包含了進來,這個題的主要思路是讓你先檔案包含進而利用SSRF漏洞

詳細的檔案包含漏洞可以看這裡 https://www.freebuf.com/column/157466.html