Command Injection DVWA (Low) adlı bu writeup ta Damn Vulnerable Web Application ın odalarında biri olan Command Injection odasının Low seviyesinin çözümü gösterilmektedir.
Deneme yapmak ve sistemin nasıl tepkiler verdiğini anlamak için input alanına rastgele değer deneyerek başlanmıştır.
Sistemin herhangi bir ip yapısına uymayan herhangi bir sayıya ping atabildiği anlaşılmaktadır.
Bu kısımda herhangi bir sayı ya da ip input u verildiğinde o ip ye ping atıldığı ve ‘and’ operatörüyle birlikte başka bir komutun da çalıştığı görülmektedir. Daha ileriye gidilerek sömürü kımını daha derinden ele alınmıştır.
Burada kullanılan payload tamamen sizlerin amaçlarına ve hedeflerine bağlı olup sömürü aşamasını nasıl yönlendireceğinizi belirlemektedir.
Payload 1 : 8.8.8.8 && ls
Payload 2 : 8.8.8.8 && cat /etc/passwd
📋Kaynak Kod Analizi
Command Injection DVWA (Low) da,bu sistemin nasıl çalıştığına dair daha fazla bilgiye ulaşabileceğimiz bir yer olan kaynak kod analizi kısmına gelelim.
‘View Source’ a tıklayarak sayfanın PHP kaynak kodlarını incelemekle başlıyoruz.
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// Feedback for the end user
echo "<pre>{$cmd}</pre>";
}
?>
PHPGelin bu sistemin arka planında neler çalıştığını daha detaylı inceleyelim;
- 3. satırda kullanıcının formu gönderip göndermediğini kontrol edilmektedir. Eğer “Submit” adında bir POST isteği varsa, yani kullanıcı formu doldurup gönderdiyse, bu koşulun içine girilir.
- Ardından kullanıcının girdiği IP adresini
$_REQUEST
dizisi kullanarak alır ve$target
değişkenine kaydeder. - 8. satır, sunucunun işletim sistemini belirlemek ve buna göre
ping
komutunu çalıştırmak için bir ‘if’ bloğu açar ve işletim sistemini belirlemek içinphp_uname('s')
kullanır.- Eğer işletim sistemi “Windows NT” ise, Windows işletim sistemi üzerinde çalışıldığını varsayar ve
$cmd
değişkenine'ping'.$target
komutunu çalıştırarak ping sonuçlarını atar. - Eğer işletim sistemi “Windows NT” değilse (yani, bir Unix benzeri işletim sistemi),
$cmd
değişkenine'ping -c 4'.$target
komutunu çalıştırarak ping sonuçlarını atar.
- Eğer işletim sistemi “Windows NT” ise, Windows işletim sistemi üzerinde çalışıldığını varsayar ve
- Son olarak, elde edilen
ping
sonuçları,<pre>
etiketi içinde ekrana yazdırılır.
Brute Forece Low DVWA Writeup’ıma ulaşmak için buraya tıklayabilirsiniz.
Erkan Çekiç
HacktorX YazarıMerhaba. Henüz çocukluk dönemimde yanmaya başlayan siber güvenlik ateşini lise ve üniversite dönemlerinde de harlayan, zamanının büyük bir bölümünü çalışmak ve bir şeyler üretmek üzerine kullanan biriyim.