注册 gitee 账号后,push 一个项目,或者 fork 一个别人的项目,这里 fork 了一个 java-sec-code 靶场,使用的是个人版,像是低配版的 fortify
在项目的 服务 项下,选择奇安信代码卫士
创建分析
新建分析,支持选择分支,支持扫描的语言:php、java/jsp、python、c/c++,java 版本最高支持 1.8,点击提交
扫描完成
点击任务名,跳转到风险内容页面
点击漏洞点,显示源码,sink 点高亮
下面有详细的污点数据跟踪、漏洞描述信息、修复建议
跟踪路径图
漏洞描述和案例
详细的修复建议和示例
java 支持的类型
代码注入 | API误用 | 代码质量 | 密码管理 | 异常处理 | 资源管理 | 跨站脚本 | 输入验证 | 配置管理 |
HTTP响应截断 [Java] | 不安全的框架绑定 [Java] | byte数组转String时未指定编码 [Java] | 明文密码 [Java] | finally代码块中抛出异常 [Java] | 数据库访问控制 [Java] | 反射型XSS [Java] | EL表达式注入:Spring [Java] | Spring Boot配置错误:不安全的Actuator [Java] |
HTTP响应截断:Cookies [Java] | 使用DNS名称作为安全性的依据 [Java] | Cookie:未经过SSL加密 [Java] | 配置文件中的明文密码 [Java] | 捕获NullPointerException [Java] | 资源未释放:Sockets [Java] | 存储型XSS [Java] | JavaScript劫持 [Java] | 不安全的反序列化组件 [Java] |
SQL注入 [Java] | 文件泄露:JavaEE [Java] | Cookie:未设置HTTPOnly属性 [Java] | 泛化的抛出异常 [Java] | 资源未释放:数据库 [Java] | 弱验证 [Java] | 拒绝服务:StringBuilder [Java] | ||
SQL注入:MyBatis [Java] | Cookie:路径范围过大 [Java] | 泛化的捕获异常 [Java] | 资源未释放:流 [Java] | 跨站请求伪造 [NodeJS] | 文件上传 [Java] | |||
XML外部实体注入 [Java] | JavaEE程序:直接使用Socket [Java] | 空的catch代码块 [Java] | 文件上传 [NodeJS] | |||||
XML实体扩展注入 [Java] | JavaEE程序:直接管理数据库连接 [Java] | 有风险的资源使用 [Java] | ||||||
不安全的反序列化 [Java] | JavaEE程序:遗留的调试代码 [Java] | 服务器端请求伪造 [Java] | ||||||
动态解析代码 [Java] | 使用equals()来判断字符串是否为空 [Java] | 缺少XML验证 [Java] | ||||||
命令注入 [Java] | 使用getHost判断域名 [Java] | 访问权限修饰符控制 [Java] | ||||||
有风险的XML外部实体解析 [Java] | 使用单个字符字符串获取索引位置 [Java] | 路径遍历 [Java] | ||||||
有风险的XML实体扩展解析 [Java] | 创建String对象 [Java] | 重定向 [Java] | ||||||
有风险的反序列化 [Java] | 受限制的账户 [SQL] | |||||||
资源注入 [Java] | 可序列化类中存在可序列化的敏感信息 [Java] | |||||||
日志记录:使用系统输出流 [Java] | ||||||||
未使用的字段 [Java] | ||||||||
比较Locale相关的数据未指定适当的Locale [Java] | ||||||||
硬编码URL地址 [Java] | ||||||||
硬编码文件分隔符 [Java] | ||||||||
空的方法 [Java] | ||||||||
系统信息泄露:Spring Boot启用执行器 [Java] | ||||||||
系统信息泄露:标准错误流 [Java] | ||||||||
过于宽松的CORS策略 [Java] | ||||||||
遗留的调试代码 [NodeJS] | ||||||||
隐藏的表单字段 [NodeJS] |