mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
114 lines
6.8 KiB
Markdown
114 lines
6.8 KiB
Markdown
# Jira & Confluence
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Перевірка привілеїв
|
||
|
||
У Jira, **привілеї можна перевірити** будь-яким користувачем, автентифікованим чи ні, через кінцеві точки `/rest/api/2/mypermissions` або `/rest/api/3/mypermissions`. Ці кінцеві точки розкривають поточні привілеї користувача. Значна проблема виникає, коли **неавтентифіковані користувачі мають привілеї**, що вказує на **вразливість безпеки**, яка потенційно може бути підставою для **бонусу**. Аналогічно, **неочікувані привілеї для автентифікованих користувачів** також підкреслюють **вразливість**.
|
||
|
||
Важливе **оновлення** було зроблено **1 лютого 2019 року**, що вимагало, щоб кінцева точка 'mypermissions' включала **параметр 'permission'**. Це вимога має на меті **підвищити безпеку**, уточнюючи привілеї, які запитуються: [перевірте це тут](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
|
||
|
||
Приклад: `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'
|
||
```
|
||
## Автоматизована енумерація
|
||
|
||
- [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
|
||
- [https://github.com/bcoles/jira_scan](https://github.com/bcoles/jira_scan)
|
||
|
||
## Плагіни Atlasian
|
||
|
||
Як зазначено в цьому [**блоці**](https://cyllective.com/blog/posts/atlassian-audit-plugins), у документації про [модулі плагінів ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/plugin-modules/) можна перевірити різні типи плагінів, такі як:
|
||
|
||
- [REST Plugin Module ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): Відкриває RESTful API кінцеві точки
|
||
- [Servlet Plugin Module ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/servlet-plugin-module/): Розгортає Java сервлети як частину плагіна
|
||
- [Macro Plugin Module ↗](https://developer.atlassian.com/server/confluence/macro-module/): Реалізує макроси Confluence, тобто параметризовані HTML шаблони
|
||
|
||
Це приклад типу макро плагіна:
|
||
```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; }
|
||
}
|
||
```
|
||
Можна спостерігати, що ці плагіни можуть бути вразливими до загальних веб-вразливостей, таких як XSS. Наприклад, попередній приклад вразливий, оскільки відображає дані, надані користувачем.
|
||
|
||
Якщо XSS знайдено, в [**цьому репозиторії github**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) ви можете знайти деякі payload'и для збільшення впливу XSS.
|
||
|
||
## Плагін з бекдором
|
||
|
||
[**Ця стаття**](https://cyllective.com/blog/posts/atlassian-malicious-plugin) описує різні (зловмисні) дії, які може виконати зловмисний плагін Jira. Ви можете знайти [**приклад коду в цьому репозиторії**](https://github.com/cyllective/malfluence).
|
||
|
||
Ось деякі з дій, які може виконати зловмисний плагін:
|
||
|
||
- **Сховування плагінів від адміністраторів**: Можливо сховати зловмисний плагін, інжектуючи деякий front-end javascript.
|
||
- **Екстракція вкладень і сторінок**: Дозволяє отримати доступ і екстрактувати всі дані.
|
||
- **Крадіжка токенів сесії**: Додати кінцеву точку, яка буде відображати заголовки у відповіді (з cookie) і деякий javascript, який буде контактувати з нею і витікати cookie.
|
||
- **Виконання команд**: Звичайно, можливо створити плагін, який буде виконувати код.
|
||
- **Зворотний шелл**: Або отримати зворотний шелл.
|
||
- **DOM-проксіювання**: Якщо Confluence знаходиться в приватній мережі, буде можливим встановити з'єднання через браузер деякого користувача з доступом до нього і, наприклад, зв'язатися з сервером для виконання команд через нього.
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|