博客 / 詳情

返回

SSRF基礎----pikachu

什麼是 SSRF 漏洞

SSRF(Server-Side Request Forgery,服務器端請求偽造) 是一種 Web 安全漏洞。
攻擊者可以誘導服務器去訪問攻擊者指定的地址,而不是由服務器正常訪問預期的資源。

簡單理解:

攻擊者 → 控制服務器去請求某個URL → 服務器幫攻擊者訪問內部或敏感資源

因為這個請求是服務器發出的,所以它可能訪問到:

  • 內網服務
  • 本機服務(127.0.0.1)
  • 雲平台元數據接口
  • 未暴露到公網的管理接口

SSRF 的基本原理

很多網站有這樣的功能:

  • 導入圖片 URL
  • 抓取網頁標題
  • 下載遠程文件
  • webhook 回調
  • URL 預覽

例如:

POST /fetch
url=http://example.com/image.jpg

服務器代碼可能是:

requests.get(url)

如果程序沒有嚴格校驗 URL,攻擊者就可以改成:

http://127.0.0.1:8080/admin

服務器就會請求:

127.0.0.1:8080/admin

這就是 SSRF。

一個簡單示例

假設網站有一個 圖片抓取功能

https://example.com/image?url=

正常使用:

https://example.com/image?url=https://site.com/a.jpg

服務器會下載:

https://site.com/a.jpg

攻擊者可以改成:

https://example.com/image?url=http://127.0.0.1:3306

服務器就會訪問:

127.0.0.1:3306

這樣就可以:

  • 探測內網
  • 訪問管理接口
  • 讀取敏感信息

SSRF 常見攻擊目標

1 本機服務

http://127.0.0.1
http://localhost

可能訪問:

  • Redis
  • MySQL
  • Docker API
  • 內部管理後台

2 內網地址

例如:

http://192.168.0.1
http://10.0.0.5
http://172.16.x.x

可以掃描企業內網。

3 雲平台 metadata(最危險)

在雲服務器中:

http://169.254.169.254

例如 AWS:

http://169.254.169.254/latest/meta-data/

可能拿到:

  • access key
  • instance 信息
  • IAM 權限

SSRF 攻擊流程

一般步驟:

1️⃣ 找到 可以控制 URL 的地方

例如:

image_url=
callback=
redirect=
file=
url=

2️⃣ 測試是否 SSRF

嘗試:

http://127.0.0.1

3️⃣ 掃描端口

http://127.0.0.1:80
http://127.0.0.1:22
http://127.0.0.1:6379

4️⃣ 訪問敏感接口

例如:

http://127.0.0.1/admin

5️⃣ 雲環境攻擊

http://169.254.169.254

SSRF 常見繞過

很多網站會過濾:

127.0.0.1
localhost

攻擊者可能繞過:

IP 編碼

http://2130706433

其實是:

127.0.0.1

IPv6

http://[::1]

DNS rebinding

使用域名:

http://attacker.com

DNS 解析到:

127.0.0.1

SSRF 防禦

開發者應該:

1 白名單

只允許訪問指定域名

例如:

example.com
cdn.example.com

2 禁止內網地址

過濾:

127.0.0.1
10.x.x.x
192.168.x.x
172.16.x.x
169.254.169.254

3 DNS 解析後再次校驗

防止 DNS rebinding。

4 網絡層限制

服務器防火牆禁止訪問:

內網
metadata
本機端口

靶場(pikachu--SSRF(file_get_content))

  • 點擊反正都讀了,那就在來一首吧,可以看到瀏覽器的url如下:

    http://192.168.103.130:8082/pikachu/vul/ssrf/ssrf_fgc.php?file=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info2.php 
    
  • 讀取系統文件:http://192.168.103.130:8082/pikachu/vul/ssrf/ssrf_fgc.php?file=file:///etc/passwd
    顯示如下:
    1

  • 訪問網站:http://192.168.103.130:8082/pikachu/vul/ssrf/ssrf_fgc.php?file=https://www.baidu.com
    顯示如下:
    2


硬件及軟件説明:

I.硬件(電腦)

Apple Mac mini M4 (24G)

II.軟件(vmware虛擬機)

  • ubuntu作為靶機
    • IP: 192.168.103.130
    • arm64
    • Ubuntu 24.04.3 LTS
  • kali作為攻擊機
    • IP: 192.168.103.128
    • arm64
    • Kali GNU/Linux Rolling
    • 瀏覽器:Firefox

pikachu靶場安裝

ubuntu中安裝docker靶場:hominsu/pikachu:latest

# 拉取docker鏡像
sudo docker pull hominsu/pikachu

# 為鏡像創建容器,並運行
sudo docker run -dt --name pikachu -p 8082:80 hominsu/pikachu # pikachu 端口設為 8082

📌 不一定對,如有錯誤,歡迎指出🙂。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.