# Username enumeration via response timing

Description:

This lab is vulnerable to username enumeration using its response times. To solve the lab, enumerate a valid username, brute-force this user's password, then access their account page.

* Your credentials: `wiener:peter`
* [Candidate usernames](https://portswigger.net/web-security/authentication/auth-lab-usernames)
* [Candidate passwords](https://portswigger.net/web-security/authentication/auth-lab-passwords)

Proof of concept:

1. Analisa web target
2. Lakukan brute force pada halaman login menggunakan payload credentials (username & password) yang telah disediakan. Brute force dilakukan dapat menggunakan burp suite intruder<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2Fzp5i9GbUmUtB4klN07Vs%2Fimage.png?alt=media&#x26;token=dfc89305-b63b-4278-bf91-075ba5af16c0" alt=""><figcaption></figcaption></figure>
3. Terlihat pada gambar diatas, ternyata terdapat blocking brute force pada form login web target dengan ditandai munculnya pesan `You have made too many incorrect login attempts. Please try again in 30 minute(s).`
4. Dari response yang diberikan, artinya kita tidak dapat melakukan brute force dengan cara yang basic. Kita harus melakukan bypass rate limit yang diterapkan pada form login web target tersebut. Salah satu yang dapat dilakukan untuk melakukan pencegahan serangan brute force adalah dengan cara melakukan blocking terhadap alamat IP yang melakukan brute force atau request secara terus menerus diwaktu berdekatan. Jika teknik tersebut benar diterapkan pada form login target, untuk melakukan bypass teknik rate limiting tersebut salah satu caranya adalah dapat menambahkan header HTTP request `X-Forwarded-For` dan menginputkan nilai IP secara dinamis (berubah-ubah) agar sistem target membacanya, request yang dikirimkan berasal dari alamat IP-IP yang berbeda<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FNlBFtqNxbFyNO9rSXyKi%2Fimage.png?alt=media&#x26;token=c52fb2ca-9bc9-49a2-a590-d160c0eab8ed" alt=""><figcaption></figcaption></figure>
5. Terlihat pada gambar diatas, ketika mencoba login menggunakan akun testing walau kombinasi credentialsnya valid tetap saja request yang dikirimkan ditolak oleh sistem target
6. Maka coba untuk melakukan bypass dengan menambahkan `X-Forwarded-For` pada request Header HTTP seperti yang telah dijelaskan sebelumnya<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FxoQMZcrm5hP0FiRHsEYy%2Fimage.png?alt=media&#x26;token=0ed946da-4b03-4ca0-92ae-6c3cf4ed67c3" alt=""><figcaption></figcaption></figure>
7. Terlihat pada gambar diatas, berhasil login. Artinya dengan menambahkan `X-Forwarded-For` pada header request dapat melakukan bypass IP blocking yang diterapkan pada form login web target. Maka selanjutnya adalah melakukan pencarian username target dengan cara melakukan guessing menggunakan payload username yang telah disediakan. Pada saat melakukan brute force menggunakan burp suite intruder, pastikan attack type yang digunakan adalah `Pitchfork attack` dikarenakan akan menggunakan 2 payload. Payload yang pertama berisi payload numeric untuk mengubah nilai IP setiap requestnya pada header `X-Forwarded-For` dan untuk payload 2 berisi payload username. Juga, pastikan nilai pada parameter payload memiliki jumlah yang banyak agar perbedaan response time yang diberikan server dapat terlihat<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FSL2Twujmp6eaHgcBu9vS%2Fimage.png?alt=media&#x26;token=598f6065-cdda-4d6d-91e2-ab8588c65dbd" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2Fz4kkjlsj4DvWWSqsTw0D%2Fimage.png?alt=media&#x26;token=a758d46a-426e-4735-b097-edf03969dc46" alt=""><figcaption></figcaption></figure>
8. Dari hasil brute force atau guessing username pada tahapan sebelumnya, didapati 2 username yang memiliki response recieved yang tinggi yaitu username `wiener` dan juga `as` . Namun karena `wiener` merupakan username akun testing, maka username yang akan dieksploitasi adalah akun dengan username `as` . Setelah ditemukan username yang valid adalah `as` , selanjutnya adalah melakukan pencarian password yang valid untuk akun as dengan cara yang sama seperti pada saat melakukan brute force username<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FnNRyuS8aqyVfsNSO0DKW%2Fimage.png?alt=media&#x26;token=7a9057ca-ec16-4983-99b9-df0662a7d3dd" alt=""><figcaption></figcaption></figure>
9. Didapati password yang valid ditandai dengan dikembalikannnya kode HTTP `320` . Untuk dapat menyelesaikan tangtangan pada lab ini. Login menggunakan kombinasi credentials yang sebelumnya telah ditemukan dan akses halaman akun. Tidak lupa, karena masih dilakukan blocking pada IP asli, bypass blocking tersebut menggunakan `X-Forwarded-For` kembali<br>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FCFdBs0smf8hYlcMr1dpB%2Fimage.png?alt=media&#x26;token=8c7965ce-4d76-48d7-bd42-9e136387ef54" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://261650435-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdAiS2nxqUmGSg5rZoOOl%2Fuploads%2FNtAIFuiTispjA6gwoTzo%2Fimage.png?alt=media&#x26;token=1342d74d-d4bd-41cf-adba-d703b0d1146a" alt=""><figcaption></figcaption></figure>

Thanks, Stay Ethical & Happy Hacking! 🍻
