sploitscan

Outil d'agrégation de CVE et d'exploits. Recherche des CVE à travers NVD, EPSS, CISA KEV et des bases d'exploits pour évaluer le risque et trouver du code d'exploitation disponible. CVE search and exploit aggregation tool. Looks up CVEs across NVD, EPSS, CISA KEV, and exploit databases to assess risk and find available exploit code.

↗ https://github.com/xaitax/SploitScan

Overview

SploitScan aggregates CVE intelligence from multiple sources — NVD (CVSS scores), EPSS (exploit probability), CISA KEV (known exploited), ExploitDB, GitHub PoCs, and Nuclei templates. Given a CVE or software version, it quickly shows severity, exploitation likelihood, and available exploit code.

Installation

git clone https://github.com/xaitax/SploitScan
cd SploitScan
pip3 install -r requirements.txt

Basic Usage

Look up a specific CVE

python3 sploitscan.py CVE-2021-44228

Multiple CVEs

python3 sploitscan.py CVE-2021-44228 CVE-2022-0847

Import CVEs from file

python3 sploitscan.py -f cves.txt

Output as JSON

python3 sploitscan.py CVE-2021-44228 -e json

Output Information

For each CVE:
  CVE ID          — identifier
  CVSS Score      — severity (0-10)
  CVSS Vector     — attack complexity, privileges needed, etc.
  EPSS Score      — probability of exploitation in next 30 days
  CISA KEV        — whether it's in CISA's Known Exploited Vulnerabilities list
  ExploitDB       — links to exploit-db entries
  GitHub PoCs     — links to public proof-of-concept repositories
  Nuclei Template — whether a nuclei detection template exists
  Patch Status    — if/when a patch is available

Example Output

CVE-2021-44228 (Log4Shell)
==========================
CVSS Score: 10.0 (CRITICAL)
EPSS Score: 97.56% (Very High)
CISA KEV: Yes (Added 2021-12-10)

Exploits:
  ExploitDB: https://www.exploit-db.com/exploits/51183
  GitHub PoC: https://github.com/...
  Nuclei Template: Yes (cves/2021/CVE-2021-44228.yaml)

Summary: Unauthenticated RCE via Log4j JNDI lookup.

Risk Prioritization

# EPSS score > 50% = high probability of exploitation
# CISA KEV = actively exploited in the wild
# CVSS 9.0+ = critical severity

# Triage CVE list by risk
python3 sploitscan.py -f cves.txt -e json | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
for cve in sorted(data, key=lambda x: x.get('epss', 0), reverse=True):
    print(cve['cve_id'], 'EPSS:', cve.get('epss', 0))
"

Integration Workflows

Post-nmap: research found service versions Example: found Apache 2.4.49 → look up known CVEs

python3 sploitscan.py CVE-2021-41773 CVE-2021-42013
# Post-scanning: research all CVEs from a report
grep "CVE-" nessus_report.txt | grep -oP "CVE-\d{4}-\d+" | sort -u > cves.txt
python3 sploitscan.py -f cves.txt

Daily threat intel check

python3 sploitscan.py $(curl -s https://www.cisa.gov/known-exploited-vulnerabilities-catalog | grep -oP "CVE-\d{4}-\d+" | head -10 | tr '\n' ' ')

Tips

  • EPSS score is more actionable than CVSS — a 10.0 CVSS with 0.1% EPSS is less urgent than 7.0 with 95% EPSS
  • CISA KEV = actively exploited NOW — patch immediately when in KEV
  • A Nuclei template existing means detection is easy — likely being actively scanned for
  • Combine with your asset inventory to quickly find what’s vulnerable in your environment
Help / Man page
sploitscan.py [options] [CVE-ID ...]

CVE-ID          CVE(s) to look up
-f FILE         File with CVE IDs (one per line)
-e FORMAT       Export format: json, csv, html
-v              Verbose output

Vue d’ensemble

SploitScan agrège des renseignements sur les CVE depuis plusieurs sources : NVD (scores CVSS), EPSS (probabilité d’exploitation), CISA KEV (exploitation connue), ExploitDB, PoC GitHub et templates Nuclei. Pour un CVE ou une version logicielle donnée, il affiche rapidement la sévérité, la probabilité d’exploitation et le code d’exploitation disponible.

Installation

git clone https://github.com/xaitax/SploitScan
cd SploitScan
pip3 install -r requirements.txt

Utilisation de base

# Rechercher un CVE spécifique
python3 sploitscan.py CVE-2021-44228

# Plusieurs CVE
python3 sploitscan.py CVE-2021-44228 CVE-2022-0847

# Importer des CVE depuis un fichier
python3 sploitscan.py -f cves.txt

# Sortie en JSON
python3 sploitscan.py CVE-2021-44228 -e json

Informations en sortie

Pour chaque CVE :
  CVE ID          : identifiant
  CVSS Score      : sévérité (0-10)
  CVSS Vector     : complexité d'attaque, privilèges requis, etc.
  EPSS Score      : probabilité d'exploitation dans les 30 prochains jours
  CISA KEV        : présence dans la liste CISA Known Exploited Vulnerabilities
  ExploitDB       : liens vers les entrées exploit-db
  GitHub PoCs     : liens vers des dépôts de preuves de concept publics
  Nuclei Template : présence d'un template de détection nuclei
  Patch Status    : si/quand un correctif est disponible

Exemple de sortie

CVE-2021-44228 (Log4Shell)
==========================
CVSS Score: 10.0 (CRITICAL)
EPSS Score: 97.56% (Very High)
CISA KEV: Yes (Added 2021-12-10)

Exploits:
  ExploitDB: https://www.exploit-db.com/exploits/51183
  GitHub PoC: https://github.com/...
  Nuclei Template: Yes (cves/2021/CVE-2021-44228.yaml)

Summary: Unauthenticated RCE via Log4j JNDI lookup.

Priorisation du risque

# Score EPSS > 50% = forte probabilité d'exploitation
# CISA KEV = activement exploité dans la nature
# CVSS 9.0+ = sévérité critique

# Trier une liste de CVE par risque
python3 sploitscan.py -f cves.txt -e json | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
for cve in sorted(data, key=lambda x: x.get('epss', 0), reverse=True):
    print(cve['cve_id'], 'EPSS:', cve.get('epss', 0))
"

Workflows d’intégration

Post-nmap : rechercher les versions de service trouvées. Exemple : trouvé Apache 2.4.49 → rechercher les CVE connus

python3 sploitscan.py CVE-2021-41773 CVE-2021-42013
# Post-scanning : rechercher tous les CVE d'un rapport
grep "CVE-" nessus_report.txt | grep -oP "CVE-\d{4}-\d+" | sort -u > cves.txt
python3 sploitscan.py -f cves.txt

Vérification quotidienne de threat intel

python3 sploitscan.py $(curl -s https://www.cisa.gov/known-exploited-vulnerabilities-catalog | grep -oP "CVE-\d{4}-\d+" | head -10 | tr '\n' ' ')

Conseils

  • Le score EPSS est plus actionnable que le CVSS : un CVSS de 10.0 avec un EPSS de 0.1% est moins urgent qu’un 7.0 avec 95% d’EPSS
  • CISA KEV signifie activement exploité MAINTENANT : patcher immédiatement lorsqu’un CVE est dans le KEV
  • L’existence d’un template Nuclei signifie que la détection est facile : probablement activement scanné
  • Combiner avec son inventaire d’actifs pour trouver rapidement ce qui est vulnérable dans son environnement
Aide / Page de manuel
sploitscan.py [options] [CVE-ID ...]

CVE-ID          CVE(s) to look up
-f FILE         File with CVE IDs (one per line)
-e FORMAT       Export format: json, csv, html
-v              Verbose output