IDOR
1. 發現點
未受保護的用戶文檔查詢:
http://example.com/documents.php?uid=1這個 URL 允許根據
uid獲取用戶的文檔連結。攻擊者可以透過遍歷
uid來收集所有用戶的文檔資訊。
基於
contract參數的下載端點:http://example.com/download.php?contract=40f5888b67c748df7efba008e7c2f9d2contract參數可能是基於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 獲取文件
uid 獲取文件解釋:
遍歷
uid1 到 100,檢查是否能獲取.pdf文件連結。使用
wget下載每個發現的文件。
(2) 嘗試哈希變體下載文件
解釋:
嘗試
contract參數是否為md5(uid)。嘗試
base64(uid)+md5來測試哈希變體。
(3) UUID 碰撞攻擊
如果 contract 或 uuid 是基於某個可推測的模式(如 md5(email)),可以暴力測試:
解釋:
透過
email_list.txt內的郵件地址生成md5(email)。測試是否可作為
uuid來下載文件。
3. 連鎖IDOR漏洞
🔗 第一步:利用 documents.php?uid=X 來獲取用戶數據
documents.php?uid=X 來獲取用戶數據攻擊者可以遍歷 uid 來獲取所有員工的個人資訊,例如:
返回:
✅ 我們現在知道:
uid可遍歷,攻擊者可以獲取所有用戶的UUID、email和document_link。
🔗 第二步:利用 contract=md5(uid) 來下載文件
contract=md5(uid) 來下載文件攻擊者現在擁有了一個員工的 uid,我們猜測文件下載 API 可能使用 md5(uid) 作為 contract:
攻擊者使用以下腳本遍歷 contract:
✅ 現在我們可以批量下載所有員工的文件。
🔗 第三步:利用 GET /user/profile?id=X 獲取高權限帳戶
GET /user/profile?id=X 獲取高權限帳戶攻擊者現在有了一份員工列表,他發現系統允許透過 id 來查詢個人資料:
回應:
✅ 我們成功找到了 admin 的 id!
4.Skills Assessment
最后更新于
这有帮助吗?