Skip to content

Index

前言

伴随Java语言的发展,现在越来越多的程序采用Java语言进行编写。传统的代码审计人员往往对PHP代码审计很熟练,Java开发人员也并不了解所有常见的漏洞。对于渗透测试人员来说,掌握代码审计应是一项基本技能,只有懂得了漏洞的原理以及产生的过程,才能够根据具体漏洞环境的变化写出符合实际需求的攻击代码进行渗透。对于代码审计人员,只有充分挖掘当前代码中可能存在的安全问题,才能使开发人员了解其开发的应用系统可能会面临的威胁,并正确修复程序缺陷。在网络安全竞赛中有一个常见考点:由源代码泄露产生的代码审计。这在实际攻防渗透中也很常见,即由于系统配置或管理员的错误操作而导致系统的源代码泄露。除了源代码泄露,在实战中另外一个场景是目标站点使用了某套开源系统,这时我们除了查找此开源系统已公开的相关漏洞,还有一个十分有效的攻击手法是对此开源系统进行代码审计,以发现未知的漏洞,通过未知漏洞进行攻击。代码审计需要通过阅读源代码的方式找到隐藏的安全问题,因此代码审计对渗透测试人员的编程能力有一定的要求,而最基础的要求是能够读懂代码逻辑、读懂代码的功能。

对于代码审计的常规手法,一般可分为以下三种。 (1)通读源代码:这种审计手法往往能够发现隐藏较深的安全问题,一般从程序的入口函数开始读。但其缺点也十分明显,需要通读整个源代码的逻辑,因此十分耗费时间。 (2)关键函数回溯:这种方法比第一种方法效率大大提升,但是很难发现隐藏极深的安全问题。对于关键函数回溯法,首先需定位到敏感函数以及参数,随后同步回溯参数的赋值过程,判断是否可控以及是否经过过滤等。 (3)追踪功能点:这种方法需要审计人员有一定的渗透测试基础,根据自己的经验判断可能存在问题的路由或功能点,并针对该功能点进行通读。例如,文件上传漏洞可直接通过定位上传函数来发现

本教程通过Java基础、JavaWeb、Java常见漏洞以及Java框架/项目审计四个方面进行编写,但不会涉及到开发环境搭建、代码调试的相关知识,此类知识在网络上比比皆是,请自行百度学习。

使用方式

  1. install gitbook
  2. gitbook serve
  3. open http://localhost:4000

最后

本教程还未编写完成,里面可能有一些问题,所以如果有谁发现请小窗滴滴我,剩余部分即将完成,请稍等。。。。。

Comments