这篇文章上次修改于 992 天前,可能其部分内容已经发生变化,如有疑问可询问作者。 [TOC] ## JAVA代码审计总体思路 ### 基础知识 ##### 宏观角度:数据流所经过的地方皆会产生江湖纷争。 数据流所经过的地方皆会产生江湖纷争。这句话你品,你细细的品。其表达的是一种安全思维,更是一种安全世界观。 上个世纪,一个绝对理想的世界诞生了。这个世界里的“人(这是一种抽象,愿你能懂)”是绝对听话的,他们遵守着这个世界的规则,他们所有的行为自觉受规则约束。因此这个世界是和谐的。但是这个世界的“人”的操控者是真正的人,人有着自己的思想,有着自己不受他人约束的行为。所以最初由科学家所设想的绝对遵守秩序的“人”中的一部分“人”变得不遵守秩序了,这个绝对理想的靠规则约束的世界就会产生动乱!就会产生纷争!     ##### 微观角度:待补充 ### 审计思路(待补充) 总统思维:跟踪分析前端用户可控的数据,跟踪其经过的路径(代码段),重点关注数据的过滤。 审计步骤:查看程序的架构(SSH、MVC、分层设计)->第三方库安全检查->查看程序存在哪些过滤器->查看程序的路由->关键字搜索追踪变量->黑盒验证->书写报告 #### 查看程序的架构(SSH、MVC、分层设计) 配置文件web.xml #### 第三方库(Lib)安全检查 配置文件pom.xml #### 查看存在哪些过滤器 #### 查看程序的路由 #### 关键字搜索追踪变量(数据传递) #### 黑盒验证 #### 书写报告 ### 问题高发汇总(待补充) 1. 硬编码问题 2. 文件上传 3. SQL注入 4. 短信轰炸、短信验证码绕过 5. Session覆盖 6. 任意用户登录(令牌构造) 7. 后端逻辑弱关联导致业务流程跳跃 8. 权限控制不严格导致越权问题 9. 重要业务接口未加锁导致高并发问题