[HackTheBox] – Previse

Previse
Easy – Box
By SlothSpider

Enumerasi

Pertama-tama, kita dapat melakukan enumerasi menggunakan Nmap. Dari hasil yang di dapat (gambar 1), kita dapat melihat bahwa terdapat dua buah port yang terbuka, yaitu port 22 (SSH) dan port 80 (HTTP).

gambar 1

Kita kunjungi halaman web pada port 80 dan kita diarahkan menuju halaman login.php (gambar 2).

gambar 2

Saya mencoba melakukan beberapa SQLi. Namun, ternyata tidak membuahkan hasil. Ketika saya mencoba mengunjungi halaman index.php, halaman juga mengarahkan kita menuju login.php.

Di sini, saya mencoba menggunakan apilkasi Burpsuite untuk melihat paket yang dikirim dan memidahkannya ke repeater untuk mempermudah menganalisa paket yang dikirimkan.

Foothold

gambar 3

Dari sini dapat kita lihat bahwa respon yang diberikan oleh server adalah “302 Found” (gambar 3). Kita dapat mencari di google bahwa respon 302 menandakan bahwa halaman yang sedang kita akses dipindahkan sesuai dengan URL yang ditentukan oleh header. Hal ini umum dilakukan untuk mencegah agar user yang tidak berwenang dapat mengakses suatu website.  Namun, apabila kita lihat lebih lanjut pada bagian response (gambar 4), kita tetap dapat melihat isi dari halaman web tersebut.

gambar 4

Oleh sebab itu, kita dapat mengubah respon dari “302 Found” menjadi “200 OK” (menandakan bahwa web berhasil diakses tanpa ada masalah). Kita dapat melakukannya dengan menggunakan Burpsuite juga, secara manual ataupun otomatis. Di sini, saya akan melakukannya secara manual.

Ketika web sedang melakukan request, kita intercept paket tersebut dan mengintercept pula paket yang datang dari server menuju komputer kita. Sehingga, kita dapat mengubah kode respon dari server dari “302 Found ” menjadi “200 OK”. Sehingga, browser kita menampilkan halaman web yang ingin kita lihat.

Untuk melakukannya, pertama, kita perlu menangkap paket yang kita request (gambar 5),
Klik kanan > Do intercept > Response to this request. Setelah itu, kita forward request kita dan menunggu respon dari server.

gambar 5

Setelah menunggu sesaat, akan muncul sebuah response (gambar 6).

gambar 6

Kita ubah “302 Found” menjadi “200 OK” (gambar 7) dan forward respons tersebut.

gambar 7

Dapat kita lihat (gambar 8) bahwa kita berhasil mengunjungi halaman index.php web tersebut.

gambar 8

Kita dapat lihat bahwa kita juga bisa membuat sebuah akun pada menu Accounts > Create Account. Oleh sebab itu, kita lakukan hal yang sama seperti ketika kita ingin mengakses index.php di atas untuk melihat isi dari menu Create Account (gambar 9).

gambar 9

Di sini, saya mencoba membuat sebuah user. Kemudian, saya mencoba melakukan login dengan user tersebut dan berhasil (gambar 10).

gambar 10

Setelah melakukan penelusuran terhadap web tersebut, saya menemukan sebuah file yang dapat kita download, yaitu file bernama sitebackup.zip pada halaman files.php (gambar 11).

gambar 11

Kita klik pada bagian nama file dan file otomatis akan langsung terunduh. Kita unzip dan lihat isi dari file tersebut dan kita menemukan file-file yang merupakan file php web tersebut (gambar 12).

gambar 12

Setelah menelusuri file-file tersebut, saya menemukan sebuah kredensial database pada file config.php. Kemudian, saya juga menemukan sebuah fungsi exec pada file logs.php (gambar 13).

gambar 13

Jadi, file_logs.php akan melakukan post menuju logs.php dengan memberikan variabel delim untuk menentukan delimeter logs yang akan ditampilkan. Namun, kita dapat memasukkan pula kode agar kita dapat melakukan reverse shell.

