- Published on
Access control
- Authors
- Name
- Kim Phu
1.Unprotected admin functionality
- Theo gợi ý, ta vào
robots.txtthấy códisallơw: /administrator-panel-> truy cập vào đây rồi xoá user carlos đi là xong
2.Unprotected admin functionality with unpredictable URL
- Bài này khi truy cập thì
Crl+Uđọc sourcecode
- Đoạn code này sẽ kiểm tra nếu người dùng là admin thì sẽ tạo 1 tag mới ở menu header có
href=/admin-l9dcq4
3.User role controlled by request parameter
- Trong bài này, sau khi đăng nhập, ta thấy ở cookie luôn có một parameter
Admin=false. - Bây giờ bật interception on và bắt đầu quá trình edit request (lưu ý: phải để interception on vì parameter này được xác minh liên tục)
- Bây giờ, trong giao diện web đã xuất hiện
Admin Panel
- Sau đó click vào
/adminxem có gì nào, nhớ làAdmin=truenhá - Rồi click vào xoá user carlos -> vẫn trong request
Admin=true.
-> done
4.User role can be modified in user profile
- Trong bài này, sau khi đăng nhập, ta sẽ vào update email. Vào
HTTP Historygửi góiPOST /my-account/change-emailtới Repeater. - Theo gợi ý của bài, ta sẽ thêm
"roleid":2vào trong payload của change email. Sau đó send gói request đi.
- Lúc này ở giao diện web đã hiện lên Admin Panel bây giờ chỉ cần vào đây và xoá carlos đi cho bỏ ghét :>
5.URL-based access control can be circumvented
- Thử truy cập vào Admin Panel ->
access denied - Theo gợi ý, bài này sẽ dùng
X-Original-URL:. Bây giờ, ta sẽ trỏ thẻGET /admin->GET /và đểX-Original-URL: /admin-> Send
- Để xoá carlos mình sẽ phải chỉnh như sau

- Sau đó reload lại trang
/admin
6.Method-based access control can be circumvented
- Bài này sẽ update quyền của wiener thông qua request của admin sau khi update quyền của carlos.
- Đầu tiên,ném request admin up quyền cho carlos qua Repeater, sau đấy logout ra -> đăng nhập bằng tài khoản wiener.
- Copy
sessioncủa wiener -> thay thế session của administrator hồi nãy. - Lần đầu sẽ bị hiện "Unauthorized" -> thay method
POSTthànhPOSTX->missing parameter username. - Change request method và đổi tên username thành wiener là done. 🙂
7.User ID controlled by request parameter
- Bài này sau khi login tài khoản
wiener:petervào trong/my-account. - Tại response
Get /my-accounttrong HTTP history ta thấy cóhref=/my-account?id=wiener. - Thử ném sang Repeater -> thay id thành
carlos-> hiện ra API của carlos.
8.User ID controlled by request parameter, with unpredictable user IDs
- Tương tự bài 7, chỉ là ta thấy
idkhông đưojc đặt theo username nữa mà là 1 chuỗi string. - Vào blog kiếm 1 bài đọc thấy được viết bởi carlos , sau đó mình đã copy id của carlos và dán vào
GET /my-account?id=trong request được ném qua repeater tương tự bài trước. -> done
9.User ID controlled by request parameter with data leakage in redirect
- Không khác gì bài 7
10.User ID controlled by request parameter with password disclosure
- Login với account
wiener:peter. Click luôn vào update password. - Vào
HTTP Historytìm requestGET /my-account?id=wiener. -> ném vào Repeater -> đổi id trong request thànhadministrator. - Trong respone trả về, ta thấy có thẻ
<input class="password" value=...>(Mình không nhớ nhưng mà nó là mật khẩu của administrator 🥲) - Login với tài khoản admin -> vào Admin Panel
11.Insecure direct object references
- Bài này mình vào live chat -> gõ đại gì đấy ->
View transcript-> thấy file2.txtđược tải về. - Vào HTTP History, kiếm
GET /download-transcript/2.txt-> ném qua repeater rồi thay 2->1. - Sau khi tải về đọc lại nội dung của đoạn chat là có mật khẩu trong đấy.
12.Multi-step process with no access control on one step
- Đầu tiên login bằng tài khoản admin -> upgrade quyền cho carlos -> logout ra.
- Ném cái request này ở HTTP History sang Repeater.
- Bây giờ login vào tài khoản
wiener:peter-> vào HTTP History lấy session của wiener ra -> ném qua request ở Repeater hồi nãy + đổiusername=carlosthànhusername=wiener. - Bấm send và done.
13.Referer-based access control
- Không khác gì bài 12