Command Injection Nedir
Uygulama Üzerinden Sistem Komutları Çalıştırma Tehlikesi
“Bir uygulamaya komut vermek, anahtarı doğrudan çekmeceye bırakmaktır.”
— Ersan Karavelioğlu
Command Injection Nedir
Command Injection, kullanıcıdan alınan girdilerin yeterince filtrelenmeden
işletim sistemi komutlarıyla birlikte çalıştırılması sonucu ortaya çıkan kritik bir güvenlik açığıdır.

Uygulama konuşur;

Sistem dinler ve uygular.
Neden Bu Kadar Yıkıcıdır

Çünkü hedef
uygulama değil, işletim sistemidir.

Dosya okuma, silme, kullanıcı ekleme mümkündür.

Sonuç, tam sunucu kontrolüne kadar gider.
Command Injection Nasıl Oluşur

Uygulama bir komut çağırır (ör. ping, convert, ffmpeg).

Kullanıcı girdisi doğrudan komuta eklenir.

Ayraçlar (;, &&, |) ile komut zinciri kırılır.
Basit Bir Mantık Örneği

Beklenen: ping example.com

Saldırı: example.com; cat /etc/passwd

İlk komut çalışır, ikincisi
arka kapıdan yürür.
En Sık Görüldüğü Alanlar

Sistem araçlarını çağıran özellikler

Dosya dönüştürme/işleme

Network testleri

“Kullanışlı” fonksiyonlar risklidir.
OS Command Injection vs SQL Injection

SQL Injection → Veritabanı

Command Injection → İşletim sistemi

Etki alanı Command Injection’da çok daha geniştir.
Ayraçlar ve Operatörler

; && || | $() `

Bir tanesi bile yeterlidir.

Filtrelenmezse kapı açılır.
Blind Command Injection Nedir

Komut çalışır ama çıktı görünmez.

Etki zaman, DNS, dosya yan etkilerinden anlaşılır.

Tespiti zordur, riski aynıdır.
Yetkiler Neden Belirleyicidir

Uygulama hangi kullanıcıyla çalışıyor?

root ise felaket hızlanır.

En az ayrıcalık burada hayat kurtarır.
Container ve Sandbox Yanılgısı

“Container içindeyiz, sorun yok.”

Yanlış yapılandırma varsa kaçış mümkündür.

İzolasyon
doğru yapılırsa korur.

Neden Hâlâ Yaygındır

Eski kodlar

Legacy script’ler

“Çalışıyor” refleksi güvenliği bastırır.

Input Validation Yeterli mi

Hayır.

Kara liste aşılabilir.

Asıl çözüm
komut çağırmamak ya da güvenli API’lerdir.

Güvenli Alternatifler

OS komutu yerine
yerleşik kütüphane kullanımı

Parametrik API’ler

Shell’e çıkmamak en güvenlisidir.

Escaping Tek Başına Çözüm mü

Hayır.

Yanlış bağlamda escape işe yaramaz.

Bağlam farkındalığı şarttır.

WAF Command Injection’ı Engeller mi

Bazı bilinen payload’ları yakalar.

Blind ve özel kaçışlar geçebilir.

Uygulama içi önlem esastır.

Loglama ve Tespit

Anormal komut desenleri

Beklenmeyen outbound bağlantılar

Erken uyarı, hasarı küçültür.

En Büyük Yanılgı

“Bu alan kimsenin ilgisini çekmez.”

Otomasyon her alanı dener.

Küçük girişler büyük çıkışlar doğurur.

Nasıl Önlenir

Shell çağrılarını kaldır

En az ayrıcalıkla çalıştır

Güvenli kütüphaneler kullan

“Komut” kelimesi alarmdır.

Son Söz
Komut, Güvenlikten Daha Hızlıdır

Command Injection,
uygulamaya verilen yetkinin geri alınamamasıdır.

Bir kez sistem konuşursa, susması zordur.

Güvenli uygulama, sistemi konuşturmaz.
“Sunucuya konuşma izni verdiğinde, ne söyleyeceğini de kontrol etmelisin.”
— Ersan Karavelioğlu