
Scanner di vulnerabilità web e strumento di exploitation con modalità POC/EXP per CVE note su applicazioni web come Weblogic, Shiro, Struts2 e Tomcat; supporta scansioni batch FOFA/Shodan.
[Clicca qui per la versione inglese]
Vulmap è uno strumento di scansione e verifica delle vulnerabilità web. Consente di scansionare le vulnerabilità delle webapp e di sfruttarle. Le webapp attualmente supportate includono: activemq, flink, shiro, solr, struts2, tomcat, unomi, drupal, elasticsearch, fastjson, jenkins, nexus, weblogic, jboss, spring, thinkphp
Vulmap combina la scansione delle vulnerabilità con la verifica (exploitation), facilitando notevolmente per i tester la possibilità di eseguire il passo successivo dopo aver trovato una vulnerabilità. Lo strumento è progettato per essere efficiente e pratico.
Efficiente: gradualmente sono state introdotte la scansione batch, la scansione batch tramite Fofa e Shodan, con supporto multithreading e coroutine attivate per impostazione predefinita, per scansionare grandi quantità di asset alla massima velocità. Pratico: una volta trovata una vulnerabilità, è possibile sfruttarla; la scansione di grandi asset può produrre output in più formati.
A partire dalla versione 0.8, Vulmap supporta la scansione diretta delle vulnerabilità sui file di riconoscimento di dismap con
-f output.txt
Il sistema operativo deve avere python3, consigliato python3.8 o superiore
# git o scarica la release per il codice sorgente
git clone https://github.com/zhzyker/vulmap.git
# Installa le dipendenze Python necessarie
pip3 install -r requirements.txt
# Linux & MacOS & Windows
python3 vulmap.py -u http://example.com
Configurazione di Fofa Api, Shodan Api e Ceye
Per utilizzare Fofa o Shodan è necessario modificare le informazioni di configurazione in vulmap.py:
# Sostituisci xxxxxxxxxx con l'email di Fofa
globals.set_value("fofa_email", "xxxxxxxxxx")
# Sostituisci xxxxxxxxxx con la key di Fofa
globals.set_value("fofa_key", "xxxxxxxxxx")
# Sostituisci xxxxxxxxxx con la propria key di Shodan
globals.set_value("shodan_key", "xxxxxxxxxx")
# Sostituisci xxxxxxxxxx con il proprio dominio
globals.set_value("ceye_domain","xxxxxxxxxx")
# Sostituisci xxxxxxxxxx con il proprio token di Ceye
globals.set_value("ceye_token", "xxxxxxxxxx")
Al LICENSE originale viene aggiunta la seguente dichiarazione di esclusione di responsabilità. In caso di conflitto con la licenza originale, prevale la dichiarazione di esclusione.
Questo strumento non può essere utilizzato per scopi commerciali non autorizzati. È vietato svilupparlo ulteriormente e utilizzarlo per scopi commerciali non autorizzati.
Questo strumento è destinato esclusivamente ad attività di sicurezza aziendale legalmente autorizzate. Quando si utilizza questo strumento per eseguire test, è necessario assicurarsi che tale attività sia conforme alle leggi e ai regolamenti locali e che siano state ottenute le autorizzazioni necessarie.
Se durante l'utilizzo di questo strumento si verificano comportamenti illegali, l'utente si assume le conseguenze corrispondenti. Non ci assumiamo alcuna responsabilità legale o congiunta.
Prima di utilizzare questo strumento, leggere attentamente e comprendere appieno tutti i termini. I termini di limitazione, esclusione di responsabilità o altri termini che riguardano i tuoi diritti importanti potrebbero essere evidenziati in grassetto o sottolineati per richiamare la tua attenzione.
Se non hai letto, compreso e accettato tutti i termini di questo accordo, non utilizzare lo strumento. L'utilizzo o qualsiasi altra dichiarazione esplicita o implicita di accettazione di questo accordo costituirà l'accettazione dei termini.
YouTube: https://www.youtube.com/watch?v=g4czwS1Snc4
Bilibili: https://www.bilibili.com/video/BV1Fy4y1v7rd
Gif:
Parametri opzionali:
-h, --help Mostra questo messaggio di aiuto ed esce
-u URL, --url URL URL di destinazione (es. -u "http://example.com")
-f FILE, --file FILE Seleziona un file di elenco di destinazioni. Ogni URL deve essere su una riga separata (es. -f "/home/user/list.txt")
--fofa keyword Usa l'API di Fofa per scansione batch (es. --fofa "app=Apache-Shiro")
--shodan keyword Usa l'API di Shodan per scansione batch (es. --shodan "Shiro")
-m MODE, --mode MODE Modalità supportate: "poc" ed "exp". Può essere omesso; per impostazione predefinita entra in modalità "poc"
-a APP [APP ...] Specifica le webapp (es. "weblogic"). Se non specificato, riconoscimento automatico delle impronte digitali
-c CMD, --cmd CMD Comando personalizzato per esecuzione remota di comandi. Predefinito: echo md5 casuale
-v VULN, --vuln VULN Sfrutta la vulnerabilità, specificare il numero di vulnerabilità (es. -v "CVE-2019-2729")
-t NUM, --thread NUM Numero di thread di scansione. Predefinito: 10
--dnslog server Server DNSlog (hyuga, dnslog, ceye). Predefinito: polling automatico
--output-text file Output dei risultati della scansione in file txt (es. "result.txt")
--output-json file Output dei risultati della scansione in file json (es. "result.json")
--proxy-socks SOCKS Usa proxy SOCKS (es. --proxy-socks 127.0.0.1:1080)
--proxy-http HTTP Usa proxy HTTP (es. --proxy-http 127.0.0.1:8080)
--user-agent UA Permette di personalizzare lo User-Agent
--fofa-size SIZE Numero di asset da richiamare con l'API Fofa. Predefinito: 100, disponibile (1-10000)
--delay DELAY Tempo di ritardo tra ogni invio. Predefinito: 0s
--timeout TIMEOUT Timeout di attesa. Predefinito: 5s
--list Mostra l'elenco delle vulnerabilità supportate
--debug In modalità exp mostra request e responses; in modalità poc mostra l'elenco delle vulnerabilità scansionate
--check Rilevamento di sopravvivenza del target (on e off). Predefinito: on
# Testa tutte le vulnerabilità in modalità poc. Se non si specifica -a all, verrà abilitato il riconoscimento automatico delle impronte digitali
python3 vulmap.py -u http://example.com
# Verifica se il sito presenta la vulnerabilità struts2
python3 vulmap.py -u http://example.com -a struts2
# Sfrutta la vulnerabilità CVE-2019-2729 su http://example.com:7001 per WebLogic
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
# Scansione batch degli URL nel file list.txt
python3 vulmap.py -f list.txt
# Esporta i risultati della scansione in result.json
python3 vulmap.py -u http://example.com:7001 --output-json result.json
# Utilizza l'API Fofa per scansione batch
python3 vulmap.py --fofa app=Apache-Shiro
+-------------------+------------------+-----+-----+-------------------------------------------------------------+
| Target type | Vuln Name | Poc | Exp | Impact Version && Vulnerability description |
+-------------------+------------------+-----+-----+-------------------------------------------------------------+
| Apache ActiveMQ | CVE-2015-5254 | Y | N | < 5.13.0, deserialization remote code execution |
| Apache ActiveMQ | CVE-2016-3088 | Y | Y | < 5.14.0, http put&move upload webshell |
| Apache Druid | CVE-2021-25646 | Y | Y | < 0.20.1, apache druid console remote code execution |
| Apache Flink | CVE-2020-17518 | Y | N | < 1.11.3 or < 1.12.0, upload path traversal |
| Apache Flink | CVE-2020-17519 | Y | Y | 1.5.1 - 1.11.2, 'jobmanager/logs' path traversal |
| Apache OFBiz | CVE-2021-26295 | Y | N | < 17.12.06, rmi deserializes arbitrary code execution |
| Apache OFBiz | CVE-2021-29200 | Y | N | < 17.12.07, rmi deserializes arbitrary code execution |
| Apache OFBiz | CVE-2021-30128 | Y | Y | < 17.12.07, deserialize remote command execution |
| Apache Shiro | CVE-2016-4437 | Y | Y | <= 1.2.4, shiro-550, rememberme deserialization rce |
| Apache Solr | CVE-2017-12629 | Y | Y | < 7.1.0, runexecutablelistener rce & xxe, only rce is here |
| Apache Solr | CVE-2019-0193 | Y | N | < 8.2.0, dataimporthandler module remote code execution |
| Apache Solr | CVE-2019-17558 | Y | Y | 5.0.0 - 8.3.1, velocity response writer rce |
| Apache Solr | time-2021-0318 | Y | Y | all, apache solr arbitrary file reading |
| Apache Solr | CVE-2021-27905 | Y | N | 7.0.0-7.7.3, 8.0.0-8.8.1, replication handler ssrf |
| Apache Struts2 | S2-005 | Y | Y | 2.0.0 - 2.1.8.1, cve-2010-1870 parameters interceptor rce |
| Apache Struts2 | S2-008 | Y | Y | 2.0.0 - 2.3.17, debugging interceptor rce |
| Apache Struts2 | S2-009 | Y | Y | 2.1.0 - 2.3.1.1, cve-2011-3923 ognl interpreter rce |
| Apache Struts2 | S2-013 | Y | Y | 2.0.0 - 2.3.14.1, cve-2013-1966 ognl interpreter rce |
| Apache Struts2 | S2-015 | Y | Y | 2.0.0 - 2.3.14.2, cve-2013-2134 ognl interpreter rce |
| Apache Struts2 | S2-016 | Y | Y | 2.0.0 - 2.3.15, cve-2013-2251 ognl interpreter rce |
| Apache Struts2 | S2-029 | Y | Y | 2.0.0 - 2.3.24.1, ognl interpreter rce |
| Apache Struts2 | S2-032 | Y | Y | 2.3.20-28, cve-2016-3081 rce can be performed via method |
| Apache Struts2 | S2-045 | Y | Y | 2.3.5-31, 2.5.0-10, cve-2017-5638 jakarta multipart rce |
| Apache Struts2 | S2-046 | Y | Y | 2.3.5-31, 2.5.0-10, cve-2017-5638 jakarta multipart rce |
| Apache Struts2 | S2-048 | Y | Y | 2.3.x, cve-2017-9791 struts2-struts1-plugin rce |
| Apache Struts2 | S2-052 | Y | Y | 2.1.2 - 2.3.33, 2.5 - 2.5.12 cve-2017-9805 rest plugin rce |
| Apache Struts2 | S2-057 | Y | Y | 2.0.4 - 2.3.34, 2.5.0-2.5.16, cve-2018-11776 namespace rce |
| Apache Struts2 | S2-059 | Y | Y | 2.0.0 - 2.5.20, cve-2019-0230 ognl interpreter rce |
| Apache Struts2 | S2-061 | Y | Y | 2.0.0-2.5.25, cve-2020-17530 ognl interpreter rce |
| Apache Struts2 | S2-devMode | Y | Y | 2.1.0 - 2.5.1, devmode remote code execution |
| Apache Tomcat | Examples File | Y | N | all version, /examples/servlets/servlet |
| Apache Tomcat | CVE-2017-12615 | Y | Y | 7.0.0 - 7.0.81, put method any files upload |
| Apache Tomcat | CVE-2020-1938 | Y | Y | 6, 7 < 7.0.100, 8 < 8.5.51, 9 < 9.0.31 arbitrary file read |
| Apache Unomi | CVE-2020-13942 | Y | Y | < 1.5.2, apache unomi remote code execution |
| CoreMail | time-2021-0414 | Y | N | Coremail configuration information disclosure vulnerability |
| Drupal | CVE-2018-7600 | Y | Y | 6.x, 7.x, 8.x, drupalgeddon2 remote code execution |
| Drupal | CVE-2018-7602 | Y | Y | < 7.59, < 8.5.3 (except 8.4.8) drupalgeddon2 rce |
| Drupal | CVE-2019-6340 | Y | Y | < 8.6.10, drupal core restful remote code execution |
| Ecology | time-2021-0515 | Y | Y | <= 9.0, e-cology oa workflowservicexml rce |
| Elasticsearch | CVE-2014-3120 | Y | Y | < 1.2, elasticsearch remote code execution |
| Elasticsearch | CVE-2015-1427 | Y | Y | < 1.3.7, < 1.4.3, elasticsearch remote code execution |
| Exchange | CVE-2021-26855 | Y | N | 2010 2013 2016 2019, microsoft exchange server ssrf |
| Exchange | CVE-2021-27065 | Y | Y | 2010 2013 2016 2019, exchange arbitrary file write |
| Eyou Email | CNVD-2021-26422 | Y | Y | eyou email system has remote command execution |
| F5 BIG-IP | CVE-2020-5902 | Y | Y | < 11.6.x, f5 big-ip remote code execution |
| F5 BIG-IP | CVE-2021-22986 | Y | Y | < 16.0.1, f5 big-ip remote code execution |
| Fastjson | VER-1224-1 | Y | Y | <= 1.2.24 fastjson parse object remote code execution |
| Fastjson | VER-1224-2 | Y | Y | <= 1.2.24 fastjson parse object remote code execution |
| Fastjson | VER-1224-3 | Y | Y | <= 1.2.24 fastjson parse object remote code execution |
| Fastjson | VER-1247 | Y | Y | <= 1.2.47 fastjson autotype remote code execution |
| Fsatjson | VER-1262 | Y | Y | <= 1.2.62 fastjson autotype remote code execution |
| Jenkins | CVE-2017-1000353 | Y | N | <= 2.56, LTS <= 2.46.1, jenkins-ci remote code execution |
| Jenkins | CVE-2018-1000861 | Y | Y | <= 2.153, LTS <= 2.138.3, remote code execution |
| Laravel | CVE-2018-15133 | N | Y | 5.5.x <= 5.5.40, 5.6.x <= 5.6.29, laravel get app_key rce |
| Laravel | CVE-2021-3129 | Y | N | ignition <= 2.5.1, laravel debug mode remote code execution |
| Nexus OSS/Pro | CVE-2019-7238 | Y | Y | 3.6.2 - 3.14.0, remote code execution vulnerability |
| Nexus OSS/Pro | CVE-2020-10199 | Y | Y | 3.x <= 3.21.1, remote code execution vulnerability |
| Node.JS | CVE-2021-21315 | Y | N | systeminformation < 5.3.1, node.js command injection |
| Oracle Weblogic | CVE-2014-4210 | Y | N | 10.0.2 - 10.3.6, weblogic ssrf vulnerability |
| Oracle Weblogic | CVE-2016-0638 | Y | N | 10.3.6.0, 12.2.1-3, t3 deserialization rce |
| Oracle Weblogic | CVE-2017-3506 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.0-2, weblogic wls-wsat rce |
| Oracle Weblogic | CVE-2017-10271 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.1-2, weblogic wls-wsat rce |
| Oracle Weblogic | CVE-2018-2894 | Y | Y | 12.1.3.0, 12.2.1.2-3, deserialization any file upload |
| Oracle Weblogic | CVE-2018-3191 | Y | N | 10.3.6.0, 12.1.3.0, 12.2.1.3, t3 deserialization rce |
| Oracle Weblogic | CVE-2019-2725 | Y | Y | 10.3.6.0, 12.1.3.0, weblogic wls9-async deserialization rce |
| Oracle Weblogic | CVE-2019-2890 | Y | N | 10.3.6.0, 12.1.3.0, 12.2.1.3, t3 deserialization rce |
| Oracle Weblogic | CVE-2019-2729 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.3 wls9-async deserialization rce |
| Oracle Weblogic | CVE-2020-2551 | Y | N | 10.3.6.0, 12.1.3.0, 12.2.1.3-4, wlscore deserialization rce |
| Oracle Weblogic | CVE-2020-2555 | Y | Y | 3.7.1.17, 12.1.3.0.0, 12.2.1.3-4.0, t3 deserialization rce |
| Oracle Weblogic | CVE-2020-2883 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.3-4, iiop t3 deserialization rce |
| Oracle Weblogic | CVE-2020-14882 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.3-4, 14.1.1.0, console rce |
| Oracle Weblogic | CVE-2020-2109 | Y | Y | 10.3.6.0, 12.1.3.0, 12.2.1.3-4, 14.1.1.0, unauthorized jndi |
| QiAnXin | time-2021-0410 | Y | Y | qianxin ns-ngfw netkang next generation firewall front rce |
| RedHat JBoss | CVE-2010-0738 | Y | Y | 4.2.0 - 4.3.0, jmx-console deserialization any files upload |
| RedHat JBoss | CVE-2010-1428 | Y | Y | 4.2.0 - 4.3.0, web-console deserialization any files upload |
| RedHat JBoss | CVE-2015-7501 | Y | Y | 5.x, 6.x, jmxinvokerservlet deserialization any file upload |
| RuiJie | time_2021_0424 | Y | N | get account password, background rce |
| Saltstack | CVE-2021-25282 | Y | Y | < 3002.5, saltStack arbitrary file writing vulnerability |
| Spring Data | CVE-2018-1273 | Y | Y | 1.13 - 1.13.10, 2.0 - 2.0.5, spring data commons rce |
| 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, directory traversal |
| Spring Cloud | CVE-2020-5410 | Y | Y | < 2.2.3, < 2.1.9, directory traversal vulnerability |
| ThinkPHP | CVE-2019-9082 | Y | Y | < 3.2.4, thinkphp rememberme deserialization rce |
| ThinkPHP | CVE-2018-20062 | Y | Y | <= 5.0.23, 5.1.31, thinkphp rememberme deserialization rce |
| Vmware vCenter | time-2020-1013 | Y | N | <= 6.5u1, vmware vcenter arbitrary file reading (not cve) |
| Vmware vCenter | CVE-2021-21972 | Y | Y | 7.0 < 7.0U1c, 6.7 < 6.7U3l, 6.5 < 6.5U3n, any file upload |
| VMware vRealize | CVE-2021-21975 | Y | N | <= 8.3.0, vmware vrealize operations manager api ssrf |
+-------------------+------------------+-----+-----+-------------------------------------------------------------+
docker build -t vulmap/vulmap .
docker run --rm -ti vulmap/vulmap python vulmap.py -u https://www.example.com