Siber güvenlik dünyasında binlerce kilitli kapı, aşılmaz güvenlik duvarları ve milyon dolarlık yazılımlar var. Ancak bazen en büyük ve güçlü kalelerin duvarları sadece bir noktalı virgül ya da görünmez bir yeni satır karakteriyle yerle bir oluyor.

Güvenin Bedeli

Bir web uygulaması düşünelim. Kullanıcıdan IP adresi alıyor, ping atıyor. Basit, kullanışlı, tehlikesiz görünüyor.

Arka planda çalışan kod:

``` 
$ip = $_GET [ 'ip' ]; 
system ( "ping -c 4 " . $ip ); 
```

Normal kullanıcı `192.168.1.1` yazar, sistem ping atar. Sorun yok.

Ama saldırgan şunu yazarsa:

192.168.1.1; cat /etc/passwd

Sistem önce ping atar. Ardından hassas bir dosyayı okur ve ekrana basar. Tek bir noktalı virgül, iki dünya arasındaki geçit olur.

İşte komut enjeksiyonu budur. Uygulama, kullanıcının "sadece IP adresi" girdiğini varsayar. Kontrol etmez, sorgulamaz. Her şeyi olduğu gibi sisteme gönderir. Sistem de sorgulamadan çalıştırır.

Karakterlerin Gücü

Shell'de komutları birleştirmek için kullanılan her karakter, saldırganların elinde bir silaha dönüşebilir.

; (Noktalı Virgül) - Birinci komut bittikten sonra ikinci komutu çalıştır:

ping 127.0.0.1; whoami

Önce ping atar, sonra kullanıcı adını gösterir.

&& (Mantıksal VE) - Birinci başarılıysa ikinci komutu çalıştır:

ping 192.168.1.1 && cat /etc/shadow

Ping başarılıysa ardından hemen şifre dosyasını okur. /etc/shadow dosyası, sistemdeki tüm kullanıcı şifrelerinin hash'lerini tutar. Saldırgan bu dosyayı okuyabiliyorsa, sistem artık onundur.

|| (Mantıksal VEYA) - Birinci başarısızsa ikinci komutu çalıştır

ping 999.999.999.999 || rm -rf /var/www

Ping başarısızsa web sitesini siler.

%0a (Yeni Satır) - Filtrelerin gözünden kaçan karakter

ip=192.168.1.1%0acat /etc/passwd

Birçok güvenlik filtresi noktalı virgülü, & işaretini engeller. Ama %0a karakterini görünmez kabul eder. URL decode edildiğinde:

192.168.1.1 
cat /etc/passwd

İki satır, iki komut. Filtre atlatıldı.

Görünmeyen Tehdit: Blind Command Injection

Her saldırıda sonuç ekrana gelmez. Bazen saldırgan komutun çıktısını göremez ama yine de sistemin kontrol altında olduğunu anlayabilir.

Zamana dayalı test:

`` ` 
127.0.0.1; sleep 10 
` ``

Eğer yanıt 10 saniye geç geliyorsa, komut çalışmış demektir.

Dışarıya veri gönderme: Saldırgan kendi sunucusuna veri gönderen bir komut yazar. Hassas dosyayı okur, kendi sunucusuna iletir. Sistem sessizce sızdırılır, kimse fark etmez.

Bu yöntem özellikle tehlikelidir çünkü sistem loglarında bile tespit edilmesi zordur.

Milyarlarca Dolarlık Hatalar

Equifax: 147 Milyon İnsan, Bir Zafiyet

2017 yılında Equifax, tarihin en büyük veri ihlallerinden birini yaşadı. Apache Struts çerçevesindeki bir kod çalıştırma zafiyeti kullanıldı.

Saldırganlar, bir web formunun Content-Type başlığına zararlı kod enjekte ettiler. Sistem bunu sorgulamadan çalıştırdı.

147,9 milyon Amerikalı:

  • Sosyal güvenlik numaraları
  • Doğum tarihleri
  • Adresler
  • Kredi kartı bilgileri

Hepsi çalındı.

Equifax, ihlali 76 gün boyunca fark edemedi. Bu süre zarfında saldırganlar 30'dan fazla farklı sunucuya erişim sağladı, sistemde rahatça dolaştılar. ABD sızıntıdan 3 sene sonra Çin hükümetini Equifax'a sızmak ve ticari sırları çalmanın yanı sıra hassas verileri yağmalamakla suçladı.

Sonuç: 700 milyon dolar tazminat, CEO istifa etti, hisse değeri %35 düştü. Çalınan veriler bugün hala darkweb'de satılıyor.

Capital One: 106 Milyon Kayıt

2019'da Capital One, bir bulut sunucusundaki yanlış yapılandırma ve komut enjeksiyonu kombinasyonuyla vuruldu.

Eski bir AWS çalışanı olan Paige Thompson, web uygulamasındaki bir güvenlik açığından yararlandı. Komut enjeksiyonu kullanarak AWS meta-data servisinden geçici erişim anahtarlarını çaldı.

106 milyon kredi kartı başvurusunun bilgileri sızdırıldı:

  • 140.000 sosyal güvenlik numarası
  • 80.000 banka hesap numarası
  • Kredi skorları, gelir beyanları, adresler

Capital One'a 80 milyon dolar ceza kesildi. Müşterilere tazminat olarak 190 milyon dolar ödendi. Paige Thompson yakalandı ve federal mahkemede yargılandı. Ancak veriler asla geri gelmedi.

Kaynaklar

1. EPIC — Equifax Veri İhlali Arşivi https://archive.epic.org/privacy/data-breach/equifax/ 2. Insider Security — Capital One Veri İhlali Analizi https://insidersecurity.co/capitalone-data-breach-how-ssrf-vulnerability-exposed-100-million-customer-records/ 3. ABD Hükümeti Hesap Verebilirlik Ofisi — Equifax Raporu (2018) https://www.gao.gov/products/gao-18-559 4. OWASP — Komut Enjeksiyonu https://owasp.org/www-community/attacks/Command_Injection 5. Ulusal Güvenlik Açığı Veritabanı — Apache Struts CVE-2017–5638 https://nvd.nist.gov/vuln/detail/ CVE-2017–5638

Capital One'a 80 milyon dolar ceza kesildi. Müşterilere tazminat olarak 190 milyon dolar ödendi. Paige Thompson yakalandı ve yargılandı.

Ancak veriler asla geri gelmedi.

Ping başarılıysa şifre dosyasını okur.