Portswigger
  • Portswigger
  • Server-Side Request Forgery
    • Server-Side Request Forgery (SSRF)
  • SSRF with filter bypass via open redirection vulnerability
  • Blind SSRF with out-of-band detection
  • Cross-Site Scripting
    • Cross-Site Scripting (XSS)
  • Reflected XSS into a JS string with angle brackets and double&single quotes HTML-encoded escape
  • XSS into a template literal w/ angle brackets, single, double quotes, backslash & backticks Escaped
  • Authentication
    • Authentication
  • Username enumeration via subtly different responses
  • 2FA broken logic
  • Username enumeration via response timing
  • Username enumeration via account lock
  • Password reset poisoning via middleware
  • Path Traversal
    • Path Traversal
  • File path traversal, traversal sequences stripped with superfluous URL-decode
  • File path traversal, traversal sequences blocked with absolute path bypass
  • Business Logic Vulnerabilities
    • Business Logic Vulnerabilities
  • Insufficient workflow validation
  • Inconsistent handling of exceptional input
  • Server-Side Template Injection
    • Server-Side Template Injection
  • Basic server-side template injection
  • Basic server-side template injection (code context)
  • SQL Injection
    • SQL Injection
    • Blind SQL injection with conditional responses
  • SQL injection UNION attack, retrieving data from other tables
  • SQL injection attack, listing the database contents on non-Oracle databases
  • API Testing
    • API Testing
  • Exploiting an API endpoint using documentation
  • Exploiting a mass assignment vulnerability
  • Finding and exploiting an unused API endpoint
  • JWT ATTACK
    • JWT Attack
    • JWT authentication bypass via unverified signature
  • JWT authentication bypass via jku header injection
  • JWT authentication bypass via flawed signature verification
  • HTTP HOST HEADER ATTACKS
    • HTTP Host header attacks
  • Basic password reset poisoning
  • Host header authentication bypass
  • No SQL Injection
    • NoSQL Injection
  • Detecting NoSQL injection
  • Exploiting NoSQL operator injection to bypass authentication
  • Exploiting NoSQL injection to extract data
  • FILE UPLOAD VULNERABILITIES
    • File Upload Vulnerabilities
  • Web shell upload via obfuscated file extension
  • OAuth Authentication
    • OAuth Authentication
  • OAuth account hijacking via redirect_uri
  • ACCESS CONTROL VULNERABILITIES
    • Access Control Vulnerabilities
  • User ID controlled by request parameter with data leakage in redirect
  • User ID controlled by request parameter with password disclosure
  • User role controlled by request parameter
  • User role can be modified in user profile
  • URL-based access control can be circumvented
  • INFORMATION DISCLOSURE VULNERABILITIES
    • Information Disclosure Vulnerabilities
  • Information disclosure in version control history
  • XML external entity injection
    • XML External Entity (XXE) Injection
  • Exploiting XXE using external entities to retrieve files
  • Exploiting blind XXE to retrieve data via error messages
  • Blind XXE with out-of-band interaction
  • Blind XXE with out-of-band interaction via XML parameter entities
  • OS COMMAND INJECTION
    • OS Command Injection
  • Blind OS command injection with out-of-band data exfiltration
  • PROTOTYPE POLLUTION
    • Prototype Pollution
  • Privilege escalation via server-side prototype pollution
  • WEB CACHE POISONING
    • Web Cache Poisoning
  • Web cache poisoning via an unkeyed query parameter
Powered by GitBook
On this page

Username enumeration via response timing

Link: https://portswigger.net/web-security/authentication/password-based/lab-username-enumeration-via-response-timing

Previous2FA broken logicNextUsername enumeration via account lock

Last updated 3 months ago

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

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

  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

  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

  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

  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

  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

Thanks, Stay Ethical & Happy Hacking! 🍻

Candidate usernames
Candidate passwords