声明
所提供的工具资料仅作学习用途。这些资料旨在助力用户增长知识、提升技能,推动个人成长与学习进程。用户在使用这些资料时,务必严格遵循相关法律法规,严禁将其用于任何非法、欺诈、侵权或其他不当行为。本人及团队对于用户因使用这些资料所产生的一切后果概不负责,包括但不限于因操作失误、对资料内容理解偏差或违反法律法规而引发的损失或损害。用户需自行承担使用这些资料带来的风险,在使用前应全面了解并审慎评估。
CodeScan
工具介绍
该工具目的为对大多数不完整的代码以及依赖快速进行Sink点匹配来帮助红队完成快速代码审计,开发该工具的初衷是以Sink到Source的思路来开发,为了将所有可疑的Sink点匹配出来并且凭借第六感进行快速漏洞挖掘,并且该工具开发可扩展性强,成本极低,目前工具支持的语言有PHP,Java(JSP)
项目地址
https://github.com/Zjackky/CodeScan.git
安装指南
下载文件后,定位到文件所在目录。在该目录下执行编译操作,编译完成后,所有版本的文件将会生成在名为releases的文件夹内
./build.sh
特点功能
框架识别:可精准识别多种主流开发框架,为代码审计筑牢基础。
Sink点匹配:广泛覆盖常见安全漏洞的 Sink 点匹配机制,有力保障系统安全。
黑白名单定制:支持自定义黑白名单,满足个性化安全防护需求
多模块多语言审计:具备模块化代码审计功能,支持 Java、Python 等多种语言。
鉴权代码快速匹配:能迅速融入并匹配鉴权代码,保障访问控制安全。
Jar静态分析:默认提供 Jar 包静态分析,可提前发现代码潜在问题。
基本命令参数
Usage of ./CodeScan_darwin_arm64:
-L string | 审计语言 |
-d string | 要扫描的目录 |
-h string | 使用帮助 |
-lb string | 行黑名单 |
-m string | 过滤的字符串 |
-pb string | 路径黑名单 |
-r string | RCE规则 |
-u string | 文件上传规则 |
示例命令
CodeScan_windows_amd64.exe -L java -d ./net
CodeScan_windows_amd64.exe -L php -d ./net
CodeScan_windows_amd64.exe -d ./net -m "CheckSession.jsp"
高级用法
以下均以Java作为示例
高扩展性
自定义操作十分简便。若您有自定义匹配规则的需求,直接在此处添加即可。
其次,若要新增漏洞类型,以新增 SQL 漏洞类型为例,只需三步:
新建SQL目录
定义一个方法,命名为“SqlCheck”
编写一个名为“sqlcheck.txt”的文件 + 你自定义的规则
最后在这里加入包名+方法名即可
package SqlTest
import (
"CodeScan/FindFile"
"fmt"
)
func SqlCheck(dir string) {
FindFile.FindFileByJava(dir, "fastjson.txt", []string{".parseObject("})
fmt.Println("SqlCheck分析完成")
}
扫描位置
在处理闭源代码时,常常只能获取到一个 Jar 或 Class 文件。反编译过程中,依赖项会一同被反编译。为防止对依赖项扫描产生误报,工具自带的黑名单会过滤掉以下包名。若您有自定义需求,可自行修改,修改位置在 CommonVul/Rule/MatchPathRule.go。
var PathBlackJava = []string{
"apache", "lombok", "microsoft", "solr",
"amazonaws", "c3p0", "jodd", "afterturn", "hutool",
"javassist", "alibaba", "aliyuncs", "javax", "jackson",
"bytebuddy", "baomidou", "google", "netty", "redis", "mysql"
"logback", "ognl", "oracle", "sun", "junit", "reactor", "github",
"mchange", "taobao", "nimbusds", "opensymphony", "freemarker", "java", "apiguardian", "hibernate", "javassist", "jboss", "junit", "mybatis",
"springframework", "slf4j",
}
因此,这引发了一个状况,即无法从顶层直接进行扫描。所以,请将 CodeScan 置于与 Net 同级的目录下开展扫描 。例如:
CodeScan_windows_amd64.exe -L java -d ./net
过滤字符串目前仅涵盖了 JSP 和 PHP。例如,现在存在一段代码,根据判断,该代码完全是鉴权代码,并且它是存储在 JSP 文件中的。
<%@ include file="../../common/js/CheckSession.jsp"%>
此时,可以使用相应的功能来实现对未鉴权代码的快速获取。
CodeScan_windows_amd64.exe -d ./yuan -m "CheckSession.jsp"
此时,系统会将不包含此代码的文件都存放到 NoAuthDir 目录中。之后,只需再次扫描一遍,就能够立刻定位到那些既存在未鉴权情况,又含有 Sink 点的函数文件。
CodeScan_windows_amd64.exe -L java -d ./NoAuthDir
静态分析依赖情况
只需要将 EvilJarList.txt 文件放置在 CodeScan 的目录下,就能完成匹配操作。EvilJarList.txt 的内容为存在可攻击漏洞的 Jar 文件,模板如下:
fastjson-1.2.47.jar
resin-4.0.63.jar
jackson-core-2.13.3.jar
c3p0-0.9.5.2.jar
commons-beanutils-1.9.4.jar
commons-beanutils-1.9.3.jar
commons-beanutils-1.9.2.jar
......
使用案例
示例一:NginxWebui
通过工具的检测,知道该项目正在使用 spring 框架
示例二:任意文件上传
工具扫描出结果如下:
有时候,代码分析可以迅速完成。我们在此发现了 transferTo 这个 sink 点处于控制层
对应路径:
./build.sh
0
代码片段:
这种名称可以实现跨目录上传。直接进行文件传输操作,即可成功上传。
示例三:报文
./build.sh
1
结果如下:
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...