Detection rules › Splunk

Confluence Pre-Auth RCE via OGNL Injection CVE-2023-22527

Status
production
Severity
medium
Group by
Web.src, Web.status, c-uri, c-useragent, cs-host
Author
Michael Haag, Splunk
Source
github.com/splunk/security_content

The following analytic identifies attempts to exploit a critical template injection vulnerability (CVE-2023-22527) in outdated Confluence Data Center and Server versions. It detects POST requests to the "/template/aui/text-inline.vm" endpoint with HTTP status codes 200 or 202, indicating potential OGNL injection attacks. This activity is significant as it allows unauthenticated attackers to execute arbitrary code remotely. If confirmed malicious, attackers could gain full control over the affected Confluence instance, leading to data breaches, system compromise, and further network infiltration. Immediate patching is essential to mitigate this threat.

Known false positives

  • False positives may be present with legitimate applications. Attempt to filter by dest IP or use Asset groups to restrict to confluence servers.

MITRE ATT&CK coverage

TacticTechniques
Initial Access

Rule body

name: Confluence Pre-Auth RCE via OGNL Injection CVE-2023-22527
id: f56936c0-ae6f-4eeb-91ff-ecc1448c6105
version: 9
creation_date: '2024-01-24'
modification_date: '2026-05-13'
author: Michael Haag, Splunk
status: production
type: TTP
description: The following analytic identifies attempts to exploit a critical template injection vulnerability (CVE-2023-22527) in outdated Confluence Data Center and Server versions. It detects POST requests to the "/template/aui/text-inline.vm" endpoint with HTTP status codes 200 or 202, indicating potential OGNL injection attacks. This activity is significant as it allows unauthenticated attackers to execute arbitrary code remotely. If confirmed malicious, attackers could gain full control over the affected Confluence instance, leading to data breaches, system compromise, and further network infiltration. Immediate patching is essential to mitigate this threat.
data_source:
    - Suricata
search: |-
    | tstats count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Web
      WHERE Web.url="*/template/aui/text-inline.vm*" Web.http_method=POST Web.status IN (200, 202)
      BY Web.src, Web.dest, Web.http_user_agent,
         Web.url, Web.status
    | `drop_dm_object_name("Web")`
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `confluence_pre_auth_rce_via_ognl_injection_cve_2023_22527_filter`
how_to_implement: To successfully implement this search you need to be ingesting information on Web traffic that include fields relavent for traffic into the `Web` datamodel.
known_false_positives: False positives may be present with legitimate applications. Attempt to filter by dest IP or use Asset groups to restrict to confluence servers.
references:
    - https://github.com/cleverg0d/CVE-2023-22527
    - https://confluence.atlassian.com/security/cve-2023-22527-rce-remote-code-execution-vulnerability-in-confluence-data-center-and-confluence-server-1333990257.html
finding:
    title: Exploitation attempts on a known vulnerability in Atlassian Confluence detected. The source IP is $src$ and the destination hostname is $dest$.
    entity:
        field: dest
        type: system
        score: 50
threat_objects:
    - field: src
      type: ip_address
analytic_story:
    - Confluence Data Center and Confluence Server Vulnerabilities
asset_type: Web Application
cve:
    - CVE-2023-22527
mitre_attack_id:
    - T1190
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: web
security_domain: network

Stages and Predicates

Stage 1: tstats

| tstats count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Web
  WHERE Web.url="*/template/aui/text-inline.vm*" Web.http_method=POST Web.status IN (200, 202)
  BY Web.src, Web.dest, Web.http_user_agent,
     Web.url, Web.status

Stage 2: search

| `drop_dm_object_name("Web")`

Stage 3: search

| `security_content_ctime(firstTime)`

Stage 4: search

| `security_content_ctime(lastTime)`

Stage 5: search

| `confluence_pre_auth_rce_via_ognl_injection_cve_2023_22527_filter`

Indicators

These rows show field, operator, and value matches.