Web安全——服务器端请求伪造(SSRF)
SSRF
概述
SSRF(Server-Side Request Forgery:服務(wù)器端請(qǐng)求偽造) 是一種由攻擊者構(gòu)造形成由服務(wù)端發(fā)起請(qǐng)求的一個(gè)安全漏洞。一般情況下,SSRF攻擊的目標(biāo)是從外網(wǎng)無(wú)法訪問(wèn)的內(nèi)部系統(tǒng)。通常發(fā)生在圖片轉(zhuǎn)儲(chǔ),文本加載等地方。
原理
由于服務(wù)端提供了從其他服務(wù)器應(yīng)用獲取數(shù)據(jù)的功能且沒(méi)有對(duì)目標(biāo)地址做過(guò)濾與限制。比如從指定URL地址獲取網(wǎng)頁(yè)文本內(nèi)容,加載指定地址的圖片,下載等等。利用的是服務(wù)端的請(qǐng)求偽造。SSRF是利用存在缺陷的web應(yīng)用作為代理攻擊遠(yuǎn)程和本地的服務(wù)器。
漏洞場(chǎng)景
分享:通過(guò)URL地址分享網(wǎng)頁(yè)內(nèi)容
轉(zhuǎn)碼服務(wù)
在線翻譯
圖片加載與下載:通過(guò)URL地址加載或下載圖片
圖片、文章收藏功能
未公開(kāi)的api實(shí)現(xiàn)以及其他調(diào)用URL的功能
從URL關(guān)鍵字中尋找
漏洞利用
示例
@
對(duì)于一個(gè) url 的訪問(wèn)實(shí)際上是以 @符后為準(zhǔn)的,比如說(shuō) xxxx.com@10.10.10.10,則實(shí)際上訪問(wèn)的是 10.10.10.10 這個(gè)地址。
http://abc@127.0.0.1同
http://127.0.0.1添加端口號(hào)
http://127.0.0.1:8080短地址
http://dwz.cn/11SMa指向任意ip的域名:xip.io
例如 10.10.10.10.xip.io 會(huì)被解析成 10.10.10.10,詳細(xì)介紹可以通過(guò) xip.io 這個(gè)網(wǎng)站來(lái)查看。
<pre> <strong> 10.0.0.1</strong>.xip.io resolves to 10.0.0.1www.<strong>10.0.0.1</strong>.xip.io resolves to 10.0.0.1mysite.<strong>10.0.0.1</strong>.xip.io resolves to 10.0.0.1foo.bar.<strong>10.0.0.1</strong>.xip.io resolves to 10.0.0.1ip地址轉(zhuǎn)換成進(jìn)制來(lái)訪問(wèn)
將 ip 轉(zhuǎn)換為八進(jìn)制十進(jìn)制十六進(jìn)制這種,同樣也可以正常訪問(wèn)
例如將 10.10.10.10 轉(zhuǎn)換為十進(jìn)制是 168430090,在瀏覽器訪問(wèn) http 😕/168430090 即訪問(wèn) 10.10.10.10
115.239.210.26 = 16373751032代碼審計(jì)
<?phpif (isset($_GET['url'])) {$content = file_get_contents($_GET['url']); #echo $_GET['url'];$filename = ''.rand().'img-tasfa.jpg';$fopen = fopen($filename, 'wb ');#echo $filename;file_put_contents($filename, $content);#echo $_GET['url'].""; $img = "<img src=\"".$filename."\"/>";} echo $img; ?>規(guī)避
示例
public static boolean ssrfCheck(String url) {try {URL urlObj = new URL(url);// 協(xié)議校驗(yàn), 防止偽協(xié)議問(wèn)題if(!urlObj.getProtocol().equals("https") && !urlObj.getProtocol().equals("http")) {return false;}// Host 校驗(yàn)String domain = urlObj.getHost();InetAddress host = InetAddress.getByName(domain);if(host.isSiteLocalAddress() || host.isLoopbackAddress()) {return false;}return true;} catch (MalformedURLException e) {return false;} catch (UnknownHostException e) {return false;} }參考文章
- SSRF 漏洞記錄
- SSRF詳解
- SSRF原理及攻防解析(簡(jiǎn)單明了)
總結(jié)
以上是生活随笔為你收集整理的Web安全——服务器端请求伪造(SSRF)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Vue——整合Katex
- 下一篇: Dubbo——Dubbo协议整合Jack