Report Penetration Test: Contoh Temuan Eksploitasi

From OnnoWiki
Revision as of 10:57, 1 October 2024 by Onnowpurbo (talk | contribs)
Jump to navigation Jump to search

Temuan Eksploitasi: Kerentanan SQL Injection pada Aplikasi Web

Kerentanan yang Ditemukan:

SQL Injection (SQLi) adalah kerentanan keamanan di mana seorang penyerang dapat menyisipkan atau memodifikasi kueri SQL yang dieksekusi oleh aplikasi. Dalam kasus ini, ditemukan bahwa input yang diberikan pada parameter “username” pada halaman login aplikasi web rentan terhadap injeksi SQL karena validasi input yang tidak memadai. Hal ini memungkinkan penyerang untuk mengeksekusi perintah SQL yang tidak diinginkan oleh aplikasi, yang berpotensi memberikan akses tidak sah ke data sensitif atau hak istimewa administratif pada basis data.

Langkah-langkah Eksploitasi yang Dilakukan:

  • Langkah 1: Identifikasi Parameter Rentan Kami mulai dengan memeriksa formulir login aplikasi. Pada saat memasukkan input yang tidak valid, seperti `' OR '1'='1` ke dalam kolom “username” dan meninggalkan kolom “password” kosong, halaman login memberikan respons tidak sesuai yang mengindikasikan kemungkinan adanya kerentanan SQL Injection.
  • Langkah 2: Uji Injeksi SQL Setelah mengidentifikasi parameter yang rentan, kami melakukan uji dengan payload sederhana:
 ' OR '1'='1' --

Payload ini menyebabkan query SQL yang seharusnya:

 SELECT * FROM users WHERE username='[input_user]' AND password='[input_password]';

menjadi:

 SELECT * FROM users WHERE username= OR '1'='1' -- ' AND password=;

Karena ekspresi `1=1` selalu bernilai benar, aplikasi akan memberikan akses tanpa memverifikasi password.

  • Langkah 3: Verifikasi Akses Tidak Sah
 Setelah memasukkan payload di atas, aplikasi memberikan akses langsung ke akun pengguna tanpa memverifikasi kredensial yang benar. Ini menegaskan bahwa aplikasi rentan terhadap SQL Injection.
    • 3. Bukti yang Mendukung:
    • Tangkapan Layar 1: Payload injeksi SQL yang disisipkan di kolom “username” pada halaman login.
    • Tangkapan Layar 2: Respons aplikasi setelah injeksi, yang menunjukkan akses tidak sah ke akun pengguna.
    • Tangkapan Layar 3: Query SQL yang berhasil dieksekusi di belakang layar (diambil dari log server), menunjukkan manipulasi query oleh injeksi SQL.

Dampak:

Dengan adanya kerentanan ini, seorang penyerang dapat memperoleh akses tidak sah ke sistem, mencuri informasi pengguna, atau bahkan melakukan eskalasi hak istimewa untuk mendapatkan kontrol penuh atas basis data. Jika tidak ditangani, risiko ini dapat menyebabkan kebocoran data atau modifikasi berbahaya pada sistem.

Rekomendasi:

  • Implementasikan prepared statements atau parameterized queries untuk mencegah injeksi SQL.
  • Lakukan validasi input yang ketat dengan membatasi karakter yang dapat diterima dalam kolom input.
  • Lakukan audit rutin terhadap aplikasi dan basis data untuk mendeteksi dan memperbaiki kerentanan serupa.

Kesimpulan:

Kerentanan SQL Injection yang ditemukan di aplikasi web ini adalah risiko tinggi yang harus segera diperbaiki untuk mencegah akses tidak sah dan penyalahgunaan data.


Pranala Menarik