SQL Enjeksiyonu ve Komut Enjeksiyonu
Saldırganların veritabanı sorgularını veya OS komutlarını değiştiren enjeksiyon yüklerini nasıl hazırladığını ve parametreli sorgularla girdi doğrulamanın bunları nasıl önlediğini öğrenin.
SQL Enjeksiyonu ve Komut Enjeksiyonu, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
SQL Injection Nedir
SQL injection (SQLi), bir saldırganın daha sonra bir veritabanı query'sine aktarılan input alanına kötü amaçlı SQL kodu eklemesi veya “enjekte etmesi” durumunda ortaya çıkar. Uygulama, User input'unu doğrudan bir SQL ifadesine birleştirdiği için veritabanı meşru verilerle saldırgan tarafından sağlanan Commands arasında ayrım yapamaz. SQLi, OWASP Top 10'da sürekli olarak en tehlikeli web Vulnerabilities'lerinden biri olarak yer alır.
Klasik SQLi Payload Örneği
Vulnerable bir giriş query'si şöyle görünebilir: SELECT * FROM users WHERE username='INPUT' AND password='INPUT'. Kullanıcı adı olarak ' OR '1'='1 sağlayan bir saldırgan, query'yi dönüştürerek WHERE koşulunun her zaman doğru olmasını ve kimlik doğrulamanın tamamen aşılmasını sağlar. Bu, klasik totoloji tabanlı injection yöntemidir.
-- Vulnerable query (DO NOT use in production)
SELECT * FROM users
WHERE username = '' OR '1'='1'
AND password = 'anything';
-- Returns ALL rows — auth bypassedSQL Injection Türleri
SQL injection saldırıları çeşitli biçimlerde gerçekleşir: In-band SQLi, sonuçları doğrudan HTTP yanıtında döndürür (error tabanlı veya union tabanlı). Blind SQLi, verileri Boolean doğru/yanlış yanıtları veya kasıtlı zaman gecikmeleri (SLEEP(5)) üzerinden çıkarır. Out-of-band SQLi, yanıtların görünür olmadığı durumlarda verileri dışarı aktarmak için DNS aramaları gibi ikincil kanalları kullanır.
-- Time-based blind SQLi example
SELECT * FROM users
WHERE id = '1' AND SLEEP(5)--';
-- If response is delayed 5s, injection succeededSQLi'yi Önleme: Parametreli Query'ler
SQL injection'a karşı birincil savunma parametreli query'lerdir (hazırlanmış ifadeler olarak da adlandırılır). Parametreli bir query'de SQL yapısı önce derlenir ve User input'u ayrı bir parametre olarak aktarılır; input hiçbir zaman query yapısını değiştiremez. Bu yaklaşım dilden bağımsızdır ve tek başına input temizlemeden çok daha güvenilirdir.
# Python example — parameterized query (safe)
import sqlite3
conn = sqlite3.connect('app.db')
cursor = conn.cursor()
username = 'admin'
password = 'secret'
cursor.execute(
'SELECT * FROM users WHERE username=? AND password=?',
(username, password) # parameters, never concatenated
)Savunma Derinliği Olarak Input Doğrulama
Parametreli query'ler birincil savunma olsa da input doğrulama önemli bir ikincil katman sağlar. Allowlist doğrulaması yalnızca beklenen karakterleri kabul eder (örneğin bir kullanıcı adı alanında yalnızca alfasayısal karakterler) ve diğer her şeyi reddeder. Denylist doğrulaması bilinen kötü karakterleri engeller, ancak saldırganlar denylist'leri aşmak için Payload'ları sıklıkla kodlar veya gizler; bu nedenle allowlist'ler çok daha güçlüdür.
Command Injection Nedir
Command injection (OS command injection), bir uygulamanın temizlenmemiş User input'unu bir System shell'ine aktarması durumunda ortaya çıkar. Veritabanlarını hedefleyen SQL injection'ın aksine command injection doğrudan işletim System'ini hedefler; saldırganlara web sunucusu sürecinin Privileges'larıyla rastgele Commands çalıştırma olanağı verir. Critical önem derecesinde değerlendirilir ve sıklıkla System'in tamamen ele geçirilmesine yol açar.
Command Injection Örneği
User tarafından sağlanan bir IP adresine ping atan bir web uygulaması şunu kullanabilir: ping -c 1 INPUT. Bir saldırgan 8.8.8.8; cat /etc/passwd sağlarsa shell, ; karakterini bir command ayırıcısı olarak yorumlar ve her iki command'i çalıştırır. Yaygın injection operatörleri arasında ;, &&, ||, | ve backtick command substitution bulunur.
# Vulnerable Python (subprocess with shell=True)
import subprocess
user_ip = '8.8.8.8; cat /etc/passwd' # attacker input
subprocess.run('ping -c 1 ' + user_ip, shell=True)
# Safe alternative — avoid shell=True, pass args as list
subprocess.run(['ping', '-c', '1', '8.8.8.8'])Command Injection'ı Önleme
Command injection'a karşı en güvenli savunma, User input'undan OS Commands çağırmaktan tamamen kaçınmaktır; aynı amacı gerçekleştiren kütüphane işlevlerini kullanın. Shell çağrıları kaçınılmaz olduğunda, bağımsız değişkenleri bir liste olarak aktarın (asla birleştirilmiş bir dize olarak değil), shell yorumlamasını devre dışı bırakın, input'u katı bir allowlist'e göre doğrulayın ve süreçleri mümkün olan en az Privileges'a sahip User hesabıyla çalıştırın.
OWASP Bağlamı: İlk 10'da Injection
OWASP İlk 10 listesi, Injection'ı (SQL, NoSQL, OS ve LDAP injection'larını kapsar) en kritik uygulama Security risklerinden biri olarak sıralar. OWASP, çok katmanlı bir Defense yaklaşımı önerir: yorumlayıcıyı devre dışı bırakan Safe API'ler kullanın, Server tarafında olumlu (izin listesi) input doğrulaması yapın, özel karakterleri söz konusu yorumlayıcıya özgü söz dizimini kullanarak kaçışlayın ve toplu veri ifşasını önlemek için LIMIT gibi SQL denetimlerinden yararlanın.
Tespit: WAF'ler ve Kayıt Tutma
Bir Web Application Firewall (WAF), HTTP isteklerini imza pattern'larına göre inceleyerek yaygın injection yüklerini tespit edip engelleyebilir. Ancak WAF'ler kodlamaya dayalı hilelerle atlatılabilir ve güvenli kodlamanın yerini tutmaz. Uygun uygulama kayıtları — sorgu parametrelerini, yanıt kodlarını ve error mesajlarını kaydetmek — Security ekiplerinin olay incelemesi sırasında injection girişimlerini belirlemesini sağlar.
Injection Saldırılarının Gerçek Dünyadaki Etkisi
Injection saldırıları, tarihteki en büyük veri ihlallerinden bazılarına yol açmıştır. 2017'deki Equifax ihlali, bir web uygulaması açığı aracılığıyla 147 milyon kaydı açığa çıkardı. 2011'de Sony PlayStation Network'e yönelik SQL injection saldırısı 77 milyon hesabı tehlikeye attı. Bu olaylar, injection açıklarının işletmeler üzerinde son derece ağır etkileri olduğunu gösterir: başarılı bir injection saldırısının ardından veri hırsızlığı, düzenleyici kurumların para cezaları, itibar kaybı ve hukuki sorumluluk ortaya çıkar.
Kısa Kontrol
Bu derste işlenen CompTIA Security+ (SY0-701) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: SQL injection, temizlenmemiş input'un veritabanı sorgularına birleştirilmesini istismar eder, command injection, ; ve | gibi işleçler aracılığıyla Malicious input'u OS kabuğuna aktarır ve parametreli sorgular ile shell=True kullanmaktan kaçınmak temel Defense yöntemleridir. Sırada Cross-Site Scripting (XSS) ve CSRF saldırılarını inceleyeceğiz.
Sıkça Sorulan Sorular
“SQL Enjeksiyonu ve Komut Enjeksiyonu” dersi ücretsiz mi?
Evet — “SQL Enjeksiyonu ve Komut Enjeksiyonu” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
“SQL Enjeksiyonu ve Komut Enjeksiyonu” dersinde ne öğreneceğim?
Saldırganların veritabanı sorgularını veya OS komutlarını değiştiren enjeksiyon yüklerini nasıl hazırladığını ve parametreli sorgularla girdi doğrulamanın bunları nasıl önlediğini öğrenin. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“SQL Enjeksiyonu ve Komut Enjeksiyonu” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- SQL Enjeksiyonu ve Komut Enjeksiyonu
- Siteler Arası Komut Dosyası Çalıştırma (XSS) ve CSRF
- Bozuk Kimlik Doğrulama ve Güvenli Olmayan Serileştirme Açma
- Güvenli SDLC, SAST ve DAST Araçları