网络安全之代码审计(小白速进)

代码审计

1. 初识代码审计

1.1 代码审计是什么

代码审计是一种以发现安全漏洞、程序错误和程序违规为目标的源代码分析技能。在实践过程中,可通过人工审查或自动化工具的方式,对程序源代码进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。

1.2 代码审计的意义

随着Java Web应用越来越广泛,安全审计已经成为安全测试人员需要直面的工作。虽然PHP在中小型互联网企业仍占据一席之地,但主流的大型应用中,java仍是首选的开发语言,国内外大型企业大多以java作为核心的开发语言。因此对于安全从业者来说,java代码审计已经成为所需要掌握的关键技能。

1.3 代码审计的常用思路

为了在应用代码中寻找目标代码的漏洞,需要有明确的方法论做指定方法论的选择则要视目标程序和要寻找的漏洞类型而定,以下是一些常用思路:

(1)接口排查(“正向追踪”):先找出从外部接口接收的参数,并跟踪其传递流程,观察是否有参数校验不严的变量传入高危方法中,或者在传递过程中是否有代码逻辑漏洞(为了提高排查的全面性,代码审计人员可以向研发人员索要)。

(2)危险方法溯源(“逆向追踪”)检查敏感方法的参数,并查看参数的传递与处理,判断变量是否可控并且已经严格过滤。

(3)功能点定向审计:根据经验判断该类应用通常会在哪些功能中出现漏洞。

(4)第三方组件、中间件版本比对:检查Web应用所使用的第三方组件或中间件直接审计该类功能的代码。查看软件版本是否受到已知漏洞的影响。

(5)补丁对比:通过对补丁做比对,反推漏洞出处。

(6)“黑盒测试”+“白盒测试”:代码审计的过程中需要以”白盒测试“为主,”黑盒测试“为辅。有助于快速定位到接口做更全面的分析。

(7)”代码静态扫描工具“+”人工研判“:对于某些漏洞,使用代码静态扫描工具代替人工漏洞挖掘可以显著提高工作效率。

(8)开发框架安全审计:审计web应用所使用的开发框架是否存在自身安全问题,或者由于用户使用不当而引发的安全风险。

1.4 黑盒测试和白盒测试

  • 黑盒测试:黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。在测试过程中,将程序看成不能打开的黑盒子,不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。
  • 白盒测试:白盒测试也称为结构测试,主要用于检测软件编码过程中的错误。程序员的编程经验、对编程软件的掌握程度、工作状态等因素都会影响到编程质量,导致代码错误。

1.5 代码审计和渗透测试的关系

两者之间相互补充,彼此强化。代码审计发现问题,渗透测试确定可利用性。

1.6 代码审计的工作流程

2. 代码审计环境搭建(以Java为例)

2.1 JDK的下载和安装

2023最新JDK下载、安装与配置教程(jdk17.0.5以及jdk11.0.17)_jdk最新_欣欣梦的博客-CSDN博客

2.2 Eclipse的下载和安装

【精选】eclipse下载与安装(汉化教程)超详细_麟星爵的博客-CSDN博客

2.3 Tomcat与Eclipse连接

①在官网下载Tomcat(官网链接http://tomcat.apache.org/),Tomcat的版本必须和JDK版本相匹配。

②进入Tomcat官网找到Download,选择Tomcat9下载。

③找到Binary Distributions下的Core,根据自己的系统选择对应的版本,32位的选择32-bit Windows zip(pgp,sha512) 64位的选择64-bit Windows zip(pgp,sha512),因为本电脑系统是64位的,所以这里我们点击64-bit Windows zip(pgp,sha512)进行下载(这里选择下载的是zip格式,因为zip格式是免安装的,下载下来,解压就可用,需要源码的小伙伴们可以找到Source Code Distributions,选择zip (pgp,sha512)下载源码。

④下载安装包后解压,选择合适路径。

⑤下载完成后打开Eclipse,找到Servers选项并点击 No servers are available. Click this link to create a new server...创建一个新的服务。

如果没有Servers选项,参考如下步骤:

(1) 找到 Window → Show View → Other

(2) 在Show View 视窗中输入 Servers,选中Servers,再点击Open

⑥在Define a New Server 视窗中,我们在Apache中 选择与自己下载的Tomcat对应的版本,我这里下载的是Tomcat 9版本,所以这里我们选择 Tomcat v9.0 Server,再点击Next。

⑦在Tomcat Server 视窗中,我们点击Browse按钮,找到自己安装的Tomcat,并在JRE下拉选择框中,选择自己安装的JRE版本(这里我的JRE版本是jre-10.0.2),再点击Finish。

2.4 MySQL的下载与安装

MySQL有两种方式可以安装,第一种是直接安装PHPStydy,他里面自带MySQL;第二种是去Mysql官网下载并且安装。

3.代码审计工具-Fority

3.1 简介

Fortify 是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,通过与软件安全漏洞规则集进行匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并可导出报告。扫描的结果中包括详细的安全漏洞信息、相关的安全知识、修复意见。

3.2 原理

  • 首先通过调用语言的编译器或者解释器把前端的语言代码(如JAVA,C/C++源代码)转换成一种中间媒体文件NST(Normal Syntax Tree),将其源代码之间的调用关系,执行环境,上下文等分析清楚。

  • 通过分析不同类型问题的静态分析引擎分析NST文件,同时匹配所有规则库中的漏洞特征,将漏洞抓取出来,然后形成包含详细漏洞信息的FPR结果文件,用AWB打开查看。

3.3 下载和安装

3.4 扫描

配置信息:HP Fortify SCA and Applications 4.10+WIN10(64位家庭版)

①打开Fority的工作台

②如果源代码是Java,选择Scan Java;源代码是C#选择Scan VS,不知道就选Advanced Scan。

③在弹出的对话框选择Java版本就OK。

④根据情况选择后,等待扫描

⑤扫描完成后的界面

⑥对结果进行分析,填写分析结论及备注信息

⑦点击菜单栏的reports,选择审计规则,导出即可

posted @ 2023-10-31 16:09  冬璃  阅读(2214)  评论(0编辑  收藏  举报