实验项目 | 基于Seay的PHP源代码审计 |
---|---|
综合性实验 | 2020年11月11日 |
一、实验综述
1.实验目的及要求
(1)掌握源代码分析的基本原理
(2)掌握Seay工具的使用
(3)结合源代码分析原理对DVWA平台的代码进行分析
2.实验仪器、设备或软件
VMWARE、
win7虚拟机、
phpstudy、
DVWA-master
3.实验原理
- php代码审计对php源代码进行审查,理解代码的逻辑,发现其中的安全漏洞。如审计代码中是否存在sql注入,则检查代码中sql语句到数据库的传输 和调用过程。还有一些危险的系统函数,上传,执行函数等。
- 这是一款基于C#语言开发的一款针对PHP代码安全性审计的系统,主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞。
- Seay源代码审计系统主要特点:
(1)一键自动化白盒审计
(2)代码调试
(3)正则编码
(4)自定义插件及规则
二、实验过程(步骤过程、数据记录)
1.步骤
(1)使用ipconfig查看虚拟机IP地址,我的虚拟机的IP地址192.168.45.128
(2)下载Seay源代码审计系统软件,解压安装到本地安装。
(3)运行Seay源代码审计系统软件
(4)点击新建项目,选择DVWA安装的目录,点击“确定”(新建项目就是告诉系统需要对哪部分的文件进行审计)。
(5)点击“自动审计”,自动审计即对所有的文件审计一遍。
(6)点击“开始”
(7)系统将列出扫描的可疑漏洞,如文件包含漏洞、任意文件读取漏洞等。通过分析可以熟悉Web安全的相关漏洞,可以将漏洞位置与代码对应起来,从而理解在代码的某个部分可能存在潜在漏洞。
(8)选中相关的漏洞,双击漏洞信息,以sql注入为例
(9)点击View Source按钮生成源码,定位代码中可能存在漏洞的部分
(10)选中漏洞信息,点击右键,选择“生成报告”,
(11)生成报告成功。
(12)打开生成的报告,报告包含漏洞描述、文件路径和漏洞详细。
(13)选择163行,命令执行漏洞进行测试。首先,会将输入ip给了target,然后第十九行会ping一下target。
(14)打开虚拟机中的phpstudy,并开启Apache和MySql服务,从主机中验证一下相关漏洞。
(15)在主机上登录DVWMA ;输入Uesrname:admin;Password:password
(16)选择low级别
(17)左侧选择“Command Injection”, 显示界面如下:
根据以上使用Seay系统对sql注入漏洞的分析,可知如果存在漏洞,就会Ping一下这个ip。我这里选的Ip为127.0.0.1
结果显示输入ip后会ping一下,验证了Seay代码审计的正确性。
(18)点击View Source生成源码,并对源码进行分析。Ping –c4 是在linux下,如果不加的话,会一直ping下去。在windows下,直接使用ping就行。
(19)与Seay分析的结果进行比较,其实两者分析结果是一样的。
(20)点击全局搜索,输入shell_exec,点击“查找”。如果代码中有函数:shell的话,就可能存在漏洞,通过全局搜索,查找与此函数相关的漏洞。
查找之后会显示DVWA目录下所有有关shell函数的语句。与ping语句对应起来,会发现他有shell exec函数。
(21)选择信息泄露审计,显示代码中所有存在信息泄露代码隐患的
(22)站点地址输入http://localhost/DVWA-master,点击“开始”,会查找该路径下所有存在信息泄露的漏洞。
(23)选择代码进行调试。
(24)代码调试功能:输入代码echo(“1”),点击执行按钮。并观察显示窗口显示的运行结果。
输入1,点击执行后,会在执行结果窗口显示1;执行结果会根据输入显示相应内容;如:输入hello world ,也会显示hello world
三、结果讨论与分析
1.实验结果
通过Seay系统和我们通过DVWA的command injection漏洞的信息进行对比,发现同一漏洞的实质是相同的,因此验证了Seay系统的正确性。
2.分析总结
在日常分析软件漏洞时,经常需要耗费比较长的分析时间,少则几小时,多则数天,甚至更久。因此,经常总结一些分析技巧是非常有必要的,针对不同的漏洞类型采取不同的分析思路和技巧,可以有效地提高分析速度。对于一些被曝出来的热门0day,网上一般都会有分析文章,但一般都是“结论性分析”,也就是直接帖漏洞代码,指出哪里出错,而非“思路性分析”。如果你经常分析漏洞的话,会发现占用你分析时间的往往不是分析漏洞代码,而是定位漏洞代码。所以说,调试分析漏洞有时就是看下断点下得准不,再加上一些胡猜乱想来推测,最后才是分析漏洞代码了,如果熟悉汇编指令,这个就不是问题了。