SSRF漏洞是如何產生的?
SSRF(Server-Side Request Forgery:服務器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF是要目標網站的內部系統。(因為他是從內部系統訪問的,所有可以通過它攻擊外網無法訪問的內部系統,也就是把目標網站當中間人)
SSRF 形成的原因大都是由於服務端提供了從其他服務器應用獲取數據的功能,且沒有對目標地址做過濾與限制。比如從指定URL地址獲取網頁文本內容,加載指定地址的圖片,文檔,等等。
上面的話說的有點抽象,然后說一下我的理解(可能有理解錯誤的地方,希望大佬能留言告知一下)
首先,我們要對目標網站的架構了解,腦子了要有一個架構圖。比如 : A網站,是一個所有人都可以訪問的外網網站,B網站是一個他們內部的OA網站。
所以,我們普通用戶只可以訪問a網站,不能訪問b網站。但是我們可以同過a網站做中間人,訪問b網站,從而達到攻擊b網站需求。
正常用戶訪問網站的流程是:
輸入A網站URL --> 發送請求 --> A服務器接受請求(沒有過濾),並處理 -->返回用戶響應
【那網站有個請求是www.baidu,com/xxx.php?image=URL】
那么產生SSRF漏洞的環節在哪里呢?安全的網站應接收請求后,檢測請求的合法性
產生的原因:服務器端的驗證並沒有對其請求獲取圖片的參數(image=)做出嚴格的過濾以及限制,導致A網站可以從其他服務器的獲取數據
例如:
www.baidu.com/xxx.php?image=www.abc.com/1.jpg
如果我們將www.abd.com/1.jpg換為與該服務器相連的內網服務器地址會產生什么效果呢?
如果存在該內網地址就會返回1xx 2xx 之類的狀態碼,不存在就會其他的狀態碼
終極簡析: SSRF漏洞就是通過篡改獲取資源的請求發送給服務器,但是服務器並沒有檢測這個請求是否合法的,然后服務器以他的身份來訪問其他服務器的資源。
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)在頁面源碼中查找訪問的資源地址 ,如果該資源地址類型為 www.baidu.com/xxx.php?image=(地址)的就可能存在SSRF漏洞