114 lines
5.4 KiB
Markdown

# 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<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; }
}
```
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}}