Difference between revisions of "Report Penetration Test: Contoh Temuan Eksploitasi"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "**Temuan Eksploitasi: Kerentanan SQL Injection pada Aplikasi Web** **1. Kerentanan yang Ditemukan:** SQL Injection (SQLi) adalah kerentanan keamanan di mana seorang penyerang...")
 
Line 1: Line 1:
**Temuan Eksploitasi: Kerentanan SQL Injection pada Aplikasi Web**
+
==Temuan Eksploitasi: Kerentanan SQL Injection pada Aplikasi Web==
  
**1. Kerentanan yang Ditemukan:**
+
===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.
 
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.
  
**2. Langkah-langkah Eksploitasi yang Dilakukan:**
+
===Langkah-langkah Eksploitasi yang Dilakukan:===
  
- **Langkah 1: Identifikasi Parameter Rentan**
+
* '''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.
  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:
  
- **Langkah 2: Uji Injeksi SQL**
 
  Setelah mengidentifikasi parameter yang rentan, kami melakukan uji dengan payload sederhana:
 
  ```
 
 
   ' OR '1'='1' --
 
   ' OR '1'='1' --
  ```
+
 
  Payload ini menyebabkan query SQL yang seharusnya:
+
Payload ini menyebabkan query SQL yang seharusnya:
  ```sql
+
 
 
   SELECT * FROM users WHERE username='[input_user]' AND password='[input_password]';
 
   SELECT * FROM users WHERE username='[input_user]' AND password='[input_password]';
  ```
+
 
  menjadi:
+
menjadi:
  ```sql
+
 
 
   SELECT * FROM users WHERE username='' OR '1'='1' -- ' AND password='';
 
   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**
+
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.
 
   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:**
+
** '''3. Bukti yang Mendukung:'''
  
- **Tangkapan Layar 1**: Payload injeksi SQL yang disisipkan di kolom “username” pada halaman login.
+
** '''Tangkapan Layar 1''': Payload injeksi SQL yang disisipkan di kolom “username” pada halaman login.
  ![Injection Payload](injection-payload.png)
 
 
    
 
    
- **Tangkapan Layar 2**: Respons aplikasi setelah injeksi, yang menunjukkan akses tidak sah ke akun pengguna.
+
** '''Tangkapan Layar 2''': Respons aplikasi setelah injeksi, yang menunjukkan akses tidak sah ke akun pengguna.
  ![Unauthorized Access](unauthorized-access.png)
 
 
    
 
    
- **Tangkapan Layar 3**: Query SQL yang berhasil dieksekusi di belakang layar (diambil dari log server), menunjukkan manipulasi query oleh injeksi SQL.
+
** '''Tangkapan Layar 3''': Query SQL yang berhasil dieksekusi di belakang layar (diambil dari log server), menunjukkan manipulasi query oleh injeksi SQL.
  ![SQL Query Log](sql-query-log.png)
+
 
 +
==Dampak:==
  
**4. 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.
 
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.
  
**5. Rekomendasi:**
+
==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.
+
* Implementasikan '''prepared statements''' atau '''parameterized queries''' untuk mencegah injeksi SQL.
- Lakukan audit rutin terhadap aplikasi dan basis data untuk mendeteksi dan memperbaiki kerentanan serupa.
+
* 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:==
  
**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.
 
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==
 +
 +
* [[Ethical Hacking]]

Revision as of 10:57, 1 October 2024

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