“代码审计”了解一下 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

“代码审计”了解一下

lionhoo 技术 2019-03-29 10:20:07
302678
收藏

导语:代码审计入门大家好,今天给大家带来的是代码审计入门级文章!

大家好,今天给大家带来的是代码审计入门级文章!毕竟很多代码审计的文章没有一个基础是看不懂的,所以这篇文章算是为一些想学习代码审计而又看不懂代码审计类技术文章的朋友而准备的!

代码审计概述

顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。

PHP漏洞简述

一般我们进行审计的时候有两个点,可控的变量,还有函数!要学代码审计那么首先要知道漏洞的原理,那么常见的比如SQL注入,命令执行,XSS等漏洞的原理要知道!

举个例子:SQL注入&命令执行

众所周知,SQL注入是因为攻击者可以构造sql语句提交给程序,但提交的语句未检验,结果就会造成sql注入攻击!在PHP中可以调用外部程序的常见函数:system、exec、shell_exec、passthru、popen、proc_popen应用在调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,又没有过滤用户的输入的情况下,就会造成命令执行漏洞。

我们来看一下代码:

图片1.png

这是一个存在sql注入漏洞的代码,可以看出来因为执行的SQL语句。

 图片2.png

可以进行拼接,造成攻击者执行任意的sql语句。

我们对照一下命令执行。

图片3.png 

这是一个存在命令执行的php漏洞代码,其中在执行函数shell_exec中也可以进行拼接从而造成攻击者执行任意的命令!

那么我们对照一下这两段:

图片4.png

图片5.png 

可以看出来漏洞的出现位置和漏洞的利用方式,为什么要对照这两段代码,因为我们前文说了审计的时候有两个点,可控的变量,还有函数,可控的id参数和造成漏洞的函数shell_exec,如果把sql语句换成执行命令的语句呢?这样就不难理解为什么审计这两个点了吧!

所以既然要学审计那么漏洞原理是要搞明白的,这里我就不再写漏洞原理了!(推荐php漏洞原理的文章: https://zhuanlan.zhihu.com/p/47818756)

代码审计工具

俗话说“工欲善其事,必先利其器!”通过概述可以知道有两种方式,其一就是自动化工具,那么介绍几款常见的代码审计工具,当然不止有这几个,GitHub上还有好多,就不一一列举了!

No1 Seay源代码审计工具

Seay源代码审计工具一款php代码审计工具,主要是运用于windows,这款工具可以发现常见的php漏洞,另外还支持一键审计、代码调试、函数定位、插件扩展、数据库执行监控等功能!

图片6.png 

安装很简单直接按照提示安装就好!

使用方式:

图片7.png 

新建项目然后找到要审计的代码文档就可以!

然后自动审计。

图片8.png 

当然不要完全相信工具,它只能帮我们去减少庞大的工作量,剩下的漏洞我们还要自己去验证一下才行!

图片9.png 

双击之后会跳转到漏洞地址及看到漏洞代码。

图片10.png

No2 rips源代码审计系统

Rips源代码审计系统是可以用于linux和windows上的一款源代码审计系统!使用方式很简单,直接将rips源码放在web应用的根目录下就可以了。

图片11.png

 图片12.png 

使用方式:

首先对源代码进行扫描检测既在:

图片13.png 

Path/file中输入扫描的代码路径,然后点击扫描。

图片14.png 

扫描完成后:

图片15.png 

user input 可以查看到用户可控制的参数。

图片16.png 

然后点击可进行审计。

步骤:传递参数à执行语句à浏览整体。

图片17.png 

扫描出来的漏洞会给出漏洞地址及漏洞代码!

如何做自己的代码审计工具

通过对这两款的代码审计工具分析我们可以知道:

代码审计工具步骤:

· 第一步:创建项目

· 第二步:扫描文件代码

· 第三步:输出结果

步骤思路:

· 第一步:寻找文件

· 第二步: 通过正则及其他方法寻找可控的变量,还有函数进行分析(需了解漏洞原理)

· 第三步:输出结果

那么可以用这个思路去试试做一个自己的自动化代码审计工具!

操作实例

为了更好的去做说明解释,我使用dvwa来做例子就不在网上找cms了!

我们搭建一个测试环境,我用的phpstudy。

图片18.png 

然后我们用seay代码审计工具进行分析。

图片19.png 

输出好多结果我们随便找一个进行验证:

图片20.png 

有文件路径找到文件。

然后查看代码:

图片21.png 

进行分析验证:

图片22.png 

然后验证一下漏洞存在!

图片23.png 

一般的话都会使用phpinfo来验证!

总结

代码审计中漏洞的原理是重中之重,另外理解代码审计工具的原理最后要记住重要的两个审计的点:可控的变量,还有函数!

希望这篇文章对想学入门代码审计的朋友有所帮助!

  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务