SQL JDBC XXE漏洞复现-CVE-2021-2471

MySQL JDBC XXE漏洞复现-CVE-2021-2471

先粘贴上大哥的连接:【最新漏洞预警】CVE-2021-2471-MySQL JDBC XXE漏洞分析与概念验证

班门弄斧,不足挂齿,刚学java审计,很多东西都是我自己琢磨牵强附会也不知道对不对,各位师傅请斧正!!!

审计的环境获取:我是通过maven仓库直接拖出来的

这个洞出在Mysql JDBC在处理XML字符串的时候没有对输入字符串进行验证,漏洞的关键点在于MySQL的SQLXML对象的setString函数参数可控。
我们直接从XML的处理类MysqlSQLXML,中的getSource函数开始看:
在这里插入图片描述
该函数传入参数clazz,然后进行判断如果clazz不为空且不等于SAXSource.class那么再进入下一个if语句判断其值是否等于DOMSource.class,如果相等,则实例化一个XML构建器。最终解析XML的是这一句。
return new DOMSource(builder.parse(inputSource));
此时我们需要看inputsource是否可控,inputSource来自上面:
inputSource = new InputSource(new StringReader(this.stringRep));
这时候就要看this.stringRep是否可控,我们追踪一下stringRep,到如下位置:
在这里插入图片描述
可以看到stringRep被private修饰,那么不出意外可能有一个setString方法与getString对他进行操作,可能也没有,我们再整个类中搜索stringRep,最终定位到:
在这里插入图片描述
stringRep在此处被赋值为str,该str为setString方法的参数,那么此时只需要通过MysqlSQLXML的实例化对象调用该方法就可以实现XXE攻击了,也就是:

AObject.setString("<?xml version="1.0" ?>

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值