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

SQL injection UNION attack, retrieving data from other tables

Link: https://portswigger.net/web-security/sql-injection/union-attacks/lab-retrieve-data-from-other-tables

PreviousBlind SQL injection with conditional responsesNextSQL injection attack, listing the database contents on non-Oracle databases

Last updated 3 months ago

Description:

This lab contains a SQL injection vulnerability in the product category filter. The results from the query are returned in the application's response, so you can use a UNION attack to retrieve data from other tables. To construct such an attack, you need to combine some of the techniques you learned in previous labs.

The database contains a different table called users, with columns called username and password.

To solve the lab, perform a SQL injection UNION attack that retrieves all usernames and passwords, and use the information to log in as the administrator user.

Proof of concept:

  1. Lakukan analisa pada fitur-fitur yang tersedia pada target

  2. Dari hasil analisa didapati bahwa ketika memilih category akan memanggil endpoint filter dan terdapat parameter category didalamnya. Inputkan karaker single-quote (’) untuk mengidentifikasi kerentanan SQL Injection

  3. Ketika diinputkan karakter single-quote (’) maka response yang diberikan akan error, itu merupakan indikasi awal bahwa parameter category tersebut rentan terhadap SQL Injection. Untuk lebih memastikannya lagi, inputkan payload ‘OR ‘1’=’1— atau ‘OR ‘1’=’1# yang telah dilakukan URL encode. Jika response yang diberikan 200 OK, maka artinya sistem mengeksekusi query SQL yang diinputkan tersebut

  4. Dari hasil enumerasi awal, disimpulkan bahwa parameter category pada endpoint filter rentan terhadap SQL Injection. Langkah selanjutnya adalah gunakan payload ini 'UNION SELECT '1','2'—untuk memastikan bahwa teknik SQL injection yang digunakan dapat menggunakan Union Based

  5. Selanjutnya gunakan payload 'UNION SELECT '1',table_name FROM information_schema.tables— untuk mengekstrak daftar table yang tersedia pada database target

  6. Dari hasil langkah sebelumnya, didapati bahwa terdapat tabel users. Langkah selanjutnya adalah melakukan ekstrak isi dari tabel tersebut. Namun untuk dapat mengekstrak data pada tabel users, kita harus mengetahui daftar nama column yang ada pada tabel users. Untuk dapat mengetahuinya, dapat menggunakan payload berikut 'UNION SELECT '1',column_name FROM information_schema.columns WHERE table_name='users'—

  7. Dari langkah sebelumnya didapati bahwa pada tabel users terdapat column data email, username dan password. Maka selanjutnya adalah melakukan ekstrak data username dan password pada tabel users tersebut. Untuk dapat melakukannya, dapat menggunakan perintah/payload seperti berikut ini 'UNION SELECT username, password FROM users—

  8. Berhasil mengakses akun administrator dari hasil ekstrak database target memanfaatkan kerentanan SQL Injection

  9. Selain secara manual, SQL Injection ini memungkinkan dilakukan secara otomatis menggunakan tools SQLMap atau ghauri seperti yang dapat dilihat pada gambar dibawah ini.

    Perintah basic SQLMap : sqlmap -u ‘<<Affected URL>>’ —dbs

    Perintah basic Ghauri : gharui -u ‘<<Affected URL>>’ —db

Thanks, Stay Ethical & Happy Hacking! 🍻