Saya membuat judul "Sharing" karena saya juga tidak mengetahui kepastiannya dari pihak tokopedia secara langsung apakah benar pada saat itu terdapat celah SQL Injection di end point tersebut atau tidak.
Oke langsung saja.
Tanggal ditemukan 25 September 2018 - 28 September 2018
Diperbaiki sekitar tanggal 29 September 2018
Pencarian bermulai pada saat saya ingin menggunakan kupon tokopedia "Kupon Milik Saya" pada situs tokopedia.
Lalu coba melihat request apa yang terjadi menggunakan BurpSuite
Pada BurpSuite terlihat ternyata tokopedia melakukan request ke sebuah service Graph yaitu https://gql.tokopedia.com untuk melakukan verifikasi kode kupon, dimana pada gambar kode kuponnya "SLV1509F4WVDLU6UCBB". Setelah itu saya coba memasukan request tersebut ke repeater BurpSuite. Tetapi sebelumnya saya ingin lihat seperti apa respon selanjutnya pada website setelah melakukan request tersebut, maka saya coba forward.
Ternyata tokopedia mengarahkannya ke sebuah link https://www.tokopedia.com/cart/.
Lalu coba melihat request apa yang terjadi menggunakan BurpSuite
Pada BurpSuite terlihat ternyata tokopedia melakukan request ke sebuah service Graph yaitu https://gql.tokopedia.com untuk melakukan verifikasi kode kupon, dimana pada gambar kode kuponnya "SLV1509F4WVDLU6UCBB". Setelah itu saya coba memasukan request tersebut ke repeater BurpSuite. Tetapi sebelumnya saya ingin lihat seperti apa respon selanjutnya pada website setelah melakukan request tersebut, maka saya coba forward.
Ternyata tokopedia mengarahkannya ke sebuah link https://www.tokopedia.com/cart/.
Dan ada notifikasi kupon siap digunakan. Berarti verfikasi dari https://gql.tokopedia.com valid bahwa kupon tersedia.
Sudah mengetahui responnya, saya coba melakukan pengetesan pada situs https://gql.tokopedia.com. karena sudah di simpan di repeater BurpSuite saya dapat mengulangi request tersebut. saya coba dengan menyisipkan karakter "'" pada kode kupon.
Responnya OK, tapi coba kita lihat pada link https://www.tokopedia.com/cart/.
Notifikasi hilang,disini saya belum yakin bahwa ini SQL Injection,karena bisa saja karena dikasih karakter "'" kode kupon menjadi tidak valid.
Coba kembali dengan menyisipkan "--+-" setelah tanda "'" menjadi "SLV1509F4WVDLU6UCBB'--+-".
Cek kembali pada https://www.tokopedia.com/cart/.
Notifikasi muncul kembali, apakah sebuah kebetulan? saya coba kembali melakukan Ekspresi Boolean.
dimana jika :
kode_kupon' and 1=1--+- ==> Responnya TRUE (Notifikasi kode kupon muncul)
dan
kode_kupon' and 1=2--+- ==> Responnya FALSE (Notifikasi kode kupon tidak muncul)
maka : bisa di kategorikan termasuk dalam Blind SQL Injection
tetapi jika tidak
maka : ini hanya kesalahan biasa
Pertama coba dengan "SLV1509F4WVDLU6UCBB' and 1=1--+-".
Respon pada https://www.tokopedia.com/cart/.
TRUE = Notifikasi kupon muncul kembali
Kedua coba dengan "SLV1509F4WVDLU6UCBB' and 1=2--+-".
Respon pada https://www.tokopedia.com/cart/.
FALSE = Notifikasi kupon tidak muncul
Setelah mengetahui "sepertinya" memang ini Blind SQL Injection. saya membuat script dengan tujuan untuk dapat men-generate nama database. dikarenakan SQL Injection berjenis blind ini tidak memuncul error dan sebagainya jadi harus mengecek 1 per 1 huruf ataupun angka.
Akhirnya saya mendapatkan nama databasenya ialah tokopedia_promo.
Lebih lengkapnya saya buatkan video pada saat saya proses pencarian bug dan generate nama database.
[*] Video Proof of Concept (POC) : Blind SQL Injection
[*] Video Proof of Concept (POC) : Generate Nama Database
[*] Catatan
Tulisan ini sudah mendapatkan persetujuan dari pihak terkait sebelum di publikasikan,sesuai dengan persayaratan yang dibuat oleh pihak terkait (https://github.com/tokopedia/Bug-Bounty)
2 Komentar
halo polisi
BalasHapusHanya pencari receh pak
Hapus