---
# System prepended metadata

title: Writeup Access control lab

---

# lab 1

![image](https://hackmd.io/_uploads/H1YpYiCKp.png)
![image](https://hackmd.io/_uploads/ry3lcoRYT.png)

Thử truy cập vào /admin, ko đc :D 

![image](https://hackmd.io/_uploads/SJIDno0Ka.png)

Chạy với wordlist trên mạng :D Cũng không được. Tìm loanh quanh source cũng không có j. Thử truy cập /robots.txt

![image](https://hackmd.io/_uploads/BycypsCta.png)

![image](https://hackmd.io/_uploads/S1dfasRKp.png)

# lab 2

![image](https://hackmd.io/_uploads/BJhB6sAK6.png)

Unpredictable => chạy với wordlist hoặc robots.txt khả năng không khả thi. Có thể sẽ disclosed ở đâu đó. Tìm loanh quanh trong source trang, js file, html, ảnh,....

![image](https://hackmd.io/_uploads/H19c0sAta.png)

Khi load trang, có 2 request được gọi. Tìm trong kết quả trả về của các request chữ "admin" => kết quả

![image](https://hackmd.io/_uploads/S108k2RYp.png)

# lab 3

![image](https://hackmd.io/_uploads/SkYqyh0Y6.png)

![image](https://hackmd.io/_uploads/B1kTJnRFa.png)

Đăng nhập với tài khoản lab cung cấp

![image](https://hackmd.io/_uploads/rJdyl3RtT.png)
Kiểm tra cookie của trang, có 1 cookie là Admin có giá trị là false. Thử sửa lại thành true rồi load lại trang.

![image](https://hackmd.io/_uploads/BJYqlnCYp.png)

![image](https://hackmd.io/_uploads/HJrognAFp.png)

# lab 4

![image](https://hackmd.io/_uploads/SJUCghAF6.png)

![image](https://hackmd.io/_uploads/r1oEWh0KT.png)

Sau khi đã đăng nhập. Ở mô tả có nói phải có roleid là 2 thì mới có thể truy cập /admin. Mình cũng đã thử /admin?roleid=2, tuy nhiên ko đc. Mình nhận ra là phải tìm cách thay đổi roleid của user hiện tại thành 2. Chợt nhận ra có chức năng thay đổi email có thể thay đổi thông tin người dùng. Xem thử request khi update email thì mình thấy như sau.

```request!
POST /my-account/change-email HTTP/2
Host: 0add00a60489ab7d8130801d00f1006f.web-security-academy.net
Cookie: session=aeJHLG7YithpUmQY8zJZl1XLUQMWxuXp
Content-Length: 29
Sec-Ch-Ua: "Not_A Brand";v="8", "Chromium";v="120"
Sec-Ch-Ua-Platform: "macOS"
Sec-Ch-Ua-Mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.199 Safari/537.36
Content-Type: text/plain;charset=UTF-8
Accept: */*
Origin: https://0add00a60489ab7d8130801d00f1006f.web-security-academy.net
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://0add00a60489ab7d8130801d00f1006f.web-security-academy.net/my-account?id=wiener
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=1, i

{"email":"2@normal-user.net"}
```

Thử đổi thành "roleid":"2"

![image](https://hackmd.io/_uploads/S1Qo7nAYp.png)

Thử đổi URI thành /my-account/change-roleid

![image](https://hackmd.io/_uploads/S1ZHVhAt6.png)

umm nhận ra chỗ email bị lỗi missing required param, nên thử thêm email vô trước, ngoài ra thì với request thay đổi email bth, respone trả về sẽ như sau:
![image](https://hackmd.io/_uploads/ByAgSnRKp.png)

![image](https://hackmd.io/_uploads/rJ2-r30tT.png)
thay đổi roleid

![image](https://hackmd.io/_uploads/H114S30F6.png)

# lab 5

![image](https://hackmd.io/_uploads/SkRcc2AYa.png)

![image](https://hackmd.io/_uploads/SkYA530FT.png)
Sau khi đăng nhập thì URI có dạng `/my-account?id=wiener` và hiển thị thông tin của user wiener. Thử thay id=carlos thì lấy được apikey

![image](https://hackmd.io/_uploads/rywSi2CFp.png)

# lab 6

![image](https://hackmd.io/_uploads/ryTPo2AYa.png)

Xem qua một vòng thì chưa thấy chỗ nào có thể leak được GUID của user carlos, mình bấm ra trang chủ vô xem mấy blog. Có một bài viết được user carlos đăng

![image](https://hackmd.io/_uploads/SJHTLTAKa.png)

Bấm vào user carlos thì vô một trang chứa các blog của user đó. Leak được GUID.

![image](https://hackmd.io/_uploads/Sy3fwT0Fp.png)

# lab 7

![image](https://hackmd.io/_uploads/BJiEOTCFT.png)

Sau khi đăng nhập bằng user wiener, uri có dạng `/my-account?id=wiener`, thử đổi thành carlos thì ứng dụng đăng xuất ra ngoài. Tuy nhiên xem trong HTTP history thì đã lấy được APIkey thành công

![Screenshot 2024-01-25 at 00.46.58](https://hackmd.io/_uploads/H1uKT6CKp.png)

# lab 8
![Screenshot 2024-01-25 at 01.09.25](https://hackmd.io/_uploads/BJJuzARtT.png)
sau khi đăng nhập đổi id thành carlos, leak được mật khẩu qua tính năng update password.
![image](https://hackmd.io/_uploads/rJWDzACKp.png)

quên mất là cần leak pass của admin chứ ko phải carlos

![Screenshot 2024-01-25 at 01.13.20](https://hackmd.io/_uploads/Hy9Pm00F6.png)


# lab 9

![image](https://hackmd.io/_uploads/H1ErvCAt6.png)

Tính năng live chat

![image](https://hackmd.io/_uploads/rk0R_A0K6.png)

Khi nhấn View transcript thì Web sẽ tải xuống một file có dạng id.txt, sau nhiều lần thử; nhận thấy id này tăng dần, và tăng bắt đầu từ 2.
=> Thử Id=1 xem sao.

![Screenshot 2024-01-25 at 01.39.13](https://hackmd.io/_uploads/BkfOF0RY6.png)

problem sovled!

# lab 10

![image](https://hackmd.io/_uploads/HySH88156.png)

![image](https://hackmd.io/_uploads/r1EILIJca.png)

Trang có chức năng admin panel, tuy nhiên truy cập thì bị chặn.

![image](https://hackmd.io/_uploads/H1TvLIJqp.png)

Thử dùng header `X-Original-URL` để ghi đè URL.

![image](https://hackmd.io/_uploads/Sk4f9KJqT.png)

làm tương tự để delete user, ghi đè bằng URL `/admin/delete`. Tại URL gốc ra để `?username=carlos`

![image](https://hackmd.io/_uploads/BylSpX9k5p.png)


![image](https://hackmd.io/_uploads/B1n37ckq6.png)

# lab 11

![image](https://hackmd.io/_uploads/SkPQNckca.png)

Sau khi đăng nhập vào tài khoản admin, sử dụng admin panel để nâng cấp user carlos

![image](https://hackmd.io/_uploads/r16v5j1c6.png)

Request có dạng như sau
![image](https://hackmd.io/_uploads/Hk3Kcsy9T.png)

Bây h đăng nhập bằng weiner và tạo một request tương tự với session của weiner

![image](https://hackmd.io/_uploads/H1zZjoJca.png)

"Unauthorized"

Thử thay đổi method từ POST sang các method khác

![image](https://hackmd.io/_uploads/Bkzujiy5T.png)
GET báo thiếu param, thử thêm `?username=wiener`

![image](https://hackmd.io/_uploads/S1gsisyqp.png)
có vẻ như đã thành công. Nma không check lại thì chưa vào được adminpanel. Chắc cần thêm param action.

![image](https://hackmd.io/_uploads/Skul2oyqT.png)

![image](https://hackmd.io/_uploads/HysZ2i196.png)

:D mình tự hỏi, nếu không có admin liệu có thể biết được ứng dụng nâng cấp user như thế nào không. Mà nếu có admin rồi thì dùng luôn admin để nâng cấp cũng được mà nhỉ? :D

# lab 12

![image](https://hackmd.io/_uploads/rJVi3syqp.png)

Đăng nhập vào admin, nâng cấp user carlos lên admin. Có một hộp thoại xác nhận được hỏi trước khi thực hiện request upgrade thực sự

![image](https://hackmd.io/_uploads/SJCmzAkqp.png)

![image](https://hackmd.io/_uploads/rkREMCJc6.png)

Đăng nhập vào user wiener tạo request tương tự với session của wiener

![image](https://hackmd.io/_uploads/rk6JQCJ5a.png)

![image](https://hackmd.io/_uploads/rkClQ0Jca.png)

# lab 13

![image](https://hackmd.io/_uploads/BJXUXRy9a.png)
Sau khi đăng nhập vào admin, request upgrade user có dạng như sau.

![image](https://hackmd.io/_uploads/HyKlPRy5a.png)

Thử tạo request tương tự với user wiener.

![image](https://hackmd.io/_uploads/Hy8gdCy5T.png)

![image](https://hackmd.io/_uploads/rJLW_C1q6.png)

Khai thác thành công vì mình tạo request y hệt với khi admin thực hiện. Chỉ khác sessionid. Giữ nguyên referer. Nếu sửa referer, khai thác thất bại.

![image](https://hackmd.io/_uploads/r1aUdCyqa.png)
Unauthorized