Halo semuanyaa jumpa lagi denganku, jadi pada kesempatan kali ini aku akan membahas WriteUp dari challenge Bhineka Tech mengenai pentesting dan kebetulan tulisan ini dibuat di akhir tahun jadi sekalian sebagai penutup dan juga selamat nataru bagi yang merayakan semoga di tahun 2025 nanti kita menjadi pribadi yang lebih baik lagi dari sebelumnya.

Jadi tanpa berlama lama langsung saja kita baca deskripsi dari challenge

Dari deskripsi yang kita baca, diberikan suatu IP address dan format flag yang dimana kita diharuskan untuk melakukan penetration testing pada server hingga mendapatkan akses root atau melakukan privilege escalation karena flag disimpan pada directory /root

Mulai dengan reconnaissance yakni teknik yang digunakan attacker untuk mengumpulkan informasi tentang target yang akan di serang. Langsung saja menggunakan nmap untuk port discovery

Disini menarik karena ada beberapa port yang terbuka atau service yang running diantaranya ada HTTP, SSH dan DBMS yang menggunakan postgresql dan untuk identifikasi awal kita akan melakukan scanning pada service HTTP

Jika kita buka pada browser, tampilan awal pada website tidak asing yang merupakan default page dari framework codeigniter 4 yang dimodifikasi sedikit dan disini kita akan melakukan directory enumeration yang bertujuan untuk menemukan hidden directory ataupun file yang ada pada server

Menggunakan dirsearch dan menemukan file yang menarik yaitu .env, .env sendiri merupakan file yang berisi konfigurasi utama dan sensitive information pada framework codeigniter 4 yang seharusnya tidak boleh diakses tetapi jika developer melakukan misconfiguration hal ini mengakibatkan file .env dapat diakses yang dimana kerentan ini dikenal dengan Information Disclosure

Kita mendapatkan credential database server dari .env file dan seperti yang kita tahu sebelumnya dari nmap scanning jika port 5432 terbuka atau di expose ke public. karena dbms pada server memakai postgresql jadi disini kita akan memakai psql client untuk connect dan melakukan remote database via CLI(command line interface)

Terlihat kita berhasil login dan masuk pada database db_project dimana terdapat table secret yang menarik perhatian

kemudian menggunakan SQL query yaitu SELECT * FROM secret untuk menampilkan semua data pada table secret, yang sepertinya berisi suatu encrypted text dan terdapat keterangan pada field type_enc dan description yang intinya untuk mendapatkan plaintext kita harus melakukan decrypting dengan type cipher rc4.

langsung saja buat script python sederhana menggunakan module PyCryptodome yang merupakan package pada python yang menangani operasi cryptography atau bisa juga kita memakai openssl sebagai alternatif

Disini kita berhasil melakukan decrypt dari ciphertext yang kita dapatkan dan jika kita lihat terdapat field table dengan nama path_dec yang bisa kita asumsikan merupakan suatu hidden directory pada web application

benar saja jika kita buka dengan menyertakan path /remember/secret_admin/ maka akan muncul HTTP auth, disini kita bisa masukan username dan password hasil dari decrypt rc4

user: bhitech dan pass: arc4_is_fun_encryption

dan jika berhasil terdapat suatu file dengan nama note.txt

Sepertinya merupakan file sensitive / confidential karena terdapat deskripsi singkat tentang SSH dengan username dono pada port 2222, yang dibawahnya string acak dan jika kita lihat lebih detail merupakan suatu private key SSH karena diawali dengan string —–BEGIN OPENSSH PRIVATE KEY—–

jadi disini langsung saja simpan file pada local machine dan kita akan mencoba untuk login SSH pada server dengan methode keypair

Berhasil login dan mendapatkan user dono dan kemudian disini kita akan mencoba melakukan privilege escalation atau meningkatkan hak akses, dan banyak yang stuck di tahap ini karena beberapa orang fokus ke kernel exploitation dimana langsung melakukan exploit pada kernel dan gagal. padahal sebenarnya kernel exploitation itu sangat tidak disarankan karena dapat membuat machine mengalami kernel panic jika exploit tidak tepat dan alangkah baiknya digunakan untuk opsi terakhir jika tidak ada misconfig atau vulnerable lain pada OS.

Disini untuk automation enumeration bisa make linepeas dan ditemukan beberapa hal yang menarik yang bisa kita manfaatkan untuk privilege escalation yaitu terdapat 2 misconfiguration pada SUID binary dan capabilities

Disini linepeas melakukan highlight pada binary yang mempunyai kesalahan konfigurasi yaitu pertama SUID binary yang terdapat pada binary find dan kedua binary yang mempunyai capabilities cap_setuid

Secara sederhana SUID atau set user id merupakan permission yang memungkinkan user lain melakukan eksekusi dengan privilege owner yang memiliki binary tersebut, dalam kasus ini find dimiliki oleh root jadi kita bisa melakukan eksekusi find menggunakan hak akses root lalu kedua capabilities itu merupakan kemampuan yang dimiliki oleh suatu binary dalam kasus kita perl memiliki capabilities cap_setuid=ep artinya binary perl atau process yang menajalankan perl dapat melakukan penggantian uid ke user lain dan dalam linux uid root mempunyai nomor 0 jadi dengan mudah kita bisa melakukan manipulasi UID ke root

jadi disini aku akan mencontohkan bagaimana melakukan privilege escalation dari keduanya

Yaps sangat mudah sekali untuk melakukan privilege escalation dimana disini memanfaatkan misconfig dari kedua binary jadi langsung saja kita baca flag pada directory /root

flag: bhitech{p3ntest1ng_itu_s3ru!}

Container Escape

Sebenarnya disini kita sudah mendapatkan flag dan challenge berakhir tapi ada tambahan sedikit yaitu kemaren salah satu member Bhineka Tech berhasil melakukan Container Escaping dimana attacker bisa keluar dari container dan mendapatkan akses pada main host hal ini sangat berbahaya karena tujuan dibuatkan suatu container untuk melakukan isolated agar host utama tidak terkena compromised

Singkatnya seperti itu, yang pada dasarnya ini sudah diluar dari scope challenge tapi sangat menarik jika kita bahas. jadi pada challenge ini aku sendiri yang melakukan build dan konfigurasi dimana pada saat running container dari docker aku menambahkan flag –privileged untuk keperluan hak akses yang sebenarnya hal ini sangat berbahaya karena kita memberi akses penuh ke container dan menghapus semua batasan security default.

Tekniknya sendiri dengan melakukan mounting filesystem pada host utama ke directory /mnt pada container, karena container dijalankan dengan misconfig –privileged artinya attacker mendapatkan privilege untuk melihat host drive

lsblk untuk melihat block device dan partisi pertama ada di vda1 dengan command mount /dev/vda1 /mnt/filesystem

Terlihat mount berhasil dilakukan dan kita dapat melihat dan modifikasi filesystem pada main host dimana jika kita ingin melakukan escape dan takeover pada main host tinggal kita tambahkan user baru pada file /mnt/filesystem/etc/passwd, karena ini mount point maka akan berpengaruh pada filesystem di main host

Disini kita langsung menambahkan user baru pada passwd file dengan username heker dengan UID 0 atau root beserta password yang digenerate menggunakan openssl dengan string heker123, untuk login ke host utama kita perlu tau port ssh yang digunakan dimana pada hasil nmap scan tadi terdapat 2 SSH port yaitu 22 dan 2222 yang bisa kita asumsikan main host menggunakan port 22 untuk SSH login

Viola, kita berhasil melakukan container escape dan mendapatkan akses ke host utama.

Penutup

challenge ini dibuat dengan tidak memanfaatkan exploit dari CVE/public dimana fokus untuk mendapatkan initial access fokusnya dari misconfiguration jadi untuk yang mengerjakan challenge ini diharapkan untuk lebih memahami attack vector pada saat melakukan pentesting yang dimana misconfiguration itu sangat berbahaya jika dapat dimanfaatkan lebih jauh, dan mungkin itu saja sekian dan selamat tahunn baru semoga bermanfaat 🙂

“Jika itu penting bagi Anda, Anda akan menemukan jalan. Jika tidak, Anda akan menemukan alasan.”Ryan Blair

By xpl0dec

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *