114 lines
5.4 KiB
Markdown

# Jira & Confluence
{{#include ../../banners/hacktricks-training.md}}
## Verificar Privilégios
No Jira, **os privilégios podem ser verificados** por qualquer usuário, autenticado ou não, através dos endpoints `/rest/api/2/mypermissions` ou `/rest/api/3/mypermissions`. Esses endpoints revelam os privilégios atuais do usuário. Uma preocupação notável surge quando **usuários não autenticados possuem privilégios**, indicando uma **vulnerabilidade de segurança** que pode potencialmente ser elegível para um **bounty**. Da mesma forma, **privilégios inesperados para usuários autenticados** também destacam uma **vulnerabilidade**.
Uma **atualização** importante foi feita em **1º de fevereiro de 2019**, exigindo que o endpoint 'mypermissions' incluísse um **parâmetro 'permission'**. Este requisito visa **aumentar a segurança** especificando os privilégios que estão sendo consultados: [verifique aqui](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
- 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
Exemplo: `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'
```
## Enumeração automatizada
- [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
- [https://github.com/bcoles/jira_scan](https://github.com/bcoles/jira_scan)
## Plugins Atlassian
Conforme indicado neste [**blog**](https://cyllective.com/blog/posts/atlassian-audit-plugins), na documentação sobre [Módulos de Plugin ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/plugin-modules/) é possível verificar os diferentes tipos de plugins, como:
- [Módulo de Plugin REST ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): Expõe endpoints de API RESTful
- [Módulo de Plugin Servlet ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/servlet-plugin-module/): Implantar servlets Java como parte de um plugin
- [Módulo de Plugin Macro ↗](https://developer.atlassian.com/server/confluence/macro-module/): Implementar Macros do Confluence, ou seja, templates HTML parametrizados
Este é um exemplo do tipo de 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; }
}
```
É possível observar que esses plugins podem ser vulneráveis a vulnerabilidades web comuns, como XSS. Por exemplo, o exemplo anterior é vulnerável porque reflete dados fornecidos pelo usuário.
Uma vez que um XSS é encontrado, em [**este repositório do github**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) você pode encontrar alguns payloads para aumentar o impacto do XSS.
## Plugin de Backdoor
[**Este post**](https://cyllective.com/blog/posts/atlassian-malicious-plugin) descreve diferentes ações (maliciosas) que um plugin malicioso do Jira poderia realizar. Você pode encontrar [**exemplo de código neste repositório**](https://github.com/cyllective/malfluence).
Estas são algumas das ações que um plugin malicioso poderia realizar:
- **Ocultar Plugins de Administradores**: É possível ocultar o plugin malicioso injetando algum javascript no front-end.
- **Exfiltrar Anexos e Páginas**: Permitir acessar e exfiltrar todos os dados.
- **Roubar Tokens de Sessão**: Adicionar um endpoint que irá ecoar os cabeçalhos na resposta (com o cookie) e algum javascript que irá contatá-lo e vazar os cookies.
- **Execução de Comandos**: Claro que é possível criar um plugin que executará código.
- **Shell Reversa**: Ou obter uma shell reversa.
- **Proxy DOM**: Se o confluence estiver dentro de uma rede privada, seria possível estabelecer uma conexão através do navegador de algum usuário com acesso a ele e, por exemplo, contatar o servidor executando comandos através dele.
{{#include ../../banners/hacktricks-training.md}}