IDOR
1. 發現點
未受保護的用戶文檔查詢:
這個 URL 允許根據
uid
獲取用戶的文檔連結。攻擊者可以透過遍歷
uid
來收集所有用戶的文檔資訊。
基於
contract
參數的下載端點:contract
參數可能是基於uid
的哈希(如md5(uid)
或UUID
)。攻擊者可以嘗試使用不同的哈希值來獲取其他用戶的文檔。
API 可遍歷的用戶資訊:
這個 API 允許透過
id
參數查詢其他用戶的個人資料。如果沒有適當的權限驗證,攻擊者可以遍歷 ID 來收集所有用戶的個資。
UUID 作為下載參數:
這可能是一個 UUID,代表某個文件的唯一標識符。
如果 UUID 可預測或可以暴力破解,攻擊者可以下載其他用戶的文件。
2. 測試Payload
(1) 遍歷 uid
獲取文件
uid
獲取文件解釋:
遍歷
uid
1 到 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
最后更新于
这有帮助吗?