Recherche
N'oubliez pas
Le CMS GuppY
Un CMS unique
- -Présentation de GuppY
- -Choisir GuppY ?
- -Historique
- -Organisation de La GuppY Team
- -Présentation de la GuppYTeam
- -Nous rejoindre ?
Une installation simple
- -En local sur votre PC
- -En ligne
- -Se lancer
- -Un hebergeur c'est quoi ?
- -Choisir son hébergeur
- -Les hebergeurs gratuits
- -Les hebergeurs pro
- -Les hebergeurs à éviter
Une gestion conviviale
Un CMS Modulable
Un CMS actif dans le monde du Libre
Archives du site
Doc technique
I. Aide technique
- -Comment migrer en v4.6 ?
- -GuppY v4.6.0 - Sécurité et Compatibilité
- -Comment chmoder
- -Comment patcher
II. Doc sécurité
- -Les fichiers Htaccess
- -Utiliser les Htaccess
- -Htaccess natif
- -Fichier robots.txt
- -Plus ?
- -Patchs de sécurité
III. Customisation
Préférences
Se reconnecter
---
8481 membres
Connectés :
( personne )
Newsletter
Infos site
Exemples de RSS
Visites
8806593 visiteurs
94 visiteurs en ligne
Calendrier
|
Patch de Sécurité - SA8750| 09/05/2003 SA8750 - aldweb miniPortail admin access Cette vulnérabilité a été corrigée dans la version 2.3 de miniPortail. |
Une faille de sécurité a été découverte dans la zone admin de miniPortail par le webmaster expérimenté de PhpSecure, nommé frog-m@n.
frog-m@n m'a très gentiment prévenu de ce problème et il fournit :
- une explication détaillée de ce trou de sécurité
- un patch correctif
J'ai été prévenu aujourd'hui par une personne qu'elle avait subi l'attaque de hackeurs amateurs qui ont suivi les bonnes explications de frog-m@n. Ces hackeurs ont été suffisamment sympathiques pour juste remplacer le logo de son site par le leur :

