Assalamu’alaikum warrahmatullah wabarokatuh..

Apa kabar semuanya? saya harap anda semua dalam keadaan sehat wal’afiat.

Pada kesempatan kali ini saya ingin menuliskan bagaimana cara saya menemukan SQL Injection akibat dari improper redirect.

Seperti biasa pada tahap awal saya melakukan penggalian informasi(recon) secara bertahap dengan metode atau tips yang saya tulis di sini, tahap yang pertama saya mencoba eksploring setiap halaman web serta memeriksa source-html nya, dan saya dapati ada beberapa internal url yang hanya dapat diakses oleh user yang telah login dan ketika saya mengklik internal url tersebut saya diarahkan menuju halaman login user.

Apakah benar internal url tersebut tidak dapat diakses? Untuk itu saya mencoba melakukan request menggunakan perintah curl dan saya dapati respon full-page html seperti berikut :

<script>
   window.location.href = 'login.php';
</script>
<!DOCTYPE html>
<html lang="en" class="no-focus">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
    <title>Redacted.com Header</title>
...

Dan yaps, ternyata diatas <!DOCTYPE html> ada sebuah tagging <script> yang didalamnya terdapat fungsi redirect, gimana cara aksesnya kalo langsung ngeredirect gitu? disini sebenarnya ada 2 cara, yang pertama bisa dinon-aktifkan dulu javascriptnya atau anda dapat menggunakan burpsuite untuk mengedit response htmlnya.

Apakah semua internal url memiliki bug ini? Nahh.. untuk mengidentifikasi hal tersebut saya menggunakan waybackmachine dan grep untuk menghemat waktu, tapi gimana cara cepet buat ngecheck adanya tagging script tadi? Yaa ada cara simpelnya dunk, tinggal matiin aja javascriptnya (khusus site yang mau dicoba) tinggal klik-klik aja deh.. btw disini saya menggunakan google cloud shell soalnya gratis plus portable.

Setelah selesai inspeksi semua halaman yang dapat diakses, aktifkan lagi javascriptnya dan buka burpsuite anda lalu capture responsenya dan hapus bagian window.location.href = 'login.php'; setelah itu forward requestnya dan coba beberapa fitur yang ada pada halaman tersebut.

Dan saya lanjutkan lagi dengan menginspeksi semua fitur yang saya dapat semaksimal mungkin, dan akhirnya saya dapati adanya POST XMLHttpRequest menuju ke sebuah endpoint, segera saya lakukan percobaan identifikasi apakah endpoint tersebut rentan terhadap SQL Injection.

Untuk pencarian parameternya saya biasa lakukan inspeksi sederhana terlebih dahulu, yaitu dengan menggunakan opsi --forms milik sqlmap untuk penggunaannya seperti ini

sqlmap.py -u "https://redacted.com/admin/menu.php" --forms --random-agent --threads=2 --dbs

Dan ternyata benar ada sebuah parameter yang rentan terhadap SQL Injection, segera saya laporkan kepada tim IT nya dan dengan cepat tim langsung melakukan perbaikan.

Terimakasih telah membaca artikel saya.. see yaa! 😀