# Jira & Confluence {{#include ../../banners/hacktricks-training.md}} ## Sprawdź uprawnienia W Jira, **uprawnienia mogą być sprawdzane** przez każdego użytkownika, uwierzytelnionego lub nie, za pośrednictwem punktów końcowych `/rest/api/2/mypermissions` lub `/rest/api/3/mypermissions`. Te punkty końcowe ujawniają aktualne uprawnienia użytkownika. Istotnym problemem jest, gdy **nieautoryzowani użytkownicy posiadają uprawnienia**, co wskazuje na **lukę w zabezpieczeniach**, która może kwalifikować się do **nagrody**. Podobnie, **nieoczekiwane uprawnienia dla użytkowników uwierzytelnionych** również podkreślają **lukę**. Ważna **aktualizacja** miała miejsce **1 lutego 2019**, wymagająca, aby punkt końcowy 'mypermissions' zawierał **parametr 'permission'**. Wymóg ten ma na celu **zwiększenie bezpieczeństwa** poprzez określenie uprawnień, które są sprawdzane: [sprawdź to tutaj](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 Przykład: `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' ``` ## Automatyczna enumeracja - [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe) - [https://github.com/bcoles/jira_scan](https://github.com/bcoles/jira_scan) ## Wtyczki Atlassian Jak wskazano w tym [**blogu**](https://cyllective.com/blog/posts/atlassian-audit-plugins), w dokumentacji dotyczącej [modułów wtyczek ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/plugin-modules/) można sprawdzić różne typy wtyczek, takie jak: - [Moduł wtyczki REST ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module): Ekspozycja punktów końcowych API RESTful - [Moduł wtyczki Servlet ↗](https://developer.atlassian.com/server/framework/atlassian-sdk/servlet-plugin-module/): Wdrażanie serwletów Java jako część wtyczki - [Moduł wtyczki Makro ↗](https://developer.atlassian.com/server/confluence/macro-module/): Implementacja makr Confluence, tj. parametryzowane szablony HTML To jest przykład typu wtyczki makro: ```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; } } ``` Można zauważyć, że te wtyczki mogą być podatne na powszechne luki w zabezpieczeniach, takie jak XSS. Na przykład poprzedni przykład jest podatny, ponieważ odzwierciedla dane podane przez użytkownika. Gdy znajdziesz XSS, w [**tej repozytorium github**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) możesz znaleźć kilka ładunków, aby zwiększyć wpływ XSS. ## Wtyczka Backdoor [**Ten post**](https://cyllective.com/blog/posts/atlassian-malicious-plugin) opisuje różne (złośliwe) działania, które mogłaby wykonać złośliwa wtyczka Jira. Możesz znaleźć [**przykład kodu w tym repozytorium**](https://github.com/cyllective/malfluence). Oto niektóre z działań, które mogłaby wykonać złośliwa wtyczka: - **Ukrywanie wtyczek przed administratorami**: Możliwe jest ukrycie złośliwej wtyczki poprzez wstrzyknięcie jakiegoś javascriptu front-endowego. - **Ekstrakcja załączników i stron**: Umożliwia dostęp i ekstrakcję wszystkich danych. - **Kradzież tokenów sesji**: Dodaj punkt końcowy, który będzie odzwierciedlał nagłówki w odpowiedzi (z ciasteczkiem) oraz jakiś javascript, który się z nim skontaktuje i wycieknie ciasteczka. - **Wykonanie polecenia**: Oczywiście możliwe jest stworzenie wtyczki, która wykona kod. - **Reverse Shell**: Lub uzyskanie reverse shell. - **Proxy DOM**: Jeśli confluence znajduje się w prywatnej sieci, możliwe byłoby nawiązanie połączenia przez przeglądarkę jakiegoś użytkownika z dostępem do niej i na przykład skontaktowanie się z serwerem, wykonując polecenia przez to. {{#include ../../banners/hacktricks-training.md}}