Web Penetration Testing: SQL Injection

Rendio Simamora

Sosial Media


0 orang menyukai ini
Suka

Summary

Penetration testing, juga dikenal sebagai ethical hacking, adalah proses menguji keamanan sistem komputer, jaringan, atau aplikasi web untuk mengidentifikasi kerentanan yang dapat dieksploitasi oleh penyerang. Tujuan dari penetrasi testing adalah untuk menemukan celah keamanan sebelum penyerang yang tidak sah dapat mengeksploitasi mereka. Penetrasi testing penting untuk memastikan bahwa sistem memiliki pertahanan yang kuat terhadap ancaman keamanan dan bahwa informasi sensitif terlindungi dari akses yang tidak sah.

Description

Portofolio ini mendokumentasikan proses penetration testing (pentest) yang dilakukan pada situs web me********anan.com. Portofolio ini dimulai dari tahap pengumpulan informasi (information gathering) hingga identifikasi dan eksploitasi kerentanan SQL Injection. Tujuan dari portofolio ini adalah untuk mengidentifikasi kerentanan yang ada, mengeksploitasi kerentanan tersebut untuk menunjukkan dampaknya, dan memberikan rekomendasi perbaikan guna meningkatkan keamanan situs web tersebut. Hasil penelitian menunjukkan adanya kerentanan SQL Injection pada parameter 'id' yang memungkinkan penyerang untuk mengakses dan memodifikasi data sensitif.

Penjelasan Situs Web me********anan.com

Situs web me********anan.com adalah platform online yang menyediakan layanan sistem informasi gereja untuk HKBP K***** Kota. Situs ini digunakan oleh jemaat gereja untuk mengelola data laporan iuran gereja. Mengingat situs ini berisi informasi sensitif seperti data pribadi jemaat, keamanan data dan layanan yang disediakan sangat penting untuk menjaga kepercayaan pengguna.

Tujuan

Penelitian ini bertujuan untuk:

  1. Mengidentifikasi kerentanan pada situs web me********anan.com melalui proses pengumpulan informasi dan pentest.
  2. Mengeksploitasi kerentanan yang ditemukan untuk menunjukkan dampaknya.
  3. Memberikan rekomendasi perbaikan untuk meningkatkan keamanan situs web tersebut.

Ruang Lingkup

Pengujian dilakukan pada situs web me********anan.com, mencakup tahap-tahap berikut:

  1. Information Gathering: Mengumpulkan informasi sebanyak mungkin tentang target.
  2. Identifikasi Titik Injeksi: Menentukan parameter input yang rentan terhadap injeksi SQL.
  3. Eksploitasi Kerentanan: Menggunakan payload injeksi untuk menguji dan mengeksploitasi kerentanan.
  4. Verifikasi: Memastikan bahwa eksploitasi berhasil dan dampaknya dapat direproduksi.

Dasar Teori

Keamanan Web

Keamanan web mencakup berbagai teknik dan metode untuk melindungi aplikasi web dari berbagai ancaman. Proses pentest terdiri dari beberapa tahap, termasuk pengumpulan informasi, identifikasi kerentanan, eksploitasi, dan verifikasi.

Information Gathering

Tahap ini bertujuan untuk mengumpulkan informasi sebanyak mungkin tentang target. Informasi ini digunakan untuk mengidentifikasi titik lemah dan merencanakan serangan. Teknik yang digunakan termasuk pemindaian DNS, IP address, lokasi server, subdomain, versi PHP, dan jenis database yang digunakan.

SQL Injection

SQL Injection adalah teknik injeksi kode yang mengeksploitasi kerentanan dalam aplikasi yang berkomunikasi dengan database. Serangan ini memungkinkan penyerang untuk menjalankan perintah SQL yang tidak sah, sehingga dapat mengakses, memodifikasi, atau menghapus data dalam database.

Metode Pentest

Pentest atau pengujian penetrasi adalah proses menguji sistem untuk menemukan kerentanan. Metode yang digunakan dalam pengujian ini melibatkan alat otomatis seperti SQLMap untuk mendeteksi dan mengeksploitasi SQL Injection.

