项目概述
“铲子”是一款简单易用的SAST(静态应用程序安全测试)工具,旨在为安全工程师提供一款简单、好用、价格厚道的JAVA代码安全扫描产品。
支持主流的java开发框架 | 采用轻量、快捷的污点分析 |支持无代码场景的反编译扫描 | 便捷的自定义扫描规则
功能介绍
支持语言: java(spring、dubbo、mybatis、thrift、jsp等)
采用技术:轻量级污点分析,铲子会将java、jsp、xml、yaml、properties等文件分析并构建数据流图(无需编译),然后进行污点分析。
支持漏洞:内置了 sql 注入、命令注入、文件上传、ssrf 等常见漏洞规则,用户可以自定义规则。
扫描报告:生成简单的漏洞报告,包括漏洞类型、风险等级、漏洞位置及数据流,帮助开发人员快速定位和解决问题。
其他特性:反编译扫描、跳转到类型/定义、变量的数据流上下游跳转、代码大纲、代码检索、漏洞标记等。
规则开发方法
铲子SAST的规则主要用于对图数据库进行查询,可以查询单个节点或数据流作为漏洞
在铲子中,变量都会被当作数据流节点,包括局部变量/方法定义的入参/方法调用的入参/类的成员变量,数据会在这些变量之前流动
数据流规则通常是找到数据流的起点,即source点,和 数据流的终点,即sink点,然后查找source流到sink的路径
数据流漏洞规则
下面是一条内置数据流规则,用于识别ssrf漏洞
MATCH (sourceNode:DubboServiceArg|ThriftHandlerArg|SpringControllerArg|JspServiceArg|WebServletArg|WebXmlServletArg|WebXmlFilterArg|JaxrsArg|HttpHandlerArg)
MATCH
(sinkNode)
WHERE 'url' IN sinkNode.selectors OR
'URL' IN sinkNode.selectors OR
sinkNode.AllocationClassName = 'URL' OR
sinkNode.AllocationClassName = 'GetMethod' OR
'HttpGet' IN sinkNode.selectors OR
('execute' IN sinkNode.selectors AND 'CloseableHttpClient' IN sinkNode.receiverTypes) OR
('execute' IN sinkNode.selectors AND 'CloseableHttpAsyncClient' IN sinkNode.receiverTypes) OR
('connect' IN sinkNode.selectors AND 'Jsoup' IN sinkNode.receiverTypes) OR
('create' IN sinkNode.selectors AND 'URI' IN sinkNode.receiverTypes) OR
('read' IN sinkNode.selectors AND 'ImageIO' IN sinkNode.receiverTypes) OR
('executeMethod' IN sinkNode.selectors AND 'HttpClient' IN sinkNode.receiverTypes) OR
('Get' IN sinkNode.selectors AND 'Request' IN sinkNode.receiverTypes) OR
('Post' IN sinkNode.selectors AND 'Request' IN sinkNode.receiverTypes) OR
('exchange' IN sinkNode.selectors AND 'RestTemplate' IN sinkNode.receiverTypes) OR
('get' IN sinkNode.selectors AND 'HttpUtil' IN sinkNode.receiverTypes) OR
('post' IN sinkNode.selectors AND 'HttpUtil' IN sinkNode.receiverTypes) OR
'openConnection' IN sinkNode.receivers
MATCH
p = (sourceNode)-[ *..30]->(sinkNode)
RETURN
p AS path
如何查询source点
铲子自动识别了一些常见框架的请求入口,并打上标签,用户可以利用这些标签快速找到source点,比如下列标签:DubboServiceArg|ThriftHandlerArg|SpringControllerArg|JspServiceArg|WebServletArg|WebXmlServletArg|WebXmlFilterArg|JaxrsArg|HttpHandlerArg
用户如果觉得这些标签不满足需求,也可以根据各种条件找到自己关心的source点,比如springmvc可以利用RequestMapping GetMapping等注解查找,比如下边这条规则就是用注解进行识别的source点
MATCH
(sourceNode:Argument)
WHERE
'RequestMapping' IN sourceNode.methodAnnotations OR
'GetMapping' IN sourceNode.methodAnnotations OR
'PostMapping' IN sourceNode.methodAnnotations OR
'DeleteMapping' IN sourceNode.methodAnnotations OR
'PutMapping' IN sourceNode.methodAnnotations
MATCH
(sinkNode)
WHERE
'queryForMap' IN sinkNode.selectors OR
'queryForObject' IN sinkNode.selectors OR
'queryForList' IN sinkNode.selectors OR
'queryForRowSet' IN sinkNode.selectors OR
'batchUpdate' IN sinkNode.selectors OR
('query' IN sinkNode.selectors AND 'JdbcTemplate' IN sinkNode.receiverTypes)
MATCH
p = (sourceNode)-[*..30]->(sinkNode)
RETURN
p AS path
免责申明
如果您下载、安装、使用、修改本工具及相关代码,即表明您信任本工具
在使用本工具时造成对您自己或他人任何形式的损失和伤害,我们不承担任何责任
如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任
请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款,并选择接受或不接受
除非您已阅读并接受本协议所有条款,否则您无权下载、安装或使用本工具
您的下载、安装、使用等行为即视为您已阅读并同意上述协议的约束
文中涉及的工具及方法仅用于技术交流,请勿用于非法用途。
项目地址:https://github.com/Chanzi-keji/chanzi
技术交流
扫描下方二维码,并在验证信息中说明来意,文章仅供交流学习,本公众号不承担任何有关责任!
星球介绍
自研工具、二开工具、免杀工具、漏洞复现、教程等资源、漏洞挖掘分析、网络安全相关资料分享。
免责声明
该项目仅供网络安全研究使用,禁止使用该项目进行违法操作,否则自行承担后果。
感谢您抽出
.
.
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...