Jira & Confluence

Reading time: 4 minutes

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

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 anch'essi una vulnerabilità.

Un'importante aggiornamento è stato effettuato il 1° febbraio 2019, richiedendo che l'endpoint 'mypermissions' includesse un parametro 'permission'. Questo requisito mira a migliorare la sicurezza specificando i privilegi che vengono interrogati: controllalo qui

  • ADD_COMMENTS
  • ADMINISTER
  • ADMINISTER_PROJECTS
  • ASSIGNABLE_USER
  • ASSIGN_ISSUES
  • BROWSE_PROJECTS
  • BULK_CHANGE
  • CLOSE_ISSUES
  • CREATE_ATTACHMENTS
  • CREATE_ISSUES
  • CREATE_PROJECT
  • CREATE_SHARED_OBJECTS
  • DELETE_ALL_ATTACHMENTS
  • DELETE_ALL_COMMENTS
  • DELETE_ALL_WORKLOGS
  • DELETE_ISSUES
  • DELETE_OWN_ATTACHMENTS
  • DELETE_OWN_COMMENTS
  • DELETE_OWN_WORKLOGS
  • EDIT_ALL_COMMENTS
  • EDIT_ALL_WORKLOGS
  • EDIT_ISSUES
  • EDIT_OWN_COMMENTS
  • EDIT_OWN_WORKLOGS
  • LINK_ISSUES
  • MANAGE_GROUP_FILTER_SUBSCRIPTIONS
  • MANAGE_SPRINTS_PERMISSION
  • MANAGE_WATCHERS
  • MODIFY_REPORTER
  • MOVE_ISSUES
  • RESOLVE_ISSUES
  • SCHEDULE_ISSUES
  • SET_ISSUE_SECURITY
  • SYSTEM_ADMIN
  • TRANSITION_ISSUES
  • USER_PICKER
  • VIEW_AGGREGATED_DATA
  • VIEW_DEV_TOOLS
  • VIEW_READONLY_WORKFLOW
  • VIEW_VOTERS_AND_WATCHERS
  • WORK_ON_ISSUES

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

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

java
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 comuni vulnerabilità web 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 agli Amministratori: È possibile nascondere il plugin malevolo iniettando del javascript front-end.
  • Esfiltrare Allegati e Pagine: Consente 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 esegue codice.
  • Shell Inversa: O ottenere una shell inversa.
  • Proxying DOM: Se il 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.

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks