
Exploit basé sur Python pour CVE-2023-1671 avec fonctions de test et d'exploitation. Teste la vulnérabilité via un ping DNS, puis exécute des commandes arbitraires sur les serveurs vulnérables via une injection de commande.
/opt/ws/bin/ftsblistpack est un script Perl qui appelle /opt/ws/bin/sblistpack, qui est un autre script Perl.
Les arguments de la commande shell qu'il contient sont entourés de guillemets simples :
$rc += system("$sblistpack '$uri' '$user' '$filetype' '$filein' '$fileout'");
Cela sera important à l'avenir, ce sera l'une de ces choses qui mèneront à une vulnérabilité.
Ensuite /opt/ui/apache/htdocs/controllers/UsrBlocked.php transmet la commande shell à ftsblistpack avec des paramètres fournis par l'utilisateur : args_reason, url, filetypeser, user_encoded.
L'entrée utilisateur est toujours traitée par la fonction PHP escapeshellarg(), qui ajoute des guillemets simples autour de la chaîne ou de tout guillemet simple existant.
Cela permet de passer la chaîne directement à la fonction shell et de la traiter avec les paramètres utilisateur.
Vous pouvez voir ce qui en résulte :
Si nous tapons :
';echo 1 #
Alors nous avons :
'shell user' ' ';echo 1 #'
Et cela nous permet d'endommager le système dans cette commande. Nous ajoutons notre valeur encodée à user_encoded.
UsrBlocked.php est redirigé via /index.php?c=blocked, puis les paramètres GET et POST nécessaires sont saisis. Comme le paramètre user_encoded est encodé en Base64, il est idéal pour l'injection.
https://github.com/ohnonoyesyes/CVE-2023-1671 - exploit shell
https://vulncheck.com/blog/cve-2023-1671-analysis - pos cve-2023-1671
https://nvd.nist.gov/vuln/detail/CVE-2023-1671 - infos nist cve-2023-1671
Donc, il y a une fonction de test et d'exploitation.
Le test envoie une requête ping au domaine dnslog(http://www.dnslog.cn) depuis le site vulnérable. Si le ping réussit, la vulnérabilité existe, sinon cve-2023-1671 est absente.
La fonction d'exploitation, quant à elle, envoie une requête avec votre commande au serveur.
-h
Obtenir les paramètres d'utilisation
--exploit
Appelle la fonction pour exploiter cve-2023-1671.
Cela exécutera votre commande arbitraire sans vérifier s'il y a une vulnérabilité.
--test
Appelle la fonction de test de vulnérabilité.
Cela se fait en faisant un ping vers le domaine dnslog depuis le serveur vulnérable.
Si un ping se produit, la vulnérabilité cve-2023-1671 est présente.
-u
C'est l'IP ou l'URL de votre site.
Notez le format 192.168.0.1 ou site.com
-p
Le port du site vulnérable. C'est un paramètre obligatoire, même si vous avez https://site.com, vous devez spécifier -u site.com -p 443
-c
Le paramètre de fonction --exploit
C'est toute commande arbitraire que vous souhaitez exécuter pour exploiter le site.
Format -c 'echo cve'
python cve-2023-1671.py --exploit -u 192.168.0.1 -p 443 -c 'echo 1'
python cve-2023-1671.py --test -u 192.168.0.1 -p 443
Cet exploit est écrit à des fins éducatives et je ne suis pas responsable de vos actions
Utilisez cet exploit uniquement dans le but de tester et de protéger votre système.