Penyelesaian Challenges Malang Hacker Link

Penyelesaian Challenges Malang Hacker Link

Setelah lama tidak membuat challenges karena waktu senggang yang makin dikit karena tugas yang makin banyak dan menumpuk karena tidak segera dikerjakan, akhirnya dapat info challenges dari temen di group telegram, challenges ini merupakan challenges buatan dari komunitas lain yaitu Malang Hacker Link, challengesnya cukup unik dan menyenangkan untuk dikerjakan karena ilmu perdukunan tidak perlu digunakan.

Langsung saja dari informasi tersebut langsung buka linknya dan didapatkan form dengan isian first dan last name karena belum menjelajah dan mendapatkan clue, kita mencoba menggunakan fitur ini untuk mengetahui output dari aplikasi web ini, untuk isian firstname diisikan abc dan untuk lastname dengan def

buka challenges

Ternyata output dari webapp ini cukup unik, setiap inputan yang dimasukan akan ditampilkan dalam format ascii art berwarna, dari sini mulai mencoba mencari celah yang dapat dilakukan.

Tampilan Awal

Karena hanya program dengan output ascii art disini kita tidak perlu berfikir jauh untuk mengasumsikan kemungkinan celah keamanan pada webapp ini. Untuk SQL Injection tidak mungkin karena sepertinya tidak tersimpan pada database namun tidak menutup kemungkinan juga, untuk XSS juga tidak mungkin karena output dari hasil input menjadi ascii art. Dari sini mulai berfikir bahwa web ini memiliki vulnerability SSTI karena kemungkinan ada templating yang digunakan untuk menampilkan ascii art tersebut, langsung saja dicoba menggunakan payload umum yaitu {{7 * 7}} jika output menjadi 49 maka sudah terlihat jelas bahwa webapp tersebut rentan terhadap SSTI

Testing SSTI Vulnerability

Namun output yang diharapkan tidak tampil dan malah isi file yang ada pada directory tersebut, terlihat ada file chall.py sepertinya source code dari webapp ini dan solver.txt yang mana adalah tujuan akhir untuk dituliskan nama pada file tersebut.

Output of SSTI Test

Kita buka file chall.py dan mendapatkan source code dari webapp tersebut, waktunya baca-baca kode dan mencari sesuatu yang menarik.

Source Code

Karena inputan kita diproses maka baiknya memahami bagaimana input data tersebut diproses, pada fungsi parse_POST dan do_POST inputan diproses pada kedua fungsi tersebut, nampaknya ada sesuatu yang menarik dari isi fungsi do_POST, ada command shell yang tidak asing terlihat yaitu toilet, command untuk mempercantik output terminal dengan ascii art. Sepertinya webapp ini menjalankan shell untuk memproses data dari input user, untuk meyakinkan diri kita lihat fungsi-fungsi lainnya.

Fungsi POST Data
Fungsi Shell

Ternyata dugaan benar, pada fungsi hav() webapp ini menjalankan shell bash pada proses bisnisnya. Berdasarkan dari fungsi do_POST maka dapat disimpulkan bahwa webapp ini akan menjalankan command shell echo <input_data> | toilet --html --metal, karena sudah cukup familiar dengan command shell waktunya memanggil command shell lainnya dengan merubah input data menjadi payload sederhana, yaitu shell exec pada bash. dapat dijalankan dengan

$(command_here)

atau

`command_here`

RCE Test

Kita lakukan pengetesan dengan isian data $(whoami)

RCE Response

Server merespon dan terlihat id dari user kita adalah root, waw. Dengan ini kita sudah dapat melakukan full compromised terhadap server, namun perlu diingat tujuan kita adalah menuliskan nama pada solver.txt

Write Name

Menjalankan command untuk write name

Response of Write Command

Response dari command tersebut kosong, lalu kita check isi solver.txt apakah berubah atau tidak.

Solver List

Okay mission complete.

Lalu bagaimana biar webapp ini lebih secure ? tulis jawaban kalian di komentar.

See you on the next challenges.