Vous n'êtes pas connecté.
JC a écrit :
> Bonjour,
Bonjour,
> Je me permets de vous contacter car j'ai découvert une vulnérabilité sur
> zazouminiwebserer dont je vous laisse jugé de la criticité.
Merci pour votre intérêt et pour cette contribution au projet.
> Sur la page index.php, visiblement pour vérifier que l'accès est bien
> réalisé depuis l'adresse 127.0.0.1, la fonction REMOTE_ADDR de php est
> utilisée.
>
> Or il est possible pour un client de forger le REMOTE_ADDR à 127.0.0.1.
> La variablé REMOTE_ADDR ne peut être considéré comme sure.
J'aimerais savoir comment. Vous avez des sources relatant cela ? La variable REMOTE_ADDR est envoyée par le serveur à PHP via l'environnement en fonction des données récupérées de la socket.
Autant les entêtes X-Forwarded-For et Host sont simples à forger, car envoyées avec la requête HTTP (Il y a eu des exploits dans phpBB utilisant cette vulnérabilité), autant je ne vois pas comment on pourrait simplement modifier la variable remote addr.
Au pire en utilisant l'IP spoofing, un pirate pourrait forger des demandes de connexions TCP (nécessaire à tout dialogue HTTP) ayant comme provenance 127.0.0.1 mais la réponse de connexion serait alors envoyée à 127.0.0.1.
A moins qu'il ne soit possible de changer l'IP source dans les paquets TCP et que ces derniers restent malgré tout considérés valides. Je ne suis pas assez calé en TCP pour affirmer que c'est impossible mais ça me paraîtrait être un fonctionnement totalement abérrant.
A moins qu'une vulnérabilité existe dans PHP permettant de modifier cette variable après sa génération par le serveur, mais je n'en ai pas entendu parler.
> Conséquences :
> ----------------------------
>
> Il est donc possible pour un attaquant distant d'exécuter un phpinfo,
> d'arrêter la base mysql en encore le serveur.
> Un scénario d'exécution de code peut également être envisagé.
On est d'accord, en présence d'un exploit, les conséquences sont potentiellement graves.
Il faudrait d'abord être certain qu'il y a un problème à mon sens.
Pouvez vous reproduire l'exploit décrit ?
> Solution :
> ------------------
>
> A définir.
La solution est toute trouvée, supprimer cette page d'index ou la mettre dans un répertoire protégé par mot de passe.
En admettant que tout celà se passe. Encore faut-il que la page soit restée au même endroit et que l'utilisateur ait configuré son routeur pour autoriser les accès externes à sa machine et s'il l'a fait, ce n'est vraisemblablement pas pour offrir la page d'index de zmws au reste du monde.
Merci encore, je copie ce rapport de bug dans le forum pour avoir l'avis des autres membres.
Cordialement,
Xavier Garreau
Hors ligne
JC a écrit :
>> Pouvez vous reproduire l'exploit décrit ?
>
> En piece jointe vous trouverez l'exploit qui réalise le phpinfo, il faut
> modifier l'url qui est ouverte avec l'adresse de votre serveur. (Prog en
> python)
OK !
C'est un bug de ZazouMiniWebServer lui même que je vais m'empresser de corriger. Ce n'est effectivement pas la valeur remontée par la couche réseau qui est en cause mais une faille permettant d'écraser cette dernière ultérieurement.
Ce bug touche les variables suivantes pour être exact:
QUERY_STRING
REQUEST_METHOD
PATH_INFO
PATH_TRANSLATED
REMOTE_ADDR
REMOTE_HOST
REMOTE_PORT
REMOTE_USER
SERVER_PROTOCOL
SERVER_PORT
Merci encore pour ce retour. Je retransfère ça sur le forum.
Hors ligne
A priori, c'est réglé dans la 1.2.4-rc2 dispo ici en exe et dll:
--> http://downloads.xgarreau.org/zazoumini … Server.exe
--> http://downloads.xgarreau.org/zazoumini … Server.dll
a+
Hors ligne
Ne pas oublier de modifier la version de l'exécutable SVP pour pouvoir gérer la version installée.
(clic droit - Propriété - version)
A+
Hors ligne
Intéressant... J'aurais pas pensé à chercher dans cette direction...
Mais je dirais aussi normal, la jeunesse de Zazou ne permet pas encore de tout voir ni de tout savoir ![]()
Hors ligne
C'est exact, c'est un détail que j'oublie ...
Je savais bien que la version dans les ressources, c'était l'arnaque ![]()
Hors ligne