# URL-based access control can be circumvented

Description:

This website has an unauthenticated admin panel at `/admin`, but a front-end system has been configured to block external access to that path. However, the back-end application is built on a framework that supports the `X-Original-URL` header.

To solve the lab, access the admin panel and delete the user `carlos`.

Proof of concept:

1. Analisa web target<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FEmPlGfRc59F0JB3ihEKQ%2Fimage%20(39).png?alt=media&#x26;token=ed803db1-479e-4488-8867-981cf6355e75" alt=""><figcaption></figcaption></figure>
2. Dari hasil analisa terdapat navigasi untuk mengarahkan kehalaman `Admin panel`, namun ketika diakses terdapat pesan `Access denied`<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FMauKXuRlmnyESwmEoSTS%2Fimage.png?alt=media&#x26;token=6fc43b4d-8b2d-4ca0-aee1-e3b88b8b1b9e" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FenmvfrfQzXlD8yHkcMTk%2Fimage.png?alt=media&#x26;token=37334232-3086-4f64-ae9d-cdae668c7206" alt=""><figcaption></figcaption></figure>
3. Seperti yang telah dijelaskan pada deskripsi lab, pada target ini support terhadap `X-Original-Url`. `X-Original-Url` merupakan header HTTP yang menunjukkan URL asli dari suatu sumber daya sebelum diubah atau dialihkan. Maka dari itu, dengan parameter header HTTP tersebut bisa dicoba untuk melakukan eksploitasi bypass access control. Caranya, tambahkan HTTP header `X-Original-Url` tersebut menggunakan burp suite repeater arahkan ke endpoint yang tidak dapat diakses yaitu endpoint `/admin`<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FCaT2vSjRY1G27cbzMIqc%2Fimage.png?alt=media&#x26;token=858c674a-7a57-4bdb-8eae-83f2dc0951f1" alt=""><figcaption></figcaption></figure>
4. Terlihat, isi dari halaman yang terdapat di endpoint `/admin` diantaranya adalah fitur untuk menghapus pengguna yang terdaftar yang diarahkan ke endpoint `/admin/delete?username=`
5. Untuk menyelesaikan tangtangan lab ini, diharuskan untuk menghapus user `carlos` . Maka dari itu untuk nilai `X-Original-Url` arahkan ke endpoint delete user yaitu `/admin/delete` dan untuk endpointnya ubah menjadi `/?username=carlos` karena user yang akan dihapus adalah user dengan username `carlos`<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2F3RhPdNLHp1w9sfcGRCOH%2Fimage.png?alt=media&#x26;token=1b4d2611-1821-4b5e-b25b-d72dc3acc45d" alt=""><figcaption></figcaption></figure>
6. Maka user `carlos` berhasil dihapus dan tantangan lab ini telah terselesaikan<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FZ6YBvhOU2OyY8hPEJyA2%2Fimage%20(38).png?alt=media&#x26;token=c4aee32d-1206-4f5a-9d0c-3c7818f19f92" alt=""><figcaption></figcaption></figure>

Thanks, Stay Ethical & Happy Hacking! 🍻
