Published on

Access control

Authors
  • avatar
    Name
    Kim Phu
    Twitter

1.Unprotected admin functionality

  • Theo gợi ý, ta vào robots.txt thấ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 image
  • Đ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 image
  • Sau đó click vào /admin xem có gì nào, nhớ là Admin=true nhá
  • Rồi click vào xoá user carlos -> vẫn trong request Admin=true. image -> 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 History gửi gói POST /my-account/change-emailtới Repeater.
  • Theo gợi ý của bài, ta sẽ thêm "roleid":2 vào trong payload của change email. Sau đó send gói request đi. image
  • 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 image
  • Để xoá carlos mình sẽ phải chỉnh như sau image
  • Sau đó reload lại trang /admin image

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 session của wiener -> thay thế session của administrator hồi nãy.
  • Lần đầu sẽ bị hiện "Unauthorized" -> thay method POST thành POSTX -> 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:peter vào trong /my-account.
  • Tại response Get /my-account trong 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 id khô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 History tìm request GET /my-account?id=wiener. -> ném vào Repeater -> đổi id trong request thành administrator.
  • 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 file 2.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 + đổi username=carlos thành username=wiener.
  • Bấm send và done.

13.Referer-based access control

  • Không khác gì bài 12