java代码审计之checklist

前言

代码审计方向分为业务层安全代码实现服务架构等安全问题。

业务层安全常见问题

业务层的安全问题集中在业务逻辑越权问题上,我们在代码审计的过程中尽可能的去理解系统的业务流程以便于发现隐藏在业务中的安全问题。

业务层中常见的安全问题Checklist

  1. 用户登陆、用户注册、找回密码等功能中密码信息未采用加密算法。

  2. 用户登陆、用户注册、找回密码等功能中未采用验证码验证码未做安全刷新(未刷新Session中验证码的值)导致的撞库、密码爆破漏洞。

  3. 找回密码逻辑问题(如:可直接跳过验证逻辑直接发包修改)。

  4. 手机、邮箱验证、找回密码等涉及到动态验证码等功能未限制验证码失败次数验证码有效期验证码长度过短导致的验证码爆破问题。

  5. 充值、付款等功能调用了第三方支付系统未正确校验接口(如:1分钱买IPhone X)。

  6. 后端采用了ORM框架更新操作时因处理不当导致可以更新用户表任意字段(如:用户注册、用户个人资料修改时可以直接创建管理员账号或其他越权修改操作)。

  7. 后端采用了ORM框架查询数据时因处理不当导致可以接收任何参数导致的越权查询、敏感信息查询等安全问题。

  8. 用户中心转账、修改个人资料、密码、退出登陆等功能未采用验证码或Token机制导致存在CSRF漏洞。

  9. 后端服务过于信任前端,重要的参数和业务逻辑只做了前端验证(如:文件上传功能的文件类型只在JS中验证、后端不从Session中获取用户ID、用户名而是直接接收客户端请求的参数导致的越权问题)。

  10. 用户身份信息认证逻辑问题(如:后台系统自动登陆时直接读取Cookie中的用户名、用户权限不做验证)。

  11. 重要接口采用ID自增、ID可预测并且云端未验证参数有效性导致的越权访问、信息泄漏问题(如:任意用户订单越权访问)。

  12. 条件竞争问题,某些关键业务(如:用户转账)不支持并发、分布式部署时不支持锁的操作等。

  13. 重要接口未限制请求频率,导致短信、邮件、电话、私信等信息轰炸。

  14. 敏感信息未保护,如Cookie中直接存储用户密码等重要信息。

  15. 弱加密算法、弱密钥,如勿把Base64当成数据加密方式、重要算法密钥采用弱口令如123456

  16. 后端无异常处理机制、未自定义50X错误页面,服务器异常导致敏感信息泄漏(如:数据库信息、网站绝对路径等)。

  17. 使用DWR框架开发时前后端不分漏洞(如:DWR直接调用数据库信息把用户登陆逻辑直接放到了前端来做)。

代码实现常见问题

代码审计的核心是寻找代码中程序实现的安全问题,通常我们会把代码审计的重心放在SQL注入、文件上传、命令执行、任意文件读写等直接威胁到服务器安全的漏洞上,因为这一类的漏洞杀伤力极大也是最为致命的。

代码实现中常见的安全问题Checklist

  1. 任意文件读写(文件上传、文件下载)、文件遍历文件删除文件重命名等漏洞

  2. SQL注入漏洞

  3. XXE(XML实体注入攻击)

  4. 表达式执行(SpEL、OGNL、MVEL2、EL等)

  5. 系统命令执行漏洞(ProcessBuilder)

  6. 反序列化攻击(ObjectInputStream、JSON、XML等)

  7. Java反射攻击

  8. SSRF攻击

任意文件读取漏洞

快速发现此类漏洞:

  • JDK 原始的 java.io.FileInputStream 类
  • JDK 原始的 java.io.RandomAccessFile 类
  • Apache Commons IO 提供的 org.apache.commons.io.FileUtils 类
  • JDK1.7 新增的基于 NIO 非阻塞异步读取文件的 java.nio.channels.AsynchronousFileChannel 类。
  • JDK1.7 新增的基于 NIO 读取文件的 java.nio.file.Files 类。常用方法如:Files.readAllBytes、Files.readAllLines

可以检查一下FileUtil用户会封装文件操作的工具类。

未完待续

参考链接:

Java Web安全-代码审计(三)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值