Kronologi
Ketika saya lagi santai di room discord maxteroit, salah satu teman saya zakir ramadhan memaksukkan bot dengan fitur running code ke room. Hal ini tentu sangat biasa, mengingat banyaknya aplikasi serupa di google. Namun, Seperti halnya aplikasi serupa tentu memiliki kerentanan yang serupa pula. Contoh: Code Injection pada web SGB-Team yang pernah ditulis oleh agus setya r, maupun Code Injection pada Codepolitan oleh Ardan
Apa Itu Code Injection (Kode Injeksi) dan Apa Dampaknya?
Kode Injeksi adalah istilah umum untuk jenis serangan yang terdiri dari kode yang disuntikan yang kemudian ditafsirkan / dieksekusi oleh aplikasi. Untuk dampak dari code injection sendiri beragam, tergantung sejauh mana kita dapat memasukkan dan mengeksekusi code yang ada. Untuk dampak paling krusial adalah kita dapat melakukan remote server
Exploitasi
Kalau kalian pernah membaca arrtikel Bypass Shell Backdoor (Terdownload, Forbidden, Terhapus) ada yang menarik disitu, dimana kita dapat melakukan eksekusi RCE secara langsung menggunakan function system(). Kenapa menggunakan code ini bang? ya, karena dengan code ini kita dapat dengan mudah merubah fungsi sehingga nantinya berharap ada salah satu fungsi yang dapat digunakan. Untuk list fungsi yang dapat digunakan code injetion seperti berikut
- system()
- file_get_contents()
- fopen()
- readfile()
- shell_exec()
- exec()
- passthru()
- fsockopen()
Saya sendiri sempat berfikir jika fitur seperti systen() sempat bakalan gagal, Namun ketika saya coba injeksikan ternyata code ini berhasil tereksekusi
Untuk catatan, ketika melakukan exploitasi apapun itu selama menggunakan php selalu gunakan <?php pada awal penulisan dan ?> sebagai penutup, jangan gunakan <? dan ; sebagai penutup. Karena pada kasus ini dan kasus kasus lainnya seringkali payload tidak tereksekusi
Saya mencoba memasukkan payload "id" untuk mengetahui sejauh mana priv yang saya dapatkan.
Ternyata saya mendapatkan root akses bahkan tanpa proses rooting. Saya sendiri sempat kaget karna bisa mendapatkan akses root. Tidak percaya begitu saja saya mencoba membaca /etc/shadow untuk memeriksa apakah benar memang memiliki root akses. dan hasilnya
Setelah itu, mencoba melakukan reverse shell untuk mendapatkan shell interaktif. Beberapa teknik kami coba dan tetap gagal karena sistem mendisable beberapa fitur. namun dapat kami bypass dengan injeksi code seperti berikut.
Kami juga berniat mendapat ip server namun banyak kendala yang dialami. mulai dari ifconfig yang didisable, tidak bisa melakukan curl dan semacamnya.
Setelah saya dan zakir stuck pada masalah ini, salah satu teman saya bleedz join the battle. pertama kita melakukan read resolv.conf untuk mendapatkan dns ip
Setelah itu melakukan reverse ip pada ip dns yang tadi didapatkan. Alhasil kami mendapatkan ip bot discord tersebut (untuk ipnya sengaja tidak ditampilkan, jangan iseng). Kita juga mencoba melakukan write file namun gagal. Mulai dari sini kita curiga ini bot makek docker (sebenernya pas masukin command uname -a tadi udah curiga sih). Kemudian saya memasukkan command command docker namun resultnya command docker: not found. Saya berfikir "ah mungkin emang ga pakek docker" tapi sekali lagi teman kami bleedz dapat membuktikan bahwa server ini menggunakan docker dengan command berikut
All done.. Ketika kita tau server menggunakan docker, kita tidak lanjut melakukan exploitasi lebih dalam karena akan memakan waktu dan tenaga yang lebih banyak (ngantuk juga). Mungkin itu dulu artikel kali ini. Terimakasih.