mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
123 lines
5.2 KiB
Markdown
123 lines
5.2 KiB
Markdown
# Jira & Confluence
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
|
|
## Check Privileges
|
|
|
|
In Jira, **privileges can be checked** by any user, authenticated or not, through the endpoints `/rest/api/2/mypermissions` or `/rest/api/3/mypermissions`. These endpoints reveal the user's current privileges. A notable concern arises when **non-authenticated users hold privileges**, indicating a **security vulnerability** that could potentially be eligible for a **bounty**. Similarly, **unexpected privileges for authenticated users** also highlight a **vulnerability**.
|
|
|
|
An important **update** was made on **1st February 2019**, requiring the 'mypermissions' endpoint to include a **'permission' parameter**. This requirement aims to **enhance security** by specifying the privileges being queried: [check it here](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
|
|
|
|
Example: `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'
|
|
```
|
|
|
|
## Automated enumeration
|
|
|
|
- [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
|
|
- [https://github.com/bcoles/jira_scan](https://github.com/bcoles/jira_scan)
|
|
|
|
## Atlasian Plugins
|
|
|
|
As indicated in this [**blog**](https://cyllective.com/blog/posts/atlassian-audit-plugins), in the documentation about [Plugin modules ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/plugin-modules/) it's possible to check the different types of plugins, like:
|
|
|
|
- [REST Plugin Module ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): Expose RESTful API endpoints
|
|
- [Servlet Plugin Module ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/servlet-plugin-module/): Deploy Java servlets as part of a plugin
|
|
- [Macro Plugin Module ↗](https://developer.atlassian.com/server/confluence/macro-module/): Implement Confluence Macros, i.e. parameterised HTML templates
|
|
|
|
This is an example of the macro plugin type:
|
|
|
|
```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; }
|
|
}
|
|
```
|
|
|
|
It's possible to observe that these plugins might be vulnerable to common web vulnerabilities like XSS. For example the previous example is vulnerable because it's reflecting data given by the user.
|
|
|
|
Once a XSS is found, in [**this github repo**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) you can find some payloads to increase the impact of the XSS.
|
|
|
|
## Backdoor Plugin
|
|
|
|
[**This post**](https://cyllective.com/blog/posts/atlassian-malicious-plugin) describes different (malicious) actions that could perform a malicious Jira plugin. You can find [**code example in this repo**](https://github.com/cyllective/malfluence).
|
|
|
|
These are some of the actions a malicious plugin could perform:
|
|
|
|
- **Hiding Plugins from Admins**: It's possible to hide the malicious plugin injecting some front-end javascript
|
|
- **Exfiltrating Attachments and Pages**: Allow to access and exfiltrate all the data.
|
|
- **Stealing Session Tokens**: Add an endpoint that will echo the headers in the response (with the cookie) and some javascript that will contact it and leak the cookies.
|
|
- **Command Execution**: Ofc it's possible to create a plugin that will execute code.
|
|
- **Reverse Shell**: Or get a reverse shell.
|
|
- **DOM Proxying**: If the confluence is inside a private network, it would be possible to establish a connection through the browser of some user with access to it and for example contact the server command executing through it.
|
|
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
|
|
|