Metodologi

Prosedur Pengujian

  1. Information Gathering: Mengumpulkan informasi tentang situs web, termasuk subdomain, teknologi yang digunakan, dan parameter input.
  2. Identifikasi Titik Injeksi: Mengidentifikasi parameter input yang rentan terhadap injeksi SQL.
  3. Eksploitasi Kerentanan: Menggunakan payload injeksi untuk menguji dan mengeksploitasi kerentanan.
  4. Verifikasi: Memastikan bahwa eksploitasi berhasil dan dampaknya dapat direproduksi.

Alat yang Digunakan

  • SQLMap: Alat otomatis untuk mendeteksi dan mengeksploitasi SQL Injection.
  • Nmap: Untuk pemindaian port dan layanan.

Hasil dan Analisis

Information Gathering

Beberapa teknik yang digunakan dalam tahap pengumpulan informasi termasuk:

  1. DNS: Menggunakan tool whois untuk mengetahui DNS server dari website.
  2. IP Address: Menggunakan tool nslookup untuk mengetahui IP address dari website.
  3. Lokasi Server: Menggunakan curl dan bantuan pihak ketiga seperti ipinfo.io untuk mengetahui lokasi server.
  4. Sub-domain: Menggunakan tool sublist3r untuk mengetahui subdomain dari website.
  5. Versi PHP: Mengecek header respons HTTP menggunakan tool curl -I untuk mengetahui versi PHP yang digunakan.
  6. Jenis Database: Menggunakan nmap untuk memeriksa port default database server (misalnya, port 3306 untuk MySQL/MariaDB) dan menentukan jenis database yang digunakan.

Identifikasi Kerentanan

Kerentanan ditemukan pada parameter 'id' di halaman laporan iuran, yang mengakibatkan website mengembalikan error 500 Internal Server Error jika input user tidak disanitize sebelum dikirim ke database. Contoh URL dan parameter rentan yang diuji:

  • URL: https://me********anan.com/peleankiskot/janji-iman/tampil_janji_iman.php?id=13011035
  • Parameter Rentan: id
  • Payload yang Diuji: ' (single quote)

Testing Eksploitasi Kerentanan

Payload ' (single quote) berhasil digunakan untuk membuat Error 500 (Internal Server Error). Berikut adalah detail request dan response yang menunjukkan eksploitasi kerentanan:

  1. Request Awal
    • GET /peleankiskot/janji-iman/tampil_janji_iman.php?id=13011035 HTTP/1.1
    • Host: me********anan.com
  2. Request Exploitasi
    • GET /peleankiskot/janji-iman/tampil_janji_iman.php?id=’ HTTP/1.1
    • Host: me********anan.com
  3. Response Server
    • HTTP/1.1 500 Internal Server Error
    • Content-Type: text/html; charset=UTF-8

Dampak Potensial

Eksploitasi kerentanan ini dapat mengakibatkan:

  • Akses tidak sah ke data pengguna.
  • Modifikasi data di database.
  • Potensi serangan lebih lanjut seperti privilege escalation.

Penilaian Risiko

Risiko yang ditimbulkan cukup besar, mengingat dampak yang dapat mempengaruhi kerahasiaan, integritas, dan ketersediaan data. Eksploitasi kerentanan ini dapat mengakibatkan akses tidak sah ke data sensitif dan potensi modifikasi data oleh penyerang.

Solusi dan Rekomendasi

  1. Parameterized Queries: Menggunakan prepared statements dengan parameterized queries untuk semua akses database.
  2. ORM (Object-Relational Mapping): Menggunakan ORM yang memiliki fitur built-in untuk mencegah SQL Injection.
  3. Input Validation: Melakukan validasi dan sanitasi input dari pengguna.
  4. Keamanan Database: Memastikan database user memiliki hak akses minimal yang diperlukan.

Dokumentasi

Informasi Course Terkait
  Kategori: Cyber Security
  Course: Cyber Security SIB Batch 6