[Les méthodes suivantes doivent être utilisées seulement sur votre propre serveur Web]
Salut !
Après deux articles sur le cracking je vous présente mon nouvel article sur une faille d'Apache.
Il se peut que certains d'entre vous aient l'impression d'avoir déjà vu ce que je vais dire, c'est normal ! Cette faille a déjà été publiée de nombreuses fois et ma version a été publiée dans The Hackademy Journal.
1° : Présentation
Apache est un serveur de pages HTTP. Il est distribué sous licence compatible GPL.
Il est disponible pour Linux et Windows.
Pour Windows soit directement en logiciel, soit avec EasyPHP : c'est un package avec l'installation d'Apache, de MySQL (base de données), de PHP (langage de scripting interprété) et de PHPMyAdmin (permet de gérer simplement les bases MySQL).
Toutes les commandes qui vont suivre sont faites sous Windows XP avec EasyPHP.
Apache n'est pas simple d'accès, il faut bien le configurer si on veut qu'il soit sécurisé.
Il y a eu une première version de cette faille, qui était exploitable sur les versions d'Apache égales et inférieures à la 1.3.24 ce qui équivaut à EasyPHP 1.6
Ensuite sur la version 1.3.27, ce qui équivaut à EasyPHP 1.7, elle a été corrigé mais deux nouvelles sont apparues. Une publiée dans THJ (The Hackademy Journal) et une autre de moi-même :D
Apache enregistre ce qui se passe dans 2 logs principaux :
- error.log << sert à enregistrer toutes les erreurs comme les erreurs 404 et les erreurs avec les authentifications htaccess.
- access.log << enregistre toutes les actions d'accès, comme les GET et POST.
2° : La faille
Elle nécessiste obligatoirement une autre faille : l'include PHP
http://www.securityhack.net/?page=includephp
Je suis sûr que là, vous voulez de l'exploit, vous en avez assez de mes discours :p
Et ba alors c'est parti !
- Faille sur Apache 1.3.24 & EasyPHP 1.6 :
http://victime.com/<? phpinfo(); ?>
phpinfo() est une fonction php qui permet d'afficher des informations sur la configuration du serveur et de php. Les <? et ?> indiquent que ce qu'il se trouve entre ces deux balises est du code php, le ";" indique une fin de ligne.
Ensuite si par exemple l'include se fait de cette façon :
http://victime.com/index.php?page=../apache/logs/error.log
L'arborescence est :
...EasyPHP/apache/logs/
...EasyPHP/www/
www est le dossier qui est accessible depuis le Web.
Donc notre page "index.php" vas nous inclure notre log d'erreurs. Ce même qui contient la commande "<? phpinfo(); ?>" Vous avez deviné ? Et oui ! Vous aurez le contenu de toutes les erreurs (peut même être intéressant avec les erreurs de mot de passe etc) et aussi votre commande php qui c'est exécutée !
- Faille sur Apache 1.3.27 & EasyPHP 1.7 :
Comme les développeurs d'Apache ont de la réactivité ;) cette faille a été corrigée et maintenant dans le log on voit :
%3C?%20phpinfo();%20?%3E
Les caractères "<"; "[espace]"; ">" ont été remplacés par leur code ASCII
L'exécution est donc impossible.
Mais tout n'est pas filtré ;)
Nous avons deux nouvelles failles :
1 : Avec les .htaccess
Comme nom et/ou comme mot de passe mettez <? phpinfo(); ?>
Et ensuite comme précédemment pour l'inclure.
2 : Avec une connexion directe au serveur sans navigateur
Voilà enfin ma technique, celle que vous attendiez tous (lol).
Ouvrez l'invite de commande MS-Dos, tapez "telnet ip_du_serveur 80" (pour avoir l'ip du serveur faite : ping serveur.com), ensuite tapez directement votre code "<? phpinfo(); ?>" et faites [ENTREE]
Et voilà ;) l'erreur est logguée dans access.log et error.log qu'il suffit d'inclure comme précédemment.
3° : Remarques
J'ai utilisé <? phpinfo(); ?> mais vous pouvez utiliser la(les) commande(s) que vous voulez
L'avantage comparé à l'include classique est que vous n'avez pas besoin d'uploader un script chez un hébergeur pour ensuite l'inclure, là c'est du live ;) avec comme support les logs :D
4° : Greetz
sn0oPy pour ses deux dernières découvertes (voir notre forum http://forums.securityhack.net)
A tous ceux qui auront lu mes articles :D et à tous ceux qui visitent notre site, notre forum, notre chat (http://www.securityhack.net/?page=chat)
Vous avez une question sur cet article ? Le forum et le chat sont là pour vous aider