# 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 map, String body, ConversionContext conversionContext) throws MacroExecutionException { if (map.get("Name") != null) { return ("

Hello " + map.get("Name") + "!

"); } else { return "

Hello World!

"; } } 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}}