Webmaster Araçları
Webmaster Araçları platformumuz nihayet yayında! Dijital dünyadaki işlerinizi kolaylaştıracak ve projelerinize hız katacak tüm pratik çözümleri artık tek bir adreste topladık. En sık kullanılan popüler sistemlerden alan adı sorgulama, IP tespiti ve Whois kayıtları gibi domain araçlarına kadar aradığınız her şey hazır. Ayrıca sıra bulucu, index kontrolü ve SEO asistanları barındıran Google araçları ile site hız testi, altyapı kontrolü sunan site araçlarını da kullanabilirsiniz. Bunların yanı sıra backlink analizi ile kırık link tarayıcıları sunan link araçları, DNS ve hosting durum kontrolü yapabileceğiniz sunucu araçları da sistemde yer alıyor. MD5, Base64 ve SHA şifreleme ile decode/encode işlemlerini yapabileceğiniz şifreleme araçları, güvenli şifre üretici, Meta Tag, Sitemap ve Robots.txt oluşturucular da hizmetinizde. Anahtar kelime yoğunluğu ölçer ve karakter sayacı gibi kelime araçları ile işinize yarayacak diğer tüm webmaster araçlarını hemen keşfetmeye başlayabilirsiniz.
Discussion

SQL'de Shell Komutlarından Korunma Yolları

Started by İMRAN · 07 Jul 2025 14:23 · 146 Views · 0 Replies
Thread Starter #0


SQL tabanlı veritabanları (özellikle MySQL ve MSSQL), kötü amaçlı kullanıcılar tarafından sunucularda shell komutları çalıştırmak amacıyla hedef alınabilir. Özellikle xp_cmdshell, LOAD_FILE, INTO OUTFILE, sys_eval gibi fonksiyonlar kullanılarak sistem düzeyinde işlemler yapılabilir.
Bu yüzden SQL seviyesinde shell komutlarına karşı koruma şarttır. Peki nasıl?




⚠️ SQL'de Kullanılan Tehlikeli Shell Komutları Nelerdir?


Bazı SQL komutları veya fonksiyonlar, sistemdeki dosyalara erişim sağlar ya da shell komutlarını çalıştırabilir:


MSSQL Örnekleri:


  • xp_cmdshell 'dir C:\'
  • sp_configure 'show advanced options', 1
  • EXEC master.dbo.xp_cmdshell 'powershell ...'

MySQL Örnekleri:


  • SELECT LOAD_FILE('/etc/passwd');
  • SELECT ... INTO OUTFILE '/var/www/html/shell.php';
  • sys_eval() (MariaDB'de 3rd party olarak yüklenebilir)

Bu komutlar kullanılarak sunucuya shell yüklenebilir, dosyalar görüntülenebilir veya sistem ele geçirilebilir.




✅ SQL'de Shell Komutlarına Karşı Korunma Yolları


1. 🔧 Tehlikeli Fonksiyonları Devre Dışı Bırakın


MSSQL:


CODE
12345-- xp_cmdshell'i tamamen devre dışı bırakın
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;


MySQL:


  • secure_file_priv parametresini sadece belirli dizinlere sınırlandırın:

CODE
1secure_file_priv="/var/lib/mysql-files/"


  • LOAD_FILE() ve INTO OUTFILE gibi fonksiyonların kullanımına dikkat edin. Uygulama seviyesinde filtrelenmelidir.



2. 🧱 Uygulama Katmanında Girdi Doğrulama (Input Validation)


SQL enjeksiyon (SQLi) saldırıları aracılığıyla shell komutlarına ulaşılır. Bu yüzden:


  • Hazır sorgular (prepared statements) kullanın
  • Kullanıcı girdisini sanitize edin (örneğin ', ;, -- gibi karakterleri temizleyin)
  • Sadece beklenen verileri kabul edin (örnek: regex ile e-posta, ID vs.)



3. 🧍 Yetkilendirme ve Hak Sınırlandırması


  • Veritabanı kullanıcılarına minimum yetkiler verin.
  • Shell veya dosya sistemine erişim gereken işlemler sadece belirli rollerle yapılmalı.
  • GRANT FILE, GRANT EXECUTE gibi izinleri sınırlayın.



4. 🗂️ Web Dizini Dışında OUTFILE Kullanımını Yasaklayın


MySQL'de şu komutla PHP shell yüklenebilir:

SQL
1SELECT "<?php system($_GET['cmd']); ?>" INTO OUTFILE "/var/www/html/shell.php";


Bu nedenle:
  • Web sunucusu dizinlerini yazılabilir yapmayın
  • secure_file_priv ile yazılabilir dizini kontrol edin
  • INTO OUTFILE kullanımını denetleyin

5. 🔍 Kayıt ve İzleme (Logging & Monitoring)

  • Veritabanı loglarını etkinleştirin (örneğin general_log, slow_query_log, audit log)
  • Tehlikeli anahtar kelimeleri izleyin (xp_cmdshell, outfile, load_file)
  • WAF ve SIEM sistemleri ile entegrasyon sağlayın

6. 🧪 Penetrasyon Testleri Yapın

  • sqlmap gibi araçlarla test ederek shell komutlarının çalıştırılıp çalıştırılamayacağını tespit edin.
  • Dışarıdan erişilebilen tüm formlar, API'ler ve admin panelleri taratılmalıdır.

📌 Ekstra Güvenlik Katmanları

  • UFW veya iptables ile 3306 gibi SQL portlarını dışa kapatın
  • Web sunucusunu ve veritabanını ayrı makinelerde çalıştırın
  • PHP, Apache ve MySQL sürümlerini güncel tutun
  • Disable_functions listesine exec, shell_exec, system, popen gibi PHP komutlarını ekleyin

You must be logged in to reply.

0 quotes selected