Jira & Confluence

Support HackTricks

Se sei interessato a una carriera nel hacking e a hackare l'inhackabile - stiamo assumendo! (richiesta di polacco fluente scritto e parlato).

Controlla i privilegi

In Jira, i privilegi possono essere controllati da qualsiasi utente, autenticato o meno, attraverso gli endpoint /rest/api/2/mypermissions o /rest/api/3/mypermissions. Questi endpoint rivelano i privilegi attuali dell'utente. Una preoccupazione notevole sorge quando gli utenti non autenticati detengono privilegi, indicando una vulnerabilità di sicurezza che potrebbe potenzialmente essere idonea per un bounty. Allo stesso modo, privilegi inaspettati per gli utenti autenticati evidenziano anche una vulnerabilità.

Un'importante aggiornamento è stato effettuato il 1° febbraio 2019, richiedendo all'endpoint 'mypermissions' di includere un parametro 'permission'. Questo requisito mira a migliorare la sicurezza specificando i privilegi richiesti: controllalo qui

  • ADD_COMMENTS

  • ADMINISTRARE

  • ADMINISTRARE_PROGETTI

  • UTENTE_ASSEGNA

  • ASSEGNA_ISSUE

  • BROWSE_PROGETTI

  • CAMBIO_MASSIVO

  • CHIUDI_ISSUE

  • CREA_ALLEGATI

  • CREA_ISSUE

  • CREA_PROGETTO

  • CREA_OGGETTI_CONDIVISI

  • ELIMINA_TUTTI_GLI_ALLEGATI

  • ELIMINA_TUTTI_I_COMMENTI

  • ELIMINA_TUTTI_I_WORKLOG

  • ELIMINA_ISSUE

  • ELIMINA_PROPRI_ALLEGATI

  • ELIMINA_PROPRI_COMMENTI

  • ELIMINA_PROPRI_WORKLOG

  • MODIFICA_TUTTI_I_COMMENTI

  • MODIFICA_TUTTI_I_WORKLOG

  • MODIFICA_ISSUE

  • MODIFICA_PROPRI_COMMENTI

  • MODIFICA_PROPRI_WORKLOG

  • COLLEGA_ISSUE

  • GESTISCI_ISCRIZIONI_FILTRI_GRUPPO

  • GESTISCI_PERMESSO_SPRINT

  • GESTISCI_GUARDIANI

  • MODIFICA_RAPPRESENTANTE

  • MUOVI_ISSUE

  • RISOLVI_ISSUE

  • PROGRAMMA_ISSUE

  • IMPOSTA_SICUREZZA_ISSUE

  • AMMINISTRATORE_DI_SYSTEM

  • TRANSIZIONE_ISSUE

  • SELETTORE_UTENTE

  • VISUALIZZA_DATI_AGGREGATI

  • VISUALIZZA_STRUMENTI_DEV

  • VISUALIZZA_WORKFLOW_DI_SOLI_LETTURA

  • VISUALIZZA_VOTANTI_E_GUARDIANI

  • LAVORA_SU_ISSUE

Esempio: https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS

#Check non-authenticated privileges
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'

Enumerazione automatizzata

Plugin Atlassian

Come indicato in questo blog, nella documentazione sui moduli plugin ↗ è possibile controllare i diversi tipi di plugin, come:

Questo è un esempio del tipo di plugin macro:

package com.atlassian.tutorial.macro;

import com.atlassian.confluence.content.render.xhtml.ConversionContext;
import com.atlassian.confluence.macro.Macro;
import com.atlassian.confluence.macro.MacroExecutionException;

import java.util.Map;

public class helloworld implements Macro {

public String execute(Map<String, String> map, String body, ConversionContext conversionContext) throws MacroExecutionException {
if (map.get("Name") != null) {
return ("<h1>Hello " + map.get("Name") + "!</h1>");
} else {
return "<h1>Hello World!<h1>";
}
}

public BodyType getBodyType() { return BodyType.NONE; }

public OutputType getOutputType() { return OutputType.BLOCK; }
}

È possibile osservare che questi plugin potrebbero essere vulnerabili a vulnerabilità web comuni come XSS. Ad esempio, l'esempio precedente è vulnerabile perché riflette i dati forniti dall'utente.

Una volta trovato un XSS, in questo repo github puoi trovare alcuni payload per aumentare l'impatto dell'XSS.

Plugin Backdoor

Questo post descrive diverse azioni (maligne) che potrebbe eseguire un plugin Jira malevolo. Puoi trovare un esempio di codice in questo repo.

Queste sono alcune delle azioni che un plugin malevolo potrebbe eseguire:

  • Nascondere i Plugin dagli Amministratori: È possibile nascondere il plugin malevolo iniettando del javascript front-end.

  • Esfiltrare Allegati e Pagine: Permettere di accedere e esfiltrare tutti i dati.

  • Furto di Token di Sessione: Aggiungere un endpoint che restituirà gli header nella risposta (con il cookie) e del javascript che lo contatterà e esfiltrerà i cookie.

  • Esecuzione di Comandi: Ovviamente è possibile creare un plugin che eseguirà codice.

  • Reverse Shell: O ottenere una reverse shell.

  • Proxying DOM: Se Confluence è all'interno di una rete privata, sarebbe possibile stabilire una connessione attraverso il browser di un utente con accesso e, ad esempio, contattare il server eseguendo comandi attraverso di esso.

Se sei interessato a una carriera nel hacking e a hackare l'inhackabile - stiamo assumendo! (richiesta di polacco fluente scritto e parlato).

Supporta HackTricks

Last updated