
Vulmap est un outil de scan et de validation de vulnérabilités web, capable d'analyser les webapps à la recherche de vulnérabilités et doté d'une fonction de validation de ces vulnérabilités.
[Cliquez ici pour la version anglaise]
Vulmap est un outil de scan et de vérification des vulnérabilités web, capable d'analyser les applications web et de les exploiter. Les applications web actuellement prises en charge incluent activemq, flink, shiro, solr, struts2, tomcat, unomi, drupal, elasticsearch, fastjson, jenkins, nexus, weblogic, jboss, spring, thinkphp.
Vulmap combine le scan de vulnérabilités et la vérification (exploitation), ce qui permet aux testeurs de prendre rapidement les mesures suivantes après avoir découvert une vulnérabilité. L'outil vise l'efficacité et la commodité.
Efficace : au fil du développement, des fonctionnalités de scan en masse, Fofa, Shodan et le multithreading avec coroutines par défaut ont été intégrés pour analyser rapidement un grand nombre d'actifs.
Pratique : une fois la vulnérabilité détectée, elle peut être exploitée ; les résultats peuvent être exportés sous plusieurs formats pour les scans de masse.
Depuis la version 0.8, Vulmap permet de scanner directement les fichiers de résultats de dismap avec l'option
-f output.txt.
Le système d'exploitation doit avoir Python 3, de préférence Python 3.8 ou une version ultérieure.
# git ou téléchargez la version release
git clone https://github.com/zhzyker/vulmap.git
# Installez les dépendances Python nécessaires
pip3 install -r requirements.txt
# Linux & MacOS & Windows
python3 vulmap.py -u http://example.com
Configuration de Fofa Api && Shodan Api && Ceye
Pour utiliser Fofa ou Shodan, vous devez modifier les informations de configuration dans vulmap.py :
# Remplacez xxxxxxxxxx par l'email Fofa
globals.set_value("fofa_email", "xxxxxxxxxx")
# Remplacez xxxxxxxxxx par la clé Fofa
globals.set_value("fofa_key", "xxxxxxxxxx")
# Remplacez xxxxxxxxxx par votre clé Shodan
globals.set_value("shodan_key", "xxxxxxxxxx")
# Remplacez xxxxxxxxxx par votre domaine
globals.set_value("ceye_domain","xxxxxxxxxx")
# Remplacez xxxxxxxxxx par votre token Ceye
globals.set_value("ceye_token", "xxxxxxxxxx")
En complément de la LICENCE originale, les clauses de non-responsabilité suivantes s'appliquent. En cas de conflit avec la licence originale, ces clauses prévalent.
Cet outil est interdit pour toute utilisation commerciale non autorisée, ainsi que pour toute utilisation commerciale non autorisée après un développement secondaire.
Cet outil est destiné exclusivement aux actions de sécurité d'entreprises légalement autorisées. Lors de son utilisation, vous devez vous assurer que cela respecte les lois et règlements locaux et que vous disposez des autorisations nécessaires.
Si vous commettez un acte illégal en utilisant cet outil, vous assumez seul les conséquences ; nous déclinons toute responsabilité légale ou conjointe.
Avant d'utiliser cet outil, veuillez lire attentivement et comprendre toutes les clauses. Les clauses de limitation, de non-responsabilité ou celles concernant vos droits importants peuvent être mises en évidence (gras, souligné). Si vous n'avez pas lu, compris et accepté toutes les clauses, veuillez ne pas utiliser cet outil. Votre utilisation ou toute autre forme d'acceptation expresse ou tacite de ce contrat sera considérée comme votre acceptation de ces clauses.
YouTube: https://www.youtube.com/watch?v=g4czwS1Snc4
Bilibili: https://www.bilibili.com/video/BV1Fy4y1v7rd
Gif:
Arguments optionnels :
-h, --help Affiche ce message d'aide et quitte
-u URL, --url URL URL cible (ex. -u "http://example.com")
-f FILE, --file FILE Sélectionne un fichier de liste de cibles, chaque URL doit être sur une ligne distincte (ex. -f "/home/user/list.txt")
--fofa keyword Utilise l'API Fofa pour un scan en masse (ex. --fofa "app=Apache-Shiro")
--shodan keyword Utilise l'API Shodan pour un scan en masse (ex. --shodan "Shiro")
-m MODE, --mode MODE Mode supporté : "poc" et "exp". Peut être omis, par défaut "poc"
-a APP [APP ...] Spécifie les applications web (ex. "weblogic"). Si non spécifié, reconnaissance automatique des empreintes
-c CMD, --cmd CMD Commande personnalisée pour l'exécution de commande à distance ; par défaut echo md5 aléatoire
-v VULN, --vuln VULN Exploite une vulnérabilité ; nécessite l'identifiant (ex. -v "CVE-2019-2729")
-t NUM, --thread NUM Nombre de threads de scan, par défaut 10
--dnslog server Serveur DNSlog (hyuga, dnslog, ceye) ; par défaut rotation automatique
--output-text file Exporte les résultats du scan dans un fichier texte (ex. "result.txt")
--output-json file Exporte les résultats du scan dans un fichier JSON (ex. "result.json")
--proxy-socks SOCKS Utilise un proxy SOCKS (ex. --proxy-socks 127.0.0.1:1080)
--proxy-http HTTP Utilise un proxy HTTP (ex. --proxy-http 127.0.0.1:8080)
--user-agent UA Permet de personnaliser le User-Agent
--fofa-size SIZE Nombre d'actifs appelés par l'API Fofa ; par défaut 100, possible (1-10000)
--delay DELAY Délai entre chaque envoi ; par défaut 0s
--timeout TIMEOUT Délai d'attente ; par défaut 5s
--list Affiche la liste des vulnérabilités prises en charge
--debug En mode exp, affiche les requêtes et réponses ; en mode poc, affiche la liste des vulnérabilités scannées
--check Détection de la cible (on/off) ; par défaut on
# Tester tous les POC de vulnérabilités ; si -a n'est pas spécifié, la reconnaissance d'empreinte est activée par défaut
python3 vulmap.py -u http://example.com
# Vérifier si le site présente une vulnérabilité Struts2
python3 vulmap.py -u http://example.com -a struts2
# Exploiter la vulnérabilité CVE-2019-2729 sur http://example.com:7001
python3 vulmap.py -u http://example.com:7001 -v CVE-2019-2729
python3 vulmap.py -u http://example.com:7001 -m exp -v CVE-2019-2729
# Scanner en masse les URL du fichier list.txt
python3 vulmap.py -f list.txt
# Exporter les résultats du scan dans result.json
python3 vulmap.py -u http://example.com:7001 --output-json result.json
# Utiliser l'API Fofa pour un scan en masse
python3 vulmap.py --fofa app=Apache-Shiro
+-------------------+------------------+-----+-----+-------------------------------------------------------------+
| Type de cible | Nom de vulnéra. | Poc | Exp | Version impactée && Description de la vulnérabilité |
+-------------------+------------------+-----+-----+-------------------------------------------------------------+
| Apache ActiveMQ | CVE-2015-5254 | Y | N | < 5.13.0, exécution de code à distance par désérialisation |
| Apache ActiveMQ | CVE-2016-3088 | Y | Y | < 5.14.0, téléchargement de webshell via HTTP PUT & MOVE |
| Apache Druid | CVE-2021-25646 | Y | Y | < 0.20.1, exécution de code à distance console Apache Druid |
| Apache Flink | CVE-2020-17518 | Y | N | < 1.11.3 ou < 1.12.0, traversée de chemin par téléchargement|
| Apache Flink | CVE-2020-17519 | Y | Y | 1.5.1 - 1.11.2, traversée de chemin 'jobmanager/logs' |
| Apache OFBiz | CVE-2021-26295 | Y | N | < 17.12.06, exécution de code arbitraire par désérialisation RMI |
| Apache OFBiz | CVE-2021-29200 | Y | N | < 17.12.07, exécution de code arbitraire par désérialisation RMI |
| Apache OFBiz | CVE-2021-30128 | Y | Y | < 17.12.07, exécution de commande à distance par désérialisation |
| Apache Shiro | CVE-2016-4437 | Y | Y | <= 1.2.4, shiro-550, RCE par désérialisation rememberme |
| Apache Solr | CVE-2017-12629 | Y | Y | < 7.1.0, RCE via runexecutablelistener & XXE, seulement RCE ici |
| Apache Solr | CVE-2019-0193 | Y | N | < 8.2.0, RCE via le module DataImportHandler |
| Apache Solr | CVE-2019-17558 | Y | Y | 5.0.0 - 8.3.1, RCE via Velocity Response Writer |
| Apache Solr | time-2021-0318 | Y | Y | toutes versions, lecture arbitraire de fichiers Apache Solr |
| Apache Solr | CVE-2021-27905 | Y | N | 7.0.0-7.7.3, 8.0.0-8.8.1, SSRF dans le gestionnaire de réplication |
| Apache Struts2 | S2-005 | Y | Y | 2.0.0 - 2.1.8.1, cve-2010-1870 RCE via l'intercepteur de paramètres |
| Apache Struts2 | S2-008 | Y | Y | 2.0.0 - 2.3.17, RCE via l'intercepteur de débogage |
| Apache Struts2 | S2-009 | Y | Y | 2.1.0 - 2.3.1.1, cve-2011-3923 RCE via l'interpréteur OGNL |
| Apache Struts2 | S2-013 | Y | Y | 2.0.0 - 2.3.14.1, cve-2013-1966 RCE via l'interpréteur OGNL |
| Apache Struts2 | S2-015 | Y | Y | 2.0.0 - 2.3.14.2, cve-2013-2134 RCE via l'interpréteur OGNL |
| Apache Struts2 | S2-016 | Y | Y | 2.0.0 - 2.3.15, cve-2013-2251 RCE via l'interpréteur OGNL |
| Apache Struts2 | S2-029 | Y | Y | 2.0.0 - 2.3.24.1, RCE via l'interpréteur OGNL |
| Apache Struts2 | S2-032 | Y | Y | 2.3.20-28, cve-2016-3081 RCE via méthode |
| Apache Struts2 | S2-045 | Y | Y | 2.3.5-31, 2.5.0-10, cve-2017-5638 RCE via Jakarta Multipart |
| Apache Struts2 | S2-046 | Y | Y | 2.3.5-31, 2.5.0-10, cve-2017-5638 RCE via Jakarta Multipart |
| Apache Struts2 | S2-048 | Y | Y | 2.3.x, cve-2017-9791 RCE via le plugin struts2-struts1 |
| Apache Struts2 | S2-052 | Y | Y | 2.1.2 - 2.3.33, 2.5 - 2.5.12 cve-2017-9805 RCE via REST plugin |
| Apache Struts2 | S2-057 | Y | Y | 2.0.4 - 2.3.34, 2.5.0-2.5.16, cve-2018-11776 RCE via namespace |
| Apache Struts2 | S2-059 | Y | Y | 2.0.0 - 2.5.20, cve-2019-0230 RCE via l'interpréteur OGNL |
| Apache Struts2 | S2-061 | Y | Y | 2.0.0-2.5.25, cve-2020-17530 RCE via l'interpréteur OGNL |
| Apache Struts2 | S2-devMode | Y | Y | 2.1.0 - 2.5.1, RCE en mode développement |
| Apache Tomcat | Pages Exemples | Y | N | toutes versions, /examples/servlets/servlet |
| Apache Tomcat | CVE-2017-12615 | Y | Y | 7.0.0 - 7.0.81, téléchargement de fichiers via méthode PUT |
| Apache Tomcat | CVE-2020-1938 | Y | Y | 6, 7 < 7.0.100, 8 < 8.5.51, 9 < 9.0.31, lecture arbitraire de fichiers |
| Apache Unomi | CVE-2020-13942 | Y | Y | < 1.5.2, RCE Apache Unomi |
| CoreMail | time-2021-0414 | Y | N | Vulnérabilité de divulgation d'informations de configuration Coremail |
| Drupal | CVE-2018-7600 | Y | Y | 6.x, 7.x, 8.x, drupalgeddon2 RCE |
| Drupal | CVE-2018-7602 | Y | Y | < 7.59, < 8.5.3 (sauf 8.4.8) drupalgeddon2 RCE |
| Drupal | CVE-2019-6340 | Y | Y | < 8.6.10, RCE via le noyau RESTful Drupal |
| Ecology | time-2021-0515 | Y | Y | <= 9.0, RCE via e-cology OA workflowservicexml |
| Elasticsearch | CVE-2014-3120 | Y | Y | < 1.2, RCE Elasticsearch |
| Elasticsearch | CVE-2015-1427 | Y | Y | < 1.3.7, < 1.4.3, RCE Elasticsearch |
| Exchange | CVE-2021-26855 | Y | N | 2010 2013 2016 2019, SSRF Microsoft Exchange Server |
| Exchange | CVE-2021-27065 | Y | Y | 2010 2013 2016 2019, écriture arbitraire de fichiers Exchange |
| Eyou Email | CNVD-2021-26422 | Y | Y | Exécution de commande à distance dans le système de messagerie Eyou |
| F5 BIG-IP | CVE-2020-5902 | Y | Y | < 11.6.x, RCE F5 BIG-IP |
| F5 BIG-IP | CVE-2021-22986 | Y | Y | < 16.0.1, RCE F5 BIG-IP |
| Fastjson | VER-1224-1 | Y | Y | <= 1.2.24, RCE via l'objet parse Fastjson |
| Fastjson | VER-1224-2 | Y | Y | <= 1.2.24, RCE via l'objet parse Fastjson |
| Fastjson | VER-1224-3 | Y | Y | <= 1.2.24, RCE via l'objet parse Fastjson |
| Fastjson | VER-1247 | Y | Y | <= 1.2.47, RCE via autotype Fastjson |
| Fsatjson | VER-1262 | Y | Y | <= 1.2.62, RCE via autotype Fastjson |
| Jenkins | CVE-2017-1000353 | Y | N | <= 2.56, LTS <= 2.46.1, RCE Jenkins-CI |
| Jenkins | CVE-2018-1000861 | Y | Y | <= 2.153, LTS <= 2.138.3, RCE |
| Laravel | CVE-2018-15133 | N | Y | 5.5.x <= 5.5.40, 5.6.x <= 5.6.29, RCE via app_key Laravel |
| Laravel | CVE-2021-3129 | Y | N | ignition <= 2.5.1, RCE en mode débogage Laravel |
| Nexus OSS/Pro | CVE-2019-7238 | Y | Y | 3.6.2 - 3.14.0, vulnérabilité d'exécution de code à distance |
| Nexus OSS/Pro | CVE-2020-10199 | Y | Y | 3.x <= 3.21.1, vulnérabilité d'exécution de code à distance |
| Node.JS | CVE-2021-21315 | Y | N | systeminformation < 5.3.1, injection de commande Node.js |
| Oracle Weblogic | CVE-2014-4210 | Y | N | 10.0.2 - 10.3.6, vulnérabilité SSRF Weblogic |
| Oracle Weblogic | CVE-2016-0638 | Y | N | 10.3.6.0, 12.2.1-3, RCE par désérialisation T3 |
| Oracle Weblogic | CVE-2017-3506 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.0-2, RCE via WLS-WSAT |
| Oracle Weblogic | CVE-2017-10271 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.1-2, RCE via WLS-WSAT |
| Oracle Weblogic | CVE-2018-2894 | Y | Y | 12.1.3.0, 12.2.1.2-3, téléchargement de fichiers par désérialisation |
| Oracle Weblogic | CVE-2018-3191 | Y | N | 10.3.6.0, 12.1.3.0, 12.2.1.3, RCE par désérialisation T3 |
| Oracle Weblogic | CVE-2019-2725 | Y | Y | 10.3.6.0, 12.1.3.0, RCE via WLS9-Async par désérialisation |
| Oracle Weblogic | CVE-2019-2890 | Y | N | 10.3.6.0, 12.1.3.0, 12.2.1.3, RCE par désérialisation T3 |
| Oracle Weblogic | CVE-2019-2729 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.3, RCE via WLS9-Async par désérialisation |
| Oracle Weblogic | CVE-2020-2551 | Y | N | 10.3.6.0, 12.1.3.0, 12.2.1.3-4, RCE par désérialisation WLSCore |
| Oracle Weblogic | CVE-2020-2555 | Y | Y | 3.7.1.17, 12.1.3.0.0, 12.2.1.3-4.0, RCE par désérialisation T3 |
| Oracle Weblogic | CVE-2020-2883 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.3-4, RCE par désérialisation IIOP T3 |
| Oracle Weblogic | CVE-2020-14882 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.3-4, 14.1.1.0, RCE via console |
| Oracle Weblogic | CVE-2020-2109 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.3-4, 14.1.1.0, JNDI non autorisé |
| QiAnXin | time-2021-0410 | Y | Y | RCE du pare-feu de nouvelle génération QIANXIN NS-NGFW |
| RedHat JBoss | CVE-2010-0738 | Y | Y | 4.2.0 - 4.3.0, téléchargement de fichiers par désérialisation via JMX-Console |
| RedHat JBoss | CVE-2010-1428 | Y | Y | 4.2.0 - 4.3.0, téléchargement de fichiers par désérialisation via Web-Console |
| RedHat JBoss | CVE-2015-7501 | Y | Y | 5.x, 6.x, téléchargement de fichiers par désérialisation via JMXInvokerServlet |
| RuiJie | time_2021_0424 | Y | N | Obtention du mot de passe du compte, RCE en arrière-plan |
| Saltstack | CVE-2021-25282 | Y | Y | < 3002.5, écriture arbitraire de fichiers SaltStack |
| Spring Data | CVE-2018-1273 | Y | Y | 1.13 - 1.13.10, 2.0 - 2.0.5, RCE dans Spring Data Commons |
| Spring Cloud | CVE-2019-3799 | Y | Y | 2.1.0-2.1.1, 2.0.0-2.0.3, 1.4.0-1.4.5, traversée de répertoire |
| Spring Cloud | CVE-2020-5410 | Y | Y | < 2.2.3, < 2.1.9, vulnérabilité de traversée de répertoire |
| ThinkPHP | CVE-2019-9082 | Y | Y | < 3.2.4, RCE par désérialisation rememberme ThinkPHP |
| ThinkPHP | CVE-2018-20062 | Y | Y | <= 5.0.23, 5.1.31, RCE par désérialisation rememberme ThinkPHP |
| Vmware vCenter | time-2020-1013 | Y | N | <= 6.5u1, lecture arbitraire de fichiers VMware vCenter (pas de CVE) |
| Vmware vCenter | CVE-2021-21972 | Y | Y | 7.0 < 7.0U1c, 6.7 < 6.7U3l, 6.5 < 6.5U3n, téléchargement de fichiers |
| VMware vRealize | CVE-2021-21975 | Y | N | <= 8.3.0, SSRF API VMware vRealize Operations Manager |
+-------------------+------------------+-----+-----+-------------------------------------------------------------+
docker build -t vulmap/vulmap .
docker run --rm -ti vulmap/vulmap python vulmap.py -u https://www.example.com