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

Web shell upload via obfuscated file extension

Link:

PreviousFile Upload VulnerabilitiesNextOAuth Authentication

Last updated 3 months ago

Description:

This lab contains a vulnerable image upload function. Certain file extensions are blacklisted, but this defense can be bypassed using a classic obfuscation technique.

To solve the lab, upload a basic PHP web shell, then use it to exfiltrate the contents of the file /home/carlos/secret. Submit this secret using the button provided in the lab banner.

You can log in to your own account using the following credentials: wiener:peter

Proof of concept:

  1. Analisa fitur-fitur pada web target menggunakan akun testing

  2. Dari hasil analisa terdapat fitur upload file pada halaman My Account

  3. Dari analisa, pada fitur file upload tersebut hanya mengizinkan file JPG dan PNG yang dapat diupload

  4. Ketika file dengan ekstension .php dipaksa untuk di upload, maka file tersebut akan ditolak dan akan menampilkan pesan kesalahan yang dimana hanya file JPG dan PNG yang diizinkan

  5. Kirim request tersebut ke burp suite repeater. Jika sudah coba lakukan perubahan ekstension file menjadi .php5, .phtml dan lain sebagainya untuk melakukan bypass validasi/filterisasi ekstension pada fitur file upload tersebut

  6. Namun cara tersebut gagal. Dari hasil analisa, didapati untuk melakukan bypass adalah dengan cara menambahkan layer ekstension baru seperti informasi yang didapati dari . Yaitu dengan menggunakan atau menambahkan %00.png%00.jpg setelah ekstension file .php

  7. Dan terlihat seperti gambar diatas, menunjukan terdapat response file tersebut berhasil diupload dengan ekstension file .php. Setelah itu, akses file tersebut dengan cara klik kanan pada gambar profile dan pilih “Buka Gambar di Tab Baru”

  8. Namun ketika diakses file tersebut terdapat keterangan error file not found. Itu dikarenakan masih mengakses file yang %00.png%00.jpg. Maka hapus %00.png%00.jpg sisakan ekstension file .php untuk dapat mengakses file tersebut. Hal itupun telah diinformasikan pada response dari request di langkah nomor 6 sebelumnya

  9. File phpinfo.php pun berhasil tereksekusi ditandai dengan ditampilkannya informasi mengenai php dari sistem target. Dari kerentanan ini juga memungkinkan untuk membaca atau mendapatkan informasi sensitif. Sebagai contoh disini menggunakan script dibawah untuk mendapatkan informasi pada file /etc/passwd <?php echo readfile("/etc/passwd") ?>

  10. Untuk menyelesaikan tangtangan lab ini, baca file secret pada direktori /home/carlos dengan menggunakan script atau syntax php berikut ini <?php echo readfile("/home/carlos/secret") ?>

  11. Seperti yang dapat dilihat pada gambar diatas, ditampilkan isi dari file secret tersebut. Salin isi dari file secret tersebut dan lakukan submit untuk menyelesaikan tangtangan lab ini. Untuk angka terakhir tidak perlu disalin, dikarenakan itu merupakan nilai bytes dari file tersebut bukan isi dari konten file tersebut

Thanks, Stay Ethical & Happy Hacking! 🍻

Hacktricks