Jira & Confluence

Support HackTricks

If you are interested in hacking career and hack the unhackable - we are hiring! (se requiere polaco fluido escrito y hablado).

Check Privileges

En Jira, los privilegios pueden ser verificados por cualquier usuario, autenticado o no, a través de los endpoints /rest/api/2/mypermissions o /rest/api/3/mypermissions. Estos endpoints revelan los privilegios actuales del usuario. Una preocupación notable surge cuando los usuarios no autenticados tienen privilegios, lo que indica una vulnerabilidad de seguridad que podría ser elegible para un bounty. De manera similar, privilegios inesperados para usuarios autenticados también destacan una vulnerabilidad.

Una actualización importante se realizó el 1 de febrero de 2019, requiriendo que el endpoint 'mypermissions' incluya un 'parámetro de permiso'. Este requisito tiene como objetivo mejorar la seguridad al especificar los privilegios que se están consultando: ver aquí

  • 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

Ejemplo: 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'

Enumeración automatizada

Plugins de Atlassian

Como se indica en este blog, en la documentación sobre Módulos de plugins ↗ es posible verificar los diferentes tipos de plugins, como:

Este es un ejemplo del tipo de 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; }
}

Es posible observar que estos plugins podrían ser vulnerables a vulnerabilidades web comunes como XSS. Por ejemplo, el ejemplo anterior es vulnerable porque refleja datos proporcionados por el usuario.

Una vez que se encuentra un XSS, en este repositorio de github puedes encontrar algunos payloads para aumentar el impacto del XSS.

Plugin de puerta trasera

Esta publicación describe diferentes acciones (maliciosas) que podría realizar un plugin malicioso de Jira. Puedes encontrar un ejemplo de código en este repositorio.

Estas son algunas de las acciones que un plugin malicioso podría realizar:

  • Ocultar plugins de los administradores: Es posible ocultar el plugin malicioso inyectando algún javascript del lado del cliente.

  • Exfiltración de archivos adjuntos y páginas: Permitir acceder y exfiltrar todos los datos.

  • Robo de tokens de sesión: Agregar un endpoint que refleje los encabezados en la respuesta (con la cookie) y algún javascript que lo contacte y filtre las cookies.

  • Ejecución de comandos: Por supuesto, es posible crear un plugin que ejecute código.

  • Shell inverso: O conseguir un shell inverso.

  • Proxy de DOM: Si el confluence está dentro de una red privada, sería posible establecer una conexión a través del navegador de algún usuario con acceso a él y, por ejemplo, contactar al servidor ejecutando comandos a través de él.

Si estás interesado en una carrera en hacking y hackear lo inhackeable - ¡estamos contratando! (se requiere polaco fluido escrito y hablado).

Apoya a HackTricks

Last updated