僅用于學習測試,違法自負!
這里給大家分享幾點關于越權漏洞的發現方法,這類型漏洞通常發生在Web應用提供給用戶基于輸入的對象中,漏洞造成的影響將會致使攻擊者可以繞過授權限制,訪問到目標系統內其它不應該被訪問到的資源或數據。
IDOR簡述
簡單來說,假設目標網站有兩個用戶U1和U2,兩者賬戶中都存儲有個人文件,但只有自己才有權限查看訪問到這些文件。打個比方,也即U1只能訪問到自己的賬戶文件,不可訪問U2的賬戶文件。
U1訪問他自己賬戶中的文件blahBlah.pdf,具體鏈接如下:
who.com/file/23
上述鏈接中假設最后的數字23是與自己賬戶對應的一個參數,但好奇的U1用戶卻隨手修改了這個數字參數,把它改成了50,然后發起了訪問,鏈接如下:
who.com/file/50
但正好這一改動,U1在自己賬戶權限內竟然看到了U2賬戶的文件。
所以問題出在哪里呢?原因在于Web應用在基于用戶輸入的直接對象訪問機制中,缺少了對訪問對象的身份驗證措施。如何來發現IDOR漏洞?其實,IDOR就像XSS一樣存在廣泛,只要你清楚目標Web應用的設計架構或工作流,非常容易發現。這里我分享幾點IDOR漏洞的發現經驗,僅供參考。
在用戶注冊處發現IDOR漏洞
在網站注冊機制中發起數據包攔截,目標網站whocare.com調用了一個賬戶注冊API,Burp捕獲的賬戶注冊請求數據包如下:
POST /analytics/index.php/plus/registerportal?user_id=43657&key=344246b382b1d70c25ea14ed6f2760c6 HTTP/1.1
Content-Type: Application/x-www-form-urlencoded
Content-Length: 239
Host: api.whocare.com
Connection: close
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.4.1
email=test@whocare.com&password=as&username=&firstname=tvbb&lastname=gvcz&mobile=&country=test&city=hfhdggd&birthday_full=&gender=fknefjn
可以看到,在上述數據包的POST操作中包含了user_id參數,這里出于測試目的,我們把它修改為其它字符串隨機值,然后服務端響應回來的消息中有了這樣的提示:用戶已經存在!更為重要的是,服務端響應回來的信息中包含了與該注冊用戶相關的姓名、郵箱、聯系地址等等。響應數據包如下:
HTTP/1.1 200 OK
Date: Tue, 05 Mar 2019 12:53:30 GMT
Content-Type: text/html
Connection: close
Set-Cookie: __cfduid=dc4d54bb59b5c4a2c8501e3ed1cd5952b1551790409; expires=Wed, 04-Mar-20 12:53:29 GMT; path=/; domain=.whocare.com; HttpOnly
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 4b2c3badddb3ce21-LHR
Content-Length: 311
{"error":"exist","user":[{"id":"34666","username":"admin","firstname":"Pappu","lastname":"Rahul","email":"admin@whocare.com","mobile":null,"gender":"male","birthday":null,"country":"","city":null,"address":null,"address1":[Reducted],"postcode":[Reducted],"ip_address":[Reducted],"app_id":[Reducted]}]}
而且通過這樣,我甚至可以通過暴力枚舉用戶參數user_id,大量獲取目標網站用戶信息,當然其中也會包含管理員信息。
在郵件訂閱列表中發現IDOR漏洞
同樣,我們以whocare.com為目標網站,它為新用戶提供了一個訂閱選項,可以通過用戶郵件方式獲取一些網站的最新資訊。而在用戶設置面板中,存在一個訂閱取消按鈕,當點擊該按鈕之后,它會向注冊用戶發送一個取消訂閱的通知鏈接,URL如下:
who.com/deleteNewsletter/dGVzdGVybWFpbEBnbWFpbC5jb20=
仔細看可知道,它結尾包含了一個base64編碼的字符串,解密后dGVzdGVybWFpbEBnbWFpbC5jb20= : testermail@gmail.com,這里看似這種動作未對請求做身份校驗,所以,在此我們需要其他注冊用戶的綁定郵箱來進行測試,看看是否能對其他注冊用戶執行訂閱取消操作。
這里的一種攻擊可能性為:我們要以收集大量目標網站注冊用戶的郵箱,然后分別把它們進行base64編碼,形成字典,放到Burp的Intruder模塊中,進行自動化攻擊測試,這樣一來,就形成了對批量用戶的訂閱取消動作。這里可以綜合利用上述的注冊處IDOR漏洞來形成更大的威脅。
在意見反饋的郵件轉發處發現IDOR漏洞
比如還是在whocare.com中,如果用戶向目標網站提交意見反饋(Feedback)的數據包如下:
POST /Services/PostContactUsEmail HTTP/1.1
Host: www.whocare.com
Connection: close
Content-Length: 327
Accept: */*
Origin: https://www.whocare.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: https://www.whocare.com/feedback
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: [REDUCTED]
ContactUs_Name_Txt=hiname&ContactUs_Email_Txt=attacker@gmail.com&ContactUs_MessageType_Txt=%D8%A7%D8%B3%D8%AA%D9%81%D8%B3%D8%A7%D8%B1&ContactUs_Department_Txt=feedback@whocare.com%23%D8%A7%D9%84%D8%AF%D8%B9%D9%85+%D8%A7%D9%84%D9%81%D9%86%D9%8A&ContactUs_MessageBody_Txtthis+is+the+comment&ContactUs_Captcha_Txt=QBAQLU
仔細看其中提交的參數,它包含了以下幾個重要信息:
ContactUs_Department_Txt= 將會收到反饋意見的郵箱地址
ContactUs_Email_Txt= 當前用戶用來發送反饋意見的郵箱地址
ContactUs_MessageBody_Txt= 用戶發送的反饋意見信息
上面有兩個地方的郵箱地址我們可以進行修改,那就是:
ContactUs_Department_Txt=admin@whocare.com
ContactUs_Email_Txt=任何你想發送郵件的用戶郵箱地址,或者惡意一點,把它設為網站所有用戶郵箱地址。
這樣一來,所有網站用戶都會收到一封來自管理員郵箱的郵件,這可以用來作為釣魚攻擊的一個切入點。
IDOR的修復
1、請求或其它操作動作中實施合理的訪問權限控制措施;
2、對涉及用戶相關的參數使用強加密或隨機數生成,不要使用如id=3這種簡單直白的數字形式;
關注小白學嘿客,手把手教你學習嘿客攻防、Android/ target=_blank class=infotextkey>安卓滲透、網絡安全等相關知識。