目录
1.1名词解释
1.2代码审计的重要性
1.3代码审计的步骤
1.4代码审计的内容
1.5常见的代码审计工具
2 Seay
2.1什么是Seay
2.2 Seay的安装过程
3典型漏洞分析
3.1什么是命令注入漏洞
3.2 如何理解命令注入漏洞
3.3 如何防御命令注入漏洞
4 利用工具对命令注入漏洞进行分析
4.1 DVWA靶场命令注入漏洞分析
4.2 Pikachu靶场命令注入漏洞分析
软件代码审计是对编程项目中源代码的全面分析,旨在发现错误,安全漏洞或违反编程约定。 它是防御性编程范例的一个组成部分,它试图在软件发布之前减少错误。 C和C ++源代码是最常见的审计代码。
顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,比如使用了危险的函数或者是变量使用不当,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。
在信息时代,互联网对于人们的生活日渐重要,越来越多的个人信息存储在网络上,越来越多的日常活动和网络息息相关,我们似乎越来越离不开网络。
那么这个时候网络的安全性就显得尤为重要,记得曾经看过的一个关于网络安全的电视剧深刻的诠释了网络安全的重要性,其中最经典的DDOS攻击,国家电网被黑客攻击,一时间交通瘫痪,银行金融机构医院等都停止了运行,黑客利用自己发明的病毒使其自动攻击核心服务器,它们最终的目标是国家核电站,核电站一旦爆炸后果不堪设想。
上述只是黑客行为的一种,其实在我们日常生活中使用的网站,每天都遭受着亿万次攻击,若不是网络安全从业人员的防御,那么我们的生活会变的多么糟糕。
而我们国家近年来也开始重视网络安全的建设相关法律法规出台,对于整个行业的扶持,都让人们看到了国家的决心,以及对于网络安全的重视。
代码审计是渗透测试的一个过程,它是利用网站源代码,对其进行安全性分析,实则也是网站发布前的非客户需求的一次安全性测试,在安全的角度分析可能存在攻击的不安全代码的引用。
通过白名单的方式使用人工或者自动化检测的方式检验源代码中存在的安全问题,所以代码审计工作需要很多的实战经验。
RIPS是一款开源的,具有较强漏洞挖掘能力的自动化代码审计工具。它使用PHP语言编写的,用于静态审计PHP代码的安全性。
VCG(VisualCodeGrepper),是一款支持C/C++、C#、VB、PHP、Java和PL/SQL的免费代码安全审计工具。它是一款基于字典的检测工具,功能简洁,易于使用。
Fortify SCA(Static Code Analyzer) 一款商业版源代码审计工具。它使用独特的数据流分析技术,跨层跨语言地分析代码的漏洞产生,目前支持所有的主流开发语言。
代码审计工具可以辅助我们进行白盒测试,大大提高漏洞分析和代码挖掘的效率。在源代码的静态安全审计中,使用自动化工具辅助人工漏洞挖掘,一款好的代码审计软件,可以显著提高审计工作的效率。
代码审计工具按照编程语言、审计原理、运行环境可以有多种分类。商业性的审计软件一般都支持多种编程语言,比如VCG、Fortify SCA,缺点就是价格比较昂贵。其他常用的代码审计工具还有findbugs、codescan、seay,但是大多都只支持Windows环境。
Seay这是基于C#语言开发的一款针对PHP代码安全性审计的系统,主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞,基本上覆盖常见PHP漏洞。另外,在功能上,它支持一键审计、代码调试、函数定位、插件扩展、自定义规则配置、代码高亮、编码调试转换、数据库执行监控等数十项强大功能。
seay也不知道为什么,我也没有找到官网,但是网上有很多资源,可以自己去下载。
下载完安装包之后,解压到自己想要的电脑路径
图2.2.1 安装包解压
解压成功之后,点击文件夹中的文件如上图所示,之后根据提示不断地“下一步”该软件不需
要进行任何额外的配置
图2.2.2 软件首界面
安装完成之后,点击图像进入软件,首界面如上图所示,可以看出该软件的一大优势也是界面简单,
操作易上手。
命令注入漏洞,可能是应用程序中可能发生的最危险的漏洞之一。当应用程序允许用户输入与系统命令混淆时,就会发生命令注入漏洞或操作系统命令注入漏洞。当用户输入在没有适当防御措施的情况下直接连接到系统命令中时,就会发生这种情况。
简单来说,命令注入漏洞从名词上大家就应该明白,它本身也是一种注入漏洞,所以只要是在用户可以控制输入的地方,就有可能会发生命令注入漏洞,与命令注入漏洞有关的可能就是系统命令,也就是我们可以通过命令提示符知道的消息,或者说采用的语法命令,我们都可以在这里输入查询,同样可以查到我们想知道的东西,最经典的就是ping IP,或者查看IP,查看系统用户权限等,所以,通过以上可知我们知道命令注入漏洞的危害也是很大的。
那么,如何防御呢,常见的命令注入漏洞的防御就是白名单过滤,对于用户的输入进行白名单的限制,采用转义函数,对一些特殊符号进行转义,同时添加防御CSRF漏洞最有效的token,可以有效地防止命令注入漏洞。
图4.1.1 新建项目
进入软件之后,点击新建项目,选择DVWA靶场源代码所载的文件
图4.1.2 DVWA靶场
图4.1.3 导入源代码
图4.1.4 运行seay
点击开始,软件开始运行,分析靶场源代码。
图4.1.5 等待结果
图4.1.6 运行完成
图4.1.7 生成报告
图4.1.8 报告生成
图4.1.10 查看报告
图4.1.11 命令注入漏洞
确定自己想要分析的漏洞,在报告的165-166行,会存在命令注入漏洞的文件的详细信息,以
图4.1.12 分析结果
在文件中找到命令注入漏洞
图4.1.13 验证结果
我们发现(图4.1.12)中并没有对命令注入漏洞进行防御,那么我们可以采用最简单的命令进
行验证:127.0.0.1 | ipconfig。
图4.2.1 新建项目
第一步仍然是新建一个项目,然后导入源代码文件(如图4.2.2)
图4.2.2 导入源代码
选择pikachu靶场源代码所在的文件的位置,然后引入项目。
图4.2.3分析漏洞
点击“开始”,软件开始运行分析整个项目。
图4.2.4 分析完成
查看进度条判断是否分析完成
图4.2.5 生成报告
分析完成之后,点击“生成报告”。
图4.2.6 报告生成
选择报告生成的位置(如下图4.2.7)所示
图4.2.7
图4.2.8 分析结果
点击报告,(如图4.2.8)
图4.2.9 分析命令注入漏洞
在报告中查找目标漏洞,观察漏洞所在文件的详细位置,然后在seay中定位(如图4.2.10)。
图4.2.10 定位代码
我们会在图4.2.10所在的位置发现漏洞的存在,经过分析我们知道漏洞的原因是因为没有对输
入进行过滤或者过滤不严格,那么我们就可以轻易地利用这个漏洞。
图4.2.11 验证漏洞
我们输入最简单的验证方式127.0.0.1 | ipconfig 我们发现成功查验出了系统相关信息。