(Remote Command Execution) RCE Nedir ?
RCE( “Uzaktan Komut Yürütme“) kritik bir güvenlik açığıdır. Çok kritiktir çünkü saldırgan sunucuda komut çalıştırabilir.
Bu nedenle CVSS puanı (Ortak Güvenlik Açığı Puanlama Sistemi) 10.00‘dur. (en yüksek puan)
RCE Nasıl Meydana Gelir ?
Ben PHP üzerinden örnek vereceğim.
Bildiğiniz gibi PHP üzerinde komut çalıştırmaya yarayan bazı fonksiyonlar var.
passthru() exec() shell_exec() system() not: daha fazla fonksiyon bulunmaktadır burada bir kısmı yazılmıştır.
Örneğin bulunduğumuz dizini gösteren bir PHP kodu yazalım.
<?php
Çıktı:
$komut="pwd";
echo exec($komut);
?>
/home/user
Normal şartlarda PHP’de bu şekilde komut çalıştırabiliyoruz. Sitenin yazılımında yukarıda ki koda benzer bir kod varsa dikkat edilmeli.
Kullanıcıdan alınan bir verinin komut çalıştırma fonksiyonunda kullanılması RCE açığı meydana getirebilir. Örnek ile bakalım:<?php
if (isset($_POST['metin']) && !empty($_POST['metin'])) {
echo exec("echo isminiz ".$_POST['metin']);
}
?>
<form method="post" action="/index.php">
<input name="metin" id="metin">
<button type="submit" class="isim"><span class="">İsmimi gir</span> <span class="ismini
gir"></span></button>
</form>
Örneğin böyle bir kod var. Kodumuzu çalıştıralım:

Siteye girdiğimizde bizi böyle bir yazı karşılıyor. Bir isim girelim:

Ben ahmet girip “ismimi gir” butonuna bastım. Ekrana “isminiz ahmet” dedi.
Şimdi bir saldırgan gözüyle bakalım.
Koda tekrar bakalım ve görelim.echo exec("echo isminiz ".$_POST['metin']);
Kodumuzda exec fonksiyonu kullanılmış. exec fonksiyonu komut çalıştırırken kullanılan bir fonksiyondur.
Yazılımcı burada isminizi terminal komutuyla yazdırmak istemiş.
Alınan isim değerini “isminiz girilen değer” olarak ekrana bastırıyor.
Girilen isim yerine bir komut yazılırsa ne olacağına bakalım.

pwd yani bulunduğumuz dizini gösteren komutu girdik ve onayladık. Gördüğümüz gibi pwd isim yerine geçti yani hiç bir şey olmadı.
Yazılımcının yazdığı koda tekrar bakalım ve bunu nasıl geçeceğimize bakalım.echo exec("echo isminiz ".$_POST['metin']);
Yazılımcı burada kelimeleri birleştirme işlemi yapmış. “echo isminiz” ile bizim girdiğimiz değeri birleştiriyor.
Biz girdiğimiz değeri ayrı bir komut gibi göstermeyi deneyeceğiz. Bunun için &&
‘i kullanacağız. Bu ne işe yarıyor derseniz “ve” anlamına geliyor.
Yani diğer komuttan ayırabiliriz.

&& pwd
yazarak gönderiyorum:

Evet komut çalıştırmayı başardık. Artık sistemde dilediğimiz komutu çalıştırabiliriz.
Bu anlamanız için basit bir örnektir.
RCE bazen hiç beklenmeyen yerlerde çıkabilmektedir. Çok geniş bir açıktır.
- LFI zafiyeti bazı durumlarda RCE zafiyetine,
- SQL injection zafiyeti bazı durumlarda RCE zafiyetine dönüşebilir.
- OOB zafiyeti bazı durumlarda RCE zafiyetine dönüşebilir.
Bu liste daha da çoğalabilir. İşin özü sisteminizde hiç bir açık bırakmamaya çalışın. Bir açık diğer açığı tetikleyebilir.
RCE Nasıl Önlenir ?
Gelelim şimdi bu tehlikeli zafiyeti önlemenin yollarına.
- Kullandığınız yazılımda komut çalıştırma fonksiyonlarını (
shell_exec, exec
gibi) kullanmayınız. - php.ini düzenlenmesi yaparak komut çalıştırma fonksiyonlarını kapatın.
- WAF kullanın.
- Sunucuzda bulunan diğer açıkları kapatın. Başka açıklar RCE açığını tetikleyebilir.
- Sunucuzu güncel tutun. RCE Exploit çıkabilir daha detaylı bilgi için Exploit Nedir Nasıl Önlenir ? Adlı konumuzu okuyabilirsiniz.
- CMS güvenliği yaptırabilirsiniz. İletişime geçebilirsiniz.
- Sunucu optimizasyonu yaptırabilirsiniz. Zararlı PHP foksiyonlarının kapatılması oldukça önemli. Perl ve CGI’ın kapatılmasında da yarar var.
- Sunucunuzda kurulu yazılımda açık olduğunu tespit ettirmek için pentest yaptırabilirsiniz. İletişime geçebilirsiniz.
- Yazılımınızı güvenli yerlerden temin edin. Warez forumlarından almayın.
- Gereksiz eklenti vs. kurmayınız exploit ve açık çıkma oranı artar.
- Kullanıcıdan alınan verinin kullanıldığı yerlere dikkat edin.
- Kullanıcıdan alınan veriyi filtreden geçirin. “
&&
” gibi şeylerin kullanılmasını engelleyin. - Dosya yükleme alanlarını kontrol edin. Zararlı dosyalar yüklenmesini engelleyin.
RCE Nedir ? Nasıl Önlenir ? Adlı konumuzun sonuna geldik. Okuduğunuz için teşekkürler.
Yorumlar 1