# Web Hacking 101 Serisi ~ Command Injection #

blink1337dagger

Kadim Üye
7 Kas 2011
5,259
41
Chicago İL
oqk18ir.png

~Tanım~

Command injection, kötü niyetli bir saldırganın, bir web uygulaması veya başka bir bilgisayar programının hatalı veya güvenliksiz bir şekilde yazılmış giriş kontrollerini kullanarak hedef sistemde komut çalıştırmasına izin veren bir güvenlik açığıdır.
Bu tür bir saldırıda, saldırgan uygulamaya normal bir kullanıcı gibi girer ve özel karakterler veya kodlar kullanarak uygulamayı aldatır. Bu, saldırganın uygulamayı istediği şekilde yönlendirmesine ve hedef sistemde kötü amaçlı kod çalıştırmasına neden olabilir.
Örneğin, bir web uygulaması, kullanıcının arama sorgusu olarak girilen metni bir komut olarak yorumlayarak sonuçları gösterir. Saldırgan, bu giriş alanına bir komut enjekte ederek hedef sistemi etkileyebilir. Bu, saldırganın kötü amaçlı kodları yürütmesine ve hedef sistemde önemli veri kaybına veya diğer zararlara neden olmasına neden olabilir.
Yani enjekte ettiğimiz komutun sistemdeki bir terminal de çalışması gerekir.

~Uygulama~

rrkutsf.jpg

Labımıza geldiğimiz de bizi bir ping atma sayfası karşılıyor. ilk önce normal bir ping atalım.
d2h6myy.jpg

Görüldüğü üzere başarılı bir şekilde çalışıyor.
Şimdi sistemimizde zafiyet var mı diye komutumuzun sonuna herhangi bir payload ekleyerek sistemde komut çalıştırabiliyor muyuz bunu test edelim. Yazacağımız payloadların genel çalışma mantığı ise x komutundan sonra y komutunu çalıştır şeklinde ilerliyor.
Bazı örnek payloadlar.
Windows için;
| dir
; dir
$(`dir`)
& dir

Linux için;
;id;
|id
$;/usr/bin/id
$(`cat /etc/passwd`)
&&id

Yukarıdaki payloadlardan birini kopyalıyorum.
k8stl46.jpg

ve tekrar ping attırıyorum.
o34k0ud.jpg

Görüldüğü gibi bu sefer "|" payloadı sayesinde sistemimizde bulunduğumuz dizinde hangi dosyalar var bunları görebildik demek ki burada os command injection zafiyeti var. Os command injection zafiyeti çok tehlikeli bir zafiyet olduğundan dolayı dışarıdan bir dosya çekebiliriz.
Şimdi ise "İndex Basmak" olarak tabir ettiğimiz olayı gerçekleştirmek için '8.8.8.8 | echo "Hacked By P4$A" > owned.html' burada ekrana yazdırdığım komutu bir dosyanın içine kayıt edip zafiyetimi sömürüyorum.
jachu1i.jpg

Burp ile araya girip yolladığım isteği gösterdim. Şimdi bakalım index yemiş mi sayfamız;
be65ajc.jpg

Görüldüğü gibi owned.html dosyamızı istediğimizi yazdırmış olduk, isteyen shell de yazdırabilir istediğini yapar.

~Zafiyetin Oluştuğu Yer~

k54reyb.jpg

index.php dosyamızda form aracılığı ile post methodu ile kullanıcıdan bir değer alınmış bunu value olarak ping e yansıtmış ve bunun işleneceği yer olarak ci.php dosyasını göstermiş şimdi ci.php dosyasına bakalım.
9szv8ab.jpg

Burayı da yorumlamak gerekir ise bir ip değişkeni oluşturulup index.php den ismi ip olarak gönderilen değişkene atama yapılmış daha sonra find değişkenini shell_exec fonsiyonun içinde ping atma işlemin de kullanılıp ekrana yazdırılmış, shell_exec komutu isminden de anlaşılabileceği üzere bir shell yani terminal üzerinde komut çalıştırmaya yarıyor burada zafiyetin oluşmasının sebebi ise 2 türlüdür.
1- Kullanıcıdan alınan ip direk filtrelemeden geçirilmemeliydi.
2- Direk ekrana yansıtıyorsak shell_exec komutunu "htmlspecialchars(shell_exec('ping ' .$ip));" gibi kullanarak filtreleseydik herhangi bir özel karakter çalışmayacağından zafiyet kaynaklanmayacaktı.
Kaynak Kodlarını Olabildiğince Göstermeye Devam Edeceğim.

Okuduğunuz İçin Teşekkürler
Tarih pes edenleri değil mücadele edenleri de yazar.
eline sağlık ancak yanlış bir bilgi var htmlspecialchars burada etkili şekilde çalışmaz çünkü | "pipe" karakterini filtrelemez | işareti ile hala kaçış mümkün olacaktır.

Bunun yerine filter_var() ve escapeshellarg kullanmak en uygun yöntemlerdendir.

specialchars: "!@#$%^&*()}{\'\"|?><`~}";
htmlspecialchars : !@#$%^&amp;*()}{\'&quot;|?&gt;&lt;`~}
 

By muradQ

Üye
3 Eki 2019
154
111
canada
Çok güzel bir anlatım olmuş eline emeğine sağlık. Son olarak htmlspecialchars da () / \ ‘ işaretlerini encode etmez. bu da komut içerisinde işlem yapma olanağı sağlar. Kaçış noktalarını htmlspecialchars da bypass edebilirsen zararlı komutları enjekte edebilirsin.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.