SSRF漏洞是如何產生的?
SSRF(Server-Side Request Forgery:服務器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。(正是因為它是由服務端發起的,所以它能夠請求到與它相連而與外網隔離的內部系統)
SSRF 形成的原因大都是由於服務端提供了從其他服務器應用獲取數據的功能且沒有對目標地址做過濾與限制。比如從指定URL地址獲取網頁文本內容,加載指定地址的圖片,下載等等。
可能上面的語言對於一些小白白來說難以理解,下面是一些我的理解:
html,php,asp,jsp 具有這些文件后綴的文件通常儲存在web服務器(網站服務器)中,而且web服務器都具有獨立ip
網站訪問大致步驟:
用戶在地址欄輸入網址 --》 向目標網站發送請求 --》 目標網站接受請求並在服務器端驗證請求是否合法,然后返回用戶所需要的頁面 --》用戶接收頁面並在瀏覽器中顯示
【此處的請求默認為www.xxx.com/a.php?image=(地址)】
那么產生SSRF漏洞的環節在哪里呢?目標網站接受請求后在服務器端驗證請求是否合法
產生的原因:服務器端的驗證並沒有對其請求獲取圖片的參數(image=)做出嚴格的過濾以及限制,導致可以從其他服務器的獲取一定量的數據
例如:
www.xxx.com/a.php?image=http://www.abc.com/1.jpg
如果我們將http://www.abc.com/1.jpg換為與該服務器相連的內網服務器地址會產生什么效果呢?
如果存在該內網地址就會返回1xx 2xx 之類的狀態碼,不存在就會其他的狀態碼
終極簡析: SSRF漏洞就是通過篡改獲取資源的請求發送給服務器,但是服務器並沒有發現在這個請求是合法的,然后服務器以他的身份來訪問其他服務器的資源。
SSRF漏洞的尋找(漏洞常見出沒位置):
1)分享:通過URL地址分享網頁內容
2)轉碼服務
3)在線翻譯
4)圖片加載與下載:通過URL地址加載或下載圖片
5)圖片、文章收藏功能
6)未公開的api實現以及其他調用URL的功能
7)從URL關鍵字中尋找
share
wap
url
link
src
source
target
u
3g
display
sourceURl
imageURL
domain
SSRF漏洞的驗證方法:
1)因為SSRF漏洞是構造服務器發送請求的安全漏洞,所以我們就可以通過抓包分析發送的請求是否是由服務器的發送的來判斷是否存在SSRF漏洞
2)在頁面源碼中查找訪問的資源地址 ,如果該資源地址類型為 http://www.xxx.com/a.php?image=(地址)的就可能存在SSRF漏洞
最后附帶一張SSRF漏洞導圖
部分內容摘自其他網站