如何利用CodeQL挖掘CVE-2020-10199

本文介绍了如何利用CodeQL来挖掘CVE-2020-10199,一个Nexus Repository Manager的远程代码执行漏洞。通过分析漏洞原理和数据流,确定了HelperBean bean#message和AbstractGroupRepositoriesApiResource#validateGroupMembers为关键点。CodeQL帮助明确了方法调用的数据流,并找到了可控点,揭示了从request到HelperBean的潜在注入路径。
摘要由CSDN通过智能技术生成

前言

挖掘Java漏洞时候存在一个痛点在已知漏洞点的情况下,如何找到可控点,以及确定一条具体的数据流.

前几天看到@Alvaro Muñoz 利用codeql挖掘到[CVE-2020-10199]Nexus Repository Manager远程代码执行漏洞.于是就对codeql产生强烈的好奇心,怼了几天codeql语法和CVE案例。抠出挖掘该CVE的Ql代码

Codeql

对Codeql具体介绍可以参考:https://help.semmle.com/

使用codeql能够很明确搜索出方法调用的数据流, QL代码编写思路相当于在一个代码数据库中利用编写的逻辑搜索出可能的调用点。重点是确定Souce和Sink搜索逻辑.

漏洞原理简要分析

该漏洞是由于未做过滤造成表达式注入,作者确定漏洞点执行函数 buildConstraintViolationWithTemplate, 其该方法中 bean.getMessage() 返回结果 message 并未使用 stripJavaEl 方法过滤造成表达式注入

最后调用 org.hibernate.validator.internal.engine.messageinterpolation#interpolate ,执行插入操作并解析恶意字符串,造成表达式注入.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值