Disclaimer: Praktik ini dilakukan pada target yang sudah diizinkan untuk diretas seperti vulnlab atau laboratorium/virtual machine yang berasal dari Vulnhub. Bertujuan untuk edukasi semata.
Kita pakai nmap dengan -sC (script scanning) dan -p- (semua port) untuk permulaan
nmap -sC -p- 192.168.1.11 -T5
Output:
Ok, ternyata port 21 (ftp), 22 (ssh) dan 80 (http/web) terbuka cuy. Coba kita lihat webnya dengan buka chrome lalu search "http://(IP nya)"
Page:
Saya sudah cek source code nya dan tidak menunjukkan apa-apa, yaudah deh saya pakai dirsearch buat direktori enumeration. Saya pakai wordlists dari Seclists medium web, kalau mau lihat bisa KESINI.
Nah ada direktori hidden_text tuh, coba kita buka.
Page:
Bentar kok kata "Thank You" nya seperti link gitu. Pas dipencet ternyata adalah link yang mengarah ke file gambar yang mirip dengan QR Code.
2. Analisis gambar/Steganografi
File/Image:
Saya pakai QR code scanner online aja biar cepet.
Output:
3. Akses Shell (1).
Ok, logikanya kalau kita bisa login FTP ke sistem yang berbasis Linux. Ada kemungkinan Kredensial login kita bisa digunakan pada SSH + kita pakai python -c untuk menggunakan pty buat mengubah shell kita agar nanti kalau mau apa bisa enak, pakai /bin/bash aja biar lebih stabil.
btw, pas saya lihat lebih dalam lagi. Ada direktori "files" yang berisi dua file yaitu information.txt dan p_lists.txt. Coba kita lihat information.txt nya.
Output:
Ada pesan bahwa user dengan nama "robin" disuruh untuk memilih antara password disuatu list yang dimana, adalah file bernama "p_lists.txt". Kita copy paste isi filenya lalu taruh di file kita lalu langsung brute force user "robin" pakai hydra.
hydra -l robin -P p_lists.txt ssh://(IP nya) -t 4
Output:
Kita keluar dari userftp dan langsung ssh ke user robin-nya pakai "ssh robin@(IP-nya)".
4. Akses Shell (2).
Ok, ada 2 file lagi nih. "user1.txt" yang merupakan flag pertama kita. Dan feedback.sh. Bentar coba kita otak-atik dengan "sudo -l" untuk sedikit melihat config sudo antar user-nya.
Hmm? kita bisa menggunakan user "jerry" untuk mengeksekusi "feedback.sh" dan file tersebut ternyata
vuln dari kata "$feedback 2>/dev/null" coy. Yang artinya bisa kita gunakan untuk mengeksekusi suatu command dengan atas nama user "jerry"
Coba kita pakai command "id" untuk sedikit melihat informasi akan user yang kita gunakan saat ini.
Hmm? docker? coba kita pakai payload privilege escalation with docker untuk mendapat root.
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
# penjelasan:
docker run --> buat jalanin kontainer baru.
-v /:/mnt --> buat memasang direktori host dari '/'yang merupakan root ke '/mnt' pada kontainer.
--rm --> otomatis menghapus kontainer setelah selesai.
-it --> perpaduan antara terminal, shell interaktif.
alpine --> nama gambar docker untuk container.
chroot /mnt sh --> mengubah direktori root ke /mnt dan memulai shell.
Execute:
6. Penutup praktik
Nah udah deh, disini kita bisa melakukan apa aja. Deface atau segala macem.
Sebelum:
Sesudah:
7. Kesimpulan
walau ini vulnlab yang dimana semua kerentanan ada yang disengaja, kita bisa mengambil kesimpulan bahwa untuk meningkatkan keamanan agar tidak terjadi seperti ini bisa dengan cara:
1. Usahakan jangan buat file password list biar gak di crack, kirim langsung aja ke orangnya.
2. Pastikan pengaturan user-nya aman
3. Jangan pakai ftp karena lebih mudah dibaca (plain text).
Disclaimer: Post ini hanya bertujuan untuk edukasi dengan tema meningkatkan prinsip keamanan CIA Triad ke 1 (Kerahasiaan).
Jujur ini adalah hal yang basic tapi penting banget kalau kalian semisalnya menaruh file penting dalam website kalian yang dibutuhkan seperti config, .htaccess, dan lainnya yang sensitif. Ini sebenarnya bukan kerentanan sih. Hanya saja bisa jadi jembatan penyerang untuk mencari kerentanan lainnya. Hal ini sering ditemukan pada website CBT, website kecil-kecilan, dan website yang kurang diperhatikan
Semisalnya ada suatu website yang menyimpan file rahasia yang ada di /var/www/html atau tempat dimana file index website tersebut ditaruh.
contoh website:
Nah penyerang bisa aja nyari hal yang disembunyikan lewat gambarnya.
Contoh:
ternyata gambar tersebut tersimpan pada suatu direktori "img/" dengan nama file "boci.jpg", coba kita bedah lebih lanjut ke direktori tersebut dengan mengganti "/img/boci.jpg" menjadi "/img" saja.
Nah ada file "secret.html" tuh, coba kita buka.
Ok jadi gimana cara membuat file kita lebih aman? Dalam Linux ada yang namanya "chmod" untuk mengatur izin baca, tulis/edit, dan execute/run. Ketika kita mengakses suatu web apache, kita hampir mirip dengan user www-data dalam mengakses file. User ini dibuat agar ketika penyerang berhasil mendapat akses shell ke web tersebut, dia hanya menjadi user www-data yang memiliki akses terbatas yang lebih dominan ke arah baca saja. Otomatis kita penyerang bisa baca nih file yang sensitif dan gimana cara membuat penyerang atau orang yang tidak memiliki hak tidak bisa membaca file tersebut?
# untuk menghapus izin baca pada user lain (others) pada semua isi direktori + direktorinya (pengunjung web termasuk)
chmod u-rw -R (direktori yang ingin disembunyikan). atau
chmod u-rw (file) untum file tertentu
# Jangan pakai command yang pertama kalau kalian pakai ke file/direktori yang perlu diakses
Kalau kita jalankan command di atas maka pengunjung/penyerang web tidak bisa melihat file tersebut.
Sebelum pakai command chmod:
Page:
Sesudah:
Page:
Gimana? mudah kan? + direktori "/img" juga tidak bisa diakses oleh pengunjung/penyerang web. Kebanyakan web yang menggunakan cara ini juga lupa untuk menghapus akses baca pada suatu file dalam direktori, jadi walau direktorinya gak bisa kita baca. Kita masih bisa lihat file didalamnya.