Ketika kita melakukan request pada halaman file_logs.php, kita intercept request kita menggunakan burpsuite dan menambahkan reverse shell di atas yang telah kita encode menggunakan URL encoding menjadi seperti berikut:

gambar 14

Lalu kita forward request pada gambar 14. Namun, sebelum melakukan forward, jangan lupa membuat sebuah listener menggunakan netcat. Dan kita dapatkan reverse shell (gambar 15).

gambar 15

Getting User

Di sini, saya menggunakan interactive shell dengan menggunakan command

Setelah melakukan beberapa pencarian, saya tidak menemukan cara untuk menjadi user. Akhirnya, saya mencoba untuk melihat isi database pada mysql (berhubung kita sudah memiliki username dan password untuk melihat isi dari database mysql dari file config.php tadi).

gambar 16
gambar 17

Saya menemukan sebuah database bernama previs dan terdapat tabel accounts. Ketika melihat isi dari tabel accounts, saya menemukan username dan password dari m4lwhere, terlihat menarik.

Saya memasukkan hash tersebut kedalam file bernama hashed di komputer lokal saya. Kemudian, saya mencoba melihat tipe hash yang digunakan untuk melakukan hashing pada file php yang didapat tadi. Pada file accounts.php, kita dapat melihat bahwa password di hash menggunakan fungsi crypt dan salt “🧂llol” (gambar 18).

gambar 18

Kemudian, saya menemukan halaman dokumentasi crypt dan menemukan bahwa tipe hash yang digunakan adalah md5 (gambar 19).

gambar 19

Saya menggunakan john dan menemukan dua buah tipe hash yang sesuai, yaitu md5crpty atau md5crypt-long (gambar 20).

gambar 20

Ketika mencoba menggunakan tipe md5crypt, ternyata tidak menemukan hasil (gambar 21). Ketika menggunakan md5crypt-long, kita temukan password nya (gambar 22). Di sini saya menggunakan bantuan file rockyou.txt sebagai wordlist.

gambar 21
gambar 22

Kemudian, saya mencoba melakukan SSH dan berhasil (gambar 23).

gambar 23

Didapatkan flag user.

Privilege Escalation

Kita lihat daftar privilege yang kita miliki dan menemukan bahwa kita bisa menjalankan “/opt/scripts/access_backup.sh” (gambar 24).

gambar 24

Setelah melihat file access_backup.sh tersebut, kita ketahui bahwa file .sh tersebut melakukan sebuah backup data dengan melakukan mengkompres file tersebut menggunakan gzip. Setelah beberapa pencarian, akhirnya saya menemukan cara untuk melakukan reverse shell sebagai root.

Kita bisa membuat sebuah aplikasi “gzip” palsu yang bertugas untuk melakukan reverse shell. Kita buat sebuah file bernama gzip dan mengisinya dengan reverse shell script.

Pertama-tama, saya membuat sebuah file bernama gzip dan mengisinya dengan script dibawah ini menggunakan nano (gambar 25).

Kemudian saya membuat agar gzip dapat dieksekusi oleh semua user dengan menggunakan command “chmod +x gzip” (gambar 25).

gambar 25

Setelah itu, saya memasukkan folder di mana saya membuat file gzip tersebut kedalam $PATH, sehingga ketika komputer mencari keberadaan aplikasi gzip, komputer akan melakukan pengecekan pada setiap direktori pada $PATH hingga menemukan sebuah aplikasi yang dimaksud. Ketika aplikasi tersebut ditemukan, maka komputer akan mengeksekusinya.

Kita tambahkan direktori berisi gzip kita kedalam $PATH menggunakan perintah “export PATH=/home/m4lwhere:$PATH” (gambar 26).

Setelah itu, kita buka sebuah listener menggunakan netcat dan menjalankan “sudo /opt/scripts/access_backup.sh” (gambar 26).

gambar 26

Kita dapatkan reverse shell sebagai root dan flag root(gambar 27).

gambar 27

Leave a Reply

Your email address will not be published. Required fields are marked *