Scanning dengan Nmap, disini kita mendapatkan Port 22 adalah SSH , port 80 HTTP dan 9091 mungkin xmltec-xmlmail (tidak aman, nmap memberi tanda tanya). Untuk saat ini, karena kami tidak memiliki kredensial untuk mengautentikasi terhadap SSH , kami akan berfokus pada mengaudit port 80.
Berkat skrip pengintaian yang diluncurkan oleh nmap , kita dapat melihat bahwa layanan web yang berjalan pada port 80 mengalihkan kita ke domain soccer.htb . Agar mesin kami menyelesaikan domain ini, kami harus menambahkannya ke akhir /etc/hosts kami :
Karena kami tidak menemukan sesuatu yang menarik di http://soccer.htb/, kami akan mencari direktori yang berada di bawah domain mesin korban. Dengan Tools gobuster menggunakan command seperti berikut:
Dari Fuzzing kita mendapatkan directory /tiny bila kita buka directory tersebut akan mendapatkan login panel seperti berikut:
Saat memasuki web, yang kita lihat hanyalah panel login . Karena kami tidak memiliki kredensial, kami dapat menggunakan Google untuk menemukan kredensial default untuk aplikasi ini. Kami menemukan yang berikut: admin:admin@123 . Jika kita menguji mereka, kita akan melihat bahwa mereka benar.
Karena aplikasi ini memungkinkan kita untuk mengunggah file dan web bekerja dengan PHP , kita dapat mencoba mengunggah webshell di PHP dan melalui parameter itu menjalankan perintah untuk kita.
Exploitation
Pada direktori utama kami tidak memiliki izin untuk mengunggah file, tetapi di direktori tiny/uploads kami bisa. Webshell menggunakan source code reverse shell secara langsung sebagai berikut:
Kami meupload file reverse tersebut ke website
Kami memanggil reperse.php kami dan menerima shell terbalik sebagai www-data
Karena kita tahu bahwa nginx digunakan untuk menjalankan situs web, jalur yang menarik untuk melihat pengaturan domain adalah /etc/nginx/sites-avaliable. Setiap file konfigurasi di direktori ini mewakili situs web yang dikonfigurasi di server Nginx. Di dalam direktori ini kami menemukan file bernama soc_player.htb:
Dan disini menambahkan subdomain tersebut bila kita membuka subdomain tersebut mendapatkan tampilan sebagai berikut:
Disini kita mencoba mendaftar akun
Setelah mendaftar kita akan mendapatkan tampilan berikut:
Saat masuk, kami menemukan panel semacam ini. Dia meminta kami untuk nomor. Kami dapat intercept permintaan dengan Burpsuite untuk melihat apa yang sedang diproses di baliknya.
Yang kami intercept adalah sebagai berikut:
WebSockets adalah protokol jaringan yang memungkinkan komunikasi dua arah secara real-time antara klien dan server melalui koneksi TCP. Dalam hal ini, koneksi dibuat terhadap http://soc-player.soccer.htb:9091/ . Ingatlah bahwa pada fase pengenalan kami melihat port ini terbuka, tetapi kami tidak mengetahui 100% layanan yang sedang berjalan.
Kami dapat mengirim permintaan ke Repeater dan mengaburkan input untuk mencari perilaku aneh.
Post Exploitation
Setelah menguji dengan banyak muatan, kami melihat bahwa kolom input rentan terhadap SQLI Blind.
SQL Injection Blind (SQLI Blind) adalah jenis serangan injeksi SQL yang digunakan untuk mengeksploitasi kerentanan dalam aplikasi web. Disebut buta karena penyerang tidak menerima respon langsung dari server akibat serangannya.
Dalam hal ini, jika kita menggunakan payload:
Kita mencoba membaca ifconfig pada server:
Mencari kerentanan kita dapat menemukan artikel berikut rayhan0x01 yang menunjukkan kepada kita cara membuat injeksi sql ke soket web dengan mengarahkan permintaan http ke ws dengan skrip
Kami akan menggunakan skrip tetapi perlu mengubah 2 baris berikut:
Kita menggunakan source code berikut ini untuk mexploit server tersebut:
Sekarang kami menjalankan eksploit untuk mulai mengarahkan ulang permintaan
Sekarang kami menjalankan eksploit untuk mulai mengarahkan ulang permintaan
Dengan sqlmap kami akan menunjuk ke localhost kami, kami mulai menghitung database
Disini kami mendapatkan hasil dump yang didapat dari hasil scan sqlmap
Privileges Escalation
Disini kami menggunakan kredensial yang telah didapat dari hasil dump dari SQLmap dan mencobanya untuk login ke SSH, dan hasilnya kita berhasil login menggunakan kredensial yang telah di dapat.
Mencari binari suid, kami menemukan file doas
Di path /usr/local selain /bin dengan doas suid kita bisa melihat /etc dengan doas.conf
Ini memberi tahu kita bahwa kita dapat menjalankan dstat sebagai root tanpa memberikan kata sandi.
Kami memiliki kemampuan menulis di jalur share/dstat, tempat plugin disimpan
Kami cukup membuat file python yang mengembalikan suid bash dan menjalankannya sebagai plugin