# OAuth account hijacking via redirect\_uri

Description:

This lab uses an [OAuth](https://portswigger.net/web-security/oauth) service to allow users to log in with their social media account. A misconfiguration by the OAuth provider makes it possible for an attacker to steal authorization codes associated with other users' accounts.

To solve the lab, steal an authorization code associated with the admin user, then use it to access their account and delete the user `carlos`.

The admin user will open anything you send from the exploit server and they always have an active session with the OAuth service.

You can log in with your own social media account using the following credentials: `wiener:peter`.

Preparation:

* Install Cookie-Editor extension browser

Proof of concept:

1. Analisa web target menggunakan akun testing<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FEAIKztRmOR2AWlLaZihi%2Fimage%20(48).png?alt=media&#x26;token=3fa7edae-48eb-4032-bd46-65f4d45d618d" alt=""><figcaption></figcaption></figure>
2. Terlihat pada proses OAuth authentication menggunakan 2 endpoint yaitu endpoint `/auth` dan `/oauth-callback` . Yang dimana pada endpoint `/auth` terdapat parameter `redirect_uri` yang digunakan untuk mengarahkan pengguna ke endpoint `/oauth-callback` . Sedangkan endpoint `/oauth-callback` tersebut digunakan untuk menggenarate code melalui parameter `code` yang digunakan untuk membuat session<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FX4b0a8OZ3TYE7nz4FtfO%2Fimage.png?alt=media&#x26;token=0e907eea-7141-4755-bdfa-9cbacc913a3c" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2Fw0QWbtpzlS4HOpDXOJxa%2Fimage.png?alt=media&#x26;token=85502f41-7d55-4cfc-8df3-a63d4fe84aef" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FyBYzFjCRLdDXgRvhFXVs%2Fimage%20(57).png?alt=media&#x26;token=a9129e20-5a14-47b3-9645-6f9859f6792d" alt=""><figcaption></figcaption></figure>
3. Dari hasil analisa, didapati bahwa pada endpoint `/auth` nilai pada parameter `redirect_uri` dapat diubah. Sebagai contoh disini nilai pada parameter tersebut diubah menjadi domain attacker, dan berhasil diubah dengan ditandai pada response diarahkan ke domain target\ <br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FQqWpcSGcMDxCRCXMRK5T%2Fimage.png?alt=media&#x26;token=64b44eda-a770-4768-826c-debbf1b20819" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2F6oYhjGhvGZuuGAELKDQ5%2Fimage.png?alt=media&#x26;token=d1d7ed93-2122-4111-9b2a-da92ec74de41" alt=""><figcaption></figcaption></figure>
4. Setelah diketahui bahwa nilai parameter `redirect_uri`pada endpoint `/auth` dapat diubah. Buat script `iframe` untuk mengelabui korban agar korban mengakses script malicious tersebut yang diarahkan ke domain target untuk mengambil code pada endpoint `/oauth-callback` di domain penyerang. Script `iframe` yang digunakan terlihat seperti gambar dibawah ini<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FLTMY7OoiLow4sJvRFMuT%2Fimage.png?alt=media&#x26;token=af3b2fb0-79bd-4e34-b0fb-c8e151ca48a6" alt=""><figcaption></figcaption></figure>
5. Jika sudah kirim script tersebut agar diakses korban. Jika korban telah mengaksesnya, maka penyerang akan mendapatkan code pada endpoint `/oauth-callback` <br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2Fwypfg6xyFyhqwTs2qhyt%2Fimage.png?alt=media&#x26;token=4d0abf25-24af-406d-b33e-75bacd3ac825" alt=""><figcaption></figcaption></figure>
6. Hit endpoint `/oauth-callback` pada domain web target (domain asli) untuk mendapatkan session<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FV39UVG5LRuCbflCbCUEk%2Fimage.png?alt=media&#x26;token=d2ece263-13c4-4729-ac02-a22040d0fc2a" alt=""><figcaption></figcaption></figure>
7. Setelah mendapatkan session yang diambil dari response yang diberikan pada request sebelumnya, copy nilai session tersebut kemudian buka ekstension browser `Cookie-Editor` pada halaman target. Ubah nilai session dari akun testing, menjadi nilai session milik akun korban. Jika sudah, simpan perubahan tersebut<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FjRlaZuBPsW8lCcY5Scdl%2Fimage.png?alt=media&#x26;token=ff7db936-1170-4f6c-b701-3d12de9b8863" alt=""><figcaption></figcaption></figure>
8. Lakukan refresh pada halaman target, dan terlihat akun telah berubah menjadi akun admin ditandai dengan adanya halaman `Admin panel` <br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FtMw1HXX9O5uKvklUuEWq%2Fimage.png?alt=media&#x26;token=8aa1e6c4-c1fe-408d-937b-8180ca8a9aff" alt=""><figcaption></figcaption></figure>
9. Untuk menyelesaikan tantangan pada lab ini, lakukan penghapusan user `carlos`<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FjOrLlGyUXAOcjvjDASS1%2Fimage%20(56).png?alt=media&#x26;token=e20843b1-8608-4643-a4c0-452b901ef656" alt=""><figcaption></figcaption></figure>

Thanks, Stay Ethical & Happy Hacking! 🍻