Donc, je vous invite :
- ou bien à mettre en place le patch correctif de frog-m@n que vous trouverez ci-dessous
- ou alors à mettre en place une protection par .htaccess (pour les serveurs Apache) du répertoire admin/ de miniPortail
Les explications de frog-m@n :
miniPortail
***********
Informations :
°°°°°°°°°°°°°°
Langage : PHP
Website : http://www.aldweb.com/
Version : 1.9, 2.0, 2.1, 2.2 (et moins ?)
Problème : Accès admin
Developpement :
°°°°°°°°°°°°°°°
"miniPortail est un petit portail web gratuit, facile et qui ne nécessite pas de base de données pour fonctionner.
miniPortail propose l'ensemble des fonctionnalités classiques d'un portail web : news, articles, liens, téléchargements,
diaporama de photos, livre d'or, forum, FAQ, sondage, compteur de visites, etc..."
Le problème se situe donc dans la partie admin, sa page principale étant admin/admin.php.
C'est aussi dans cette page que se trouve le code permettant l'authentification de l'admin.
Voici le code qui nous interesse :
-----------------------------------------------------------------------------------------------------------------------------
[...]
$portalname = "miniPortailAdmin";
$cookiedata = "adminok";
include("mdp.php");
if (md5($pass) == $mdp) {
setcookie($portalname, $cookiedata);
}
elseif ($logout == 1) {
setcookie($portalname, "");
header("location:../index.php");
}
$chemin = "../";
include($chemin."inc/includes.inc");
if (($HTTP_COOKIE_VARS[$portalname] == $cookiedata || md5($pass) == $mdp) && empty($pg)) {
include($chemin."inc/hpage.inc");
htable($admin1, "100%");
[...]
}
elseif ($HTTP_COOKIE_VARS[$portalname] == $cookiedata && !empty($pg)) {
if (file_exists("inc/".$pg.".inc")) {
$chemin = "../";
include("inc/".$pg.".inc");
}
[...]
-----------------------------------------------------------------------------------------------------------------------------
Deux variables sont d'abord définies : $portalname et $cookiedata.
On inclut ensuite le fichier mdp.php, dans lequel se trouve, dans la variable $mdp, le mot de passe admin crypté
en md5.
On regarde ensuite si le mot de passe entré par l'utilisateur, crypté, est bien celui contenu dans le fichier mdp.php.
Si c'est le cas, on envois un cookie nommé "miniPortailAdmin" et avec comme valeur "adminok".
Pour accèder à la partie admin, on vérifie enfin que le cookie nommé miniPortailAdmin a bien la valeur "adminok".
Si ce n'est pas le cas, on affiche le formulaire de login (cette partie du code ne se trouve pas ici).
Pour être authentifié comme administrateur, il suffit donc d'envoyer nous-même, sur la page http://[target]/admin/admin.php,
un cookie nommé miniPortailAdmin et ayant comme valeur "adminok".
Quand on cela est fait, on peut aller un peu plus loin, grâce à la partie "upload" de l'administration, se trouvant
à l'url http://[target]/admin/admin.php?pg=upload. Comme le dit son nom, on peut alors uploader n'importe quel fichier
sur le serveur, mais aussi en supprimer, et lister les fichiers de n'importe quel repertoire. Le script ne propose
normalement que les repertoires /img/, /file/ et /photos/, mais il suffit de changer la valeur de la variable $rep
pour choisir le repertoire.
Si on upload alors un fichier php, il sera executé sur le serveur, avec ses droits et restrictions.
Voici le code d'/admin/inc/upload.inc, qui est le fichier inclut dans admin.php pour la page upload :
---------------------------------------------------------------------------------------
if (empty($rep)) {
$rep="file";
}
if (!empty($del)) {
@chmod($chemin.$rep."/".$del,0777);
unlink($chemin.$rep."/".$del);
}
if (!empty($ficup)) {
if (is_uploaded_file($ficup)) {
copy($ficup, $chemin.$rep."/".$_FILES['ficup']['name']);
}
}
// Creation de l'index des fichiers
$dbfiles = array();
$i = 0;
$dossier = opendir($chemin.$rep);
while ($fichier = readdir($dossier)) {
if (is_file($chemin.$rep."/".$fichier)) {
if ($fichier != "index.php") {
$dbfiles[$i][0] = $fichier;
$path_parts = basename($fichier);
$path_parts = substr($path_parts,strrpos($path_parts,".")+1);
$dbfiles[$i][1] = "inc/img/files/".ExtImage($path_parts).".gif";
$dbfiles[$i][2] = FileSizeInKb($chemin.$rep."/".$fichier);
$i++;
}
}
}
closedir($dossier);
@sort($dbfiles);
[...]
---------------------------------------------------------------------------------------
Solution :
°°°°°°°°°°
Un patch est disponible sur http://www.phpsecure.info pour la version 2.2.
Dans admin/admin.php, remplacer le code :
-------------------------------------------------------------------------------------------
[...]
$portalname = "miniPortailAdmin";
$cookiedata = "adminok";
include("mdp.php");
if (md5($pass) == $mdp) {
setcookie($portalname, $cookiedata);
}
elseif ($logout == 1) {
setcookie($portalname, "");
header("location:../index.php");
}
$chemin = "../";
include($chemin."inc/includes.inc");
if (($HTTP_COOKIE_VARS[$portalname] == $cookiedata || md5($pass) == $mdp) && empty($pg)) {
[...]
-------------------------------------------------------------------------------------------
par :
---------------------------------------------------------------------------------------
include("mdp.php");
session_start();
$miniPortailAdmin = "";
if (md5($pass) == $mdp) {
$miniPortailAdmin = "adminok";
session_register("miniPortailAdmin");
}
elseif ($logout == 1) {
session_unregister("miniPortailAdmin");
header("location:../index.php");
}
$chemin = "../";
include($chemin."inc/includes.inc");
if ((session_is_registered("miniPortailAdmin") || md5($pass) == $mdp) && empty($pg)) {
---------------------------------------------------------------------------------------
et, plus bas, la ligne :
------------------------------------------------------------------------
elseif ($HTTP_COOKIE_VARS[$portalname] == $cookiedata && !empty($pg)) {
------------------------------------------------------------------------
par :
--------------------------------------------------------------------
elseif (session_is_registered("miniPortailAdmin") && !empty($pg)) {
--------------------------------------------------------------------
Credits :
°°°°°°°°°
Auteur : frog-m@n
E-mail : leseulfrog@hotmail.com
Website : http://www.frog-man.org, http://www.phpsecure.info
Date : 01/05/03
Date de création : 24/09/2003 @ 00:00
Dernière modification : 07/10/2004 @ 21:26
Catégorie :
Page lue 8311 fois
Réactions à cet article
Réaction n°1 |
par kamal le 19/08/2005 @ 18:48 |
kamal pleas register mon site web pleas et envoiyer passwrd et pseudo pleassss pas email kamal204204@hotmail.com | |




Haut 

