Post ini merupakan bagian dari rangkaian pembahasan cara penyelesaian challenges ajang kompetisi Noosc CTF 2014 Election Series. Penyelesaian challenge lainnya dapat dilihat pada link berikut:
Challenge ini ditujukan untuk mengasah dan menguji kemampuan analisa kasus para peserta terhadap keseluruhan rantai investigasi challenge 8, mulai dari 8.1 sampai 8.3. Dalam investigasi kasus sesungguhnya, bukti dan petunjuk seringkali tersebar di beberapa tempat, tidak muncul ke permukaan secara sekuensial, dan tidak langsung jelas memiliki keterkaitan antara satu dan lainnya.
Untuk mewujudkan tujuan itu, maka challenge 8.3 dirancang untuk tidak memiliki bug yang berdiri sendiri, dan penyelesaiannya harus memanfaatkan sebagian informasi dari 8.1 dan/atau 8.2. Secara singkat, alur penyelesaian challenge 8.3 ini adalah sebagai berikut:
Dan setelah memiliki hak akses "write" tersebut, peserta dapat memilih dua alternatif berbeda untuk coba menyelesaikan challenge ini: pertama, meneruskan alur pikiran sebelumnya untuk mencoba melakukan eksploitasi terhadap openftpd 1.3.0; atau kedua, mencari petunjuk lebih lanjut dengan terlebih dahulu memeriksa isi direktori di server FTP dengan teliti.
Dari kedua alternatif tersebut, cara kedua jauh lebih mudah dari yang pertama. Alternatif kedua hanya perlu membaca petunjuk yang disembunyikan di file .profile, sedangkan alternatif pertama melibatkan modifikasi kode eksploit yang tersedia di publik saat ini akibat adanya perbedaan versi sistem operasi yang digunakan dengan challenge 8.3 (versi OS ini di-hint melalui pesan error 404 Apache yang ada di port 8080 server yang sama). Jadi sesuai tujuan di atas, diharapkan memang peserta yang lebih teliti dalam melakukan analisa dan tidak segera lompat ke kesimpulan lah, yang akan dapat menyelesaikan challenge 8.3 ini dengan lebih cepat.
Selanjutnya, di bawah ini adalah cara penyelesaian challenge 8.3 alternatif kedua. Yang ingin menguji alternatif pertama, bisa menginstall sendiri proftpd 1.3.0 di atas Ubuntu 12.04 LTS, membuat akun pengguna ftp yang memiliki hak tulis ke home direktori, lalu coba memodifikasi eksploit terkait dari Metasploit. Hanya saja mungkin perlu diketahui bahwa untuk alternatif pertama tersebut, tim internal kami sendiri belum sempat mengetes modifikasi eksploit tersebut karena keterbatasan waktu, so bagi yang berminat kami ucapkan good luck and have fun ;)
Analisis terhadap bukti-bukti digital yang ada menunjukkan bahwa alamat yang Anda temukan sebelumnya (IP: 182.253.226.158 Port: 45371) seringkali digunakan sebagai titik awal serangan yang dilakukan oleh tim hacker.
Anda ditugaskan untuk menyusup ke sistem tersebut dan mencari tahu identitas sesungguhnya (flag) dari ketua tim hacker.
Kita cek dahulu service apa yang berjalan di IP dan Port tersebut
$ telnet 182.253.226.158 45371
Trying 182.253.226.158...
Connected to 192.168.9.145.
Escape character is '^]'.
220 ProFTPD 1.3.0 Server (ProFTPD Default Installation) [192.168.15.150]
Disini terdapat user anonymous yang diberi hak akses tetapi hanya read-only saja dan tidak ada yang penting di home directory-nya. Untuk mendapatkan username yang benar, kita harus balik lagi ke misi 8a. Source code yang sudah kita dapat sangat berguna sekali disini, yaitu fungsi Utils.b()
. Dengan menyertakan input yang benar, maka kita akan mendapatkan username dan password sekaligus.
Untuk input fungsi ini bisa kita dapatkan di class FormActivity
, yaitu pada bagian deklarasi variabel arrayOfByte1
-arrayOfByte5.
Ketika kita konversi data byte
ini ke dalam bentuk String
, maka akan menghasilkan lima nama alias anggota hacker. Nama-nama alias tersebut adalah:
Kelima alias tersebut dapat digunakan untuk login ke server ftp dengan menggunakan password dari output keygen yang kita miliki. Jika kita mencoba semua user tersebut untuk login menggunakan password yang kita dapat, kita akan menyadari bahwa user euler akan gagal login. Clue password untuk user euler terletak pada file .profile di home directory user lainnya. Isi dari file .profile adalah sbb
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
# remember guys, euler's seed is the table header of our admin forum page :p
Dijelaskan bahwa seed password untuk euler berada pada table header admin forum mereka, yaitu Target Host/IP
.
Kita dapat manfaatkan lagi fungsi Utils.b()
yang kita punya untuk men-generate password euler dengan input Target Host/IP.
Sekarang kita login ke server ftp mereka menggunakan user euler
dan password 1dc2952eb0fbade275aaaef24e787ff8
. Setelah kita berhasil login, kita download flag yang berada di file .FLAG.TXT. File ini pada dasarnya tersembunyi, sehingga harus memakai perintah ls -a
untuk dapat melihatnya. Untuk men-download file ini, gunakan perintah get .FLAG.TXT
Sekarang buka file tersebut dengan text editor apapun untuk mengetahui siapa dalang dibalik penyerangan aplikasi Pemilu kemarin.
Flag yang benar untuk misi 8.3 ini adalah hartati&sunardi
;)
© 2010 - 2021 PT Noosc Global. ALL Rights Reserved. Privacy Policy | Terms of Service
Comments