实验项目 | PHP源代码漏洞分析实验 |
---|---|
综合性实验 | 2020年10月31日 |
(1)掌握源代码分析的基本原理
(2)掌握RIPS源代码分析工具的使用
(3)结合源代码分析原理对DVWA平台的代码进行分析
Vmware station
PHPstudy
DVWA
Windows7操作系统
(1)软件漏洞:
软件漏洞分析技术主要分为:软件架构安全分析技术、源代码漏洞分析技术、二进制漏洞分析技术和运行系统漏洞分析技术四大类。
(2)源代码漏洞分析原理:
源代码漏洞分析主要是对高级语言编写的程序进行分析以发现漏洞。源代码作为软件的最初原型,其中的安全缺陷可能直接导致软件漏洞分产生,因此源代码漏洞分析显得尤为重要。目前源代码漏洞分析主要采用静态分析的方法,由于该方法不受程序的输入和运行环境等因素的影响,所以可能发现动态分析难以发现的软件漏洞。源代码漏洞分析一般包含源代码的模型提取,对历史漏洞、程序代码进行特征提取,静态的漏洞分析和结果分析等四个步骤,通过这四个步骤完成对源代码的漏洞分析。
(1)查看虚拟机windows7的IP地址,使用DOS命令:ipconfig
(2)在虚拟机中开启phpstudy中的apache和mysql
(3)在主机上访问DVWA客户端:http://192.168.45.128/DVWA-master/login.php
(4)将rips文件夹放入虚拟机以下的路径中: C:\phpstudy_pro\WWW\
(5)主机访问rips: http://192.168.45.128/rips
(6)Rips的相关配置:
将文件路径(path/file)设置为虚拟机中DVWA-master的存储路径
代码风格:(Code style)采用默认的ayti
漏洞类型(Vuln type)选择SQL Injection
默认勾选:subtirs,表示对所选文件路径下的子目录的相关文件也要进行分析。
(8)点击continue按钮,显示sql注入漏洞结果:
分析:总共用时4914秒;SQL注入漏洞数量5个;扫描文件359个;
(9)以SQL注入漏洞的low.php为例进行漏洞分析,进一步分析其他功能
(10)左侧有review code表示可以将源代码显示出来。
对比源文件与现实出来的文件,可以找出两者之间的对应关系。
自动分析出了哪些地方有SQL注入漏洞。可以和数据流分析等进行对应。
在源代码中第3行、第8行、第9行会现实红色,表示此处有SQL注入漏洞。
在分析结果的显示中,我们也可以看到对应的是第3行、第8行和第9行。
9: mysqli_query $result = mysqli_query($GLOBALS['___mysqli_ston'], $query) or die ('' . (mysqli_error($GLOBALS['___mysqli_ston']) : ($___mysqli_res : false)) . '
');
8: $query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
5: $id = $_REQUEST['id'];
requires:
3: if(isset($_REQUEST['Submit']))
(11)左侧有 get help,查看sql注入的相关介绍
生成脚本如下:
通过此次实验,我掌握源代码分析的基本原理,结合源代码分析原理对DVWA平台的SQL注入漏洞进行分析,并成功找到了5个漏洞。
软件漏洞分析技术多种多样,需要针对软件的来源,漏洞的类型,分析人员的擅长等因素进行选择。在汇报的实验中,由于都是针对某个漏洞类型进行验证,没有涉及到软件架构和系统等概念,故实验中主要利用二进制漏洞分析技术中的静态分析、动态分析和动静结合的分析技术。针对动态分析技术,所使用的软件有:OllyDbg和Windbg,选择Windbg有个特点,即其对于Windows自带原生的软件更加适用;针对静态分析技术,所使用的软件为IDA Pro。