HelperBean bean#message
Ql代码
import java
import semmle.code.java.dataflow.FlowSources
class Config extends DataFlow::Configuration{
Config(){
this = "1"
}
override predicate isSource(DataFlow::Node source){
exists(source.asExpr())
}
override predicate isSink(DataFlow::Node sink){
exists(
Parameter p | p = sink.asParameter() and p.getCallable().getName() = "HelperBean" and p.getName() = "message"
)
}
}
from Config config ,DataFlow::PathNode source, DataFlow::PathNode sink
where config.hasFlowPath(source, sink)
select source.getNode().getLocation(),source,sink
搜索结果
Run Query AbstractGroupRepositoriesApiResource#validateGroupMembers
根据搜索结果,这里最可疑的souce就是AbstractGroupRepositoriesApiResource:92.点击该结果跟进,Codeql很友好对污染点respositoryName进行标记。向上溯源得到respositoryName值最终由request中获取. Ql代码
现在就是需要确定AbstractGroupRepositoriesApiResource#validateGroupMembers()方法由哪里调用. isSink方法搜索逻辑:定义参数p,该参数p由被调用的validateGroupMembers方法使用且该p参数名为request isSouce方法搜索逻辑:这里souce原本是用Codeql自带RemoteFlowSource获取,但是发现并没有结果。所以这里直接用souce.asExpr()搜索全局表达式。 import java
import semmle.code.java.dataflow.FlowSources
class Config extends DataFlow::Configuration{
Config(){
this = "1"
}
override predicate isSource(DataFlow::Node source){
exists(source.asExpr())
}
override predicate isSink(DataFlow::Node sink){
exists(
Parameter p | p = sink.asParameter() and p.getCallable().getName() = "validateGroupMembers" and p.getName() = "request"
)
}
}
// 得到可能可控的函数
from Config config ,DataFlow::PathNode source, DataFlow::PathNode sink
where config.hasFlowPath(source, sink)
select source, sink
搜索结果
Run Query 其中GolangGroupRepositoriesApiResource就是该漏洞调用的可控点. 结语
原文有误,还请师傅们斧正。希望师傅们喜欢 参考链接 https://help.semmle.com/wiki/display/CBJAVA/Override+of+method
https://help.semmle.com/QL/ql-explore-queries.html
https://help.semmle.com/qldoc/java/https://www.youtube.com/watch?v=irrYp3wdtsw https://securitylab.github.com/advisories/GHSL-2020-011-nxrm-sonatype - 结尾 - 精彩推荐 【技术分享】前尘——内存中无处可寻的木马 【技术分享】mruby字节码逆向入门 【技术分享】Intel AES-NI使用入门 戳“阅读原文”查看更多内 原文始发于微信公众号(安全客):如何利用CodeQL挖掘CVE-2020-10199
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论