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-2021-26084 — Analisi tecnica ed exploit proof-of-concept per CVE-2021-26084, una vulnerabilità di iniezione OGNL in Atlassian Confluence Server. Include analisi della causa principale, mappatura dei parametri vulnerabili e guida al rilevamento. | Kitploit
Strumenti/GitHubGitHub/nahcusira/cve-2021-26084
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniPenetration TestingApprendimento e Formazione
GitHubnahcusira/cve-2021-26084

CVE-2021-26084

Analisi tecnica ed exploit proof-of-concept per CVE-2021-26084, una vulnerabilità di iniezione OGNL in Atlassian Confluence Server. Include analisi della causa principale, mappatura dei parametri vulnerabili e guida al rilevamento.

Vedi Repository
122 anni 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

CVE-2021-26084

Versioni interessate

Versione < 6.13.23

6.14.0 ≤ Versione < 7.4.11

7.5.0 ≤ Versione < 7.11.6

7.12.0 ≤ Versione < 7.12.5

Causa, metodo di sfruttamento

Confluence utilizza un framework per mappare gli URL alle classi Java, creando quelli che vengono chiamati “action”. Gli URL delle action terminano con “.action” e sono definiti nel file xwork.xml in confluence-.jar e nel file atlassian-plugin.xml all'interno dei file JAR dei plugin inclusi. Ogni action contiene almeno un attributo name, che definisce il nome dell'azione, un attributo class, che definisce la classe Java che implementa l'action, e almeno un elemento result che determina quale template Velocity verrà mostrato dopo che l'action è stata invocata, in base al risultato dell'action. I valori comuni restituiti dalle action sono “error”, “input”, “success”, ma qualsiasi risultato può essere utilizzato se corrisponde a un elemento result nell'XML di XWork. Le action possono contenere un attributo method che consente di chiamare un metodo specifico della classe Java indicata. Quando non viene specificato alcun comando, viene chiamato il metodo doDefault(). Di seguito è riportata la voce di action per createpage-entervariables action:

image

Il metodo doEnter() della classe com.atlassian.confluence.pages.actions.PageVariablesAction gestisce le richieste a doenterpagevariables.action e restituisce i valori “error”, “input”, “success”. Questo porta alla visualizzazione del template Velocity.

image

Qui, il valore dell'attributo “name” di un elemento action corrisponde a un percorso /.action e determina quale template verrà mostrato come parte della risposta in base a error/success, ecc. Quindi, in questo esempio, basta accedere a /pages/doenterpagevariables.action per visualizzare il file del template Velocity.

image

Possiamo vedere come il template Velocity viene visualizzato nella pagina HTML.

image

Inserendo il nome del tag nel template come parametro, si nota che i valori vengono presi dal parametro della richiesta e restituiti nella risposta.

image

Uso di #tag: #tag (“attribute1”, “attribute2”, “attribute3”)

Các attribute này trong quá trình render sẽ được lấy tại AbstrctTagDirective.applyAttributes()

image

#tag ("Hidden" "name='queryString'" "value='ahihihi'")

Dopo che gli attributi sono stati recuperati dal metodo AbstrctTagDirective.applyAttributes(), vengono passati a AbstrctUITag.doEndTag()  AbstractUITag.evaluateParams().

image

Successivamente viene passato a WebWorkTagSupport.findValue()  OgnlValueFinder.findValue() con l'espressione.

image

Successivamente viene passato a SafeExpressionUtil.isSafeExpression().

image

Qui l'espressione viene passata alla compilazione, controllata contro la blacklist e inserita nella cache. Attraverso la fase di compilazione viene compilata nella forma ASTConst che, quando viene valutata, restituisce la stringa già compilata in precedenza.

image

Quando all'espressione viene aggiunto il carattere “’” dall'input, viene escapato in entità HTML.

image

Il punto di escaping è in HtmlAnnotationEscaper.annotatedValueInsert().

image

Qui viene chiamato il metodo ognl.JavaCharStream.readChar() che valuta i caratteri di escape Unicode, quindi quando si passa “\u0027” questo viene convertito in “’”. Di conseguenza è possibile eseguire l'escape e aggiungere un'espressione OGNL.

image

Ma è necessario superare la blacklist di OGNL come segue:

image

È possibile superarla utilizzando gli Array accessors invece del metodo “getClass” o dell'attributo “.class”.

queryString=aaa\u0027%2b#{\u0022\u0022[\u0022class\u0022]}%2b\u0027bbb

image

Metodo di rilevamento

Monitorare tutte le richieste di traffico HTTP in cui il componente del percorso dell'URI della richiesta contiene una delle stringhe nella colonna "URI Path" della tabella seguente:

Percorso URI | Parametri vulnerabili

/users/darkfeatures.action | featureKey

/users/enabledarkfeature.action | featureKey

/users/disabledarkfeature.action | featureKey

/login.action | token

/dologin.action | token

/signup.action | token

/dosignup.action | token

/pages/createpage-entervariables.action | queryString, linkCreation

/pages/doenterpagevariables.action | queryString

/pages/createpage.action | queryString

/pages/createpage-choosetemplate.action | queryString

/pages/docreatepagefromtemplate.action | queryString

/pages/docreatepage.action | queryString

/pages/createblogpost.action | queryString

/pages/docreateblogpost.action | queryString

/pages/copypage.action | queryString

/pages/docopypage.action | queryString

/plugins/editor-loader/editor.action | syncRev

Se viene trovata una richiesta di questo tipo, controllare il metodo HTTP della richiesta. Se il metodo della richiesta è POST, cercare i Parametri vulnerabili corrispondenti dalla tabella sopra nel corpo della richiesta HTTP; se il metodo della richiesta è GET, cercare i parametri nell'URI della richiesta HTTP. Verificare se il valore di uno qualsiasi dei Parametri vulnerabili contiene la stringa “\u0027” o la sua forma codificata in URL. In tal caso, il traffico deve essere considerato dannoso e potrebbe essere in corso un attacco che sfrutta questa vulnerabilità.

Scarica lo strumento