代码审计必备知识点:
1、代码审计开始前准备:
环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。
2、代码审计前信息收集:
审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。
3、代码审计挖掘漏洞根本:
可控变量及特定函数,不存在过滤或过滤不严谨可以绕过导致的安全漏洞。
4、代码审计展开计划:
审计项目漏洞原理->审计思路->完整源码->应用框架->验证并利用漏洞。
代码审计两种方法:
1.根据关键字找到敏感函数
2.根据目标功能判断可能存在的漏洞
案例:CNVD-梦想cms1.4-存在任意文件删除漏洞
CNVD发布的梦想cms任意文件删除漏洞,只公开了一些基础信息,如:cms1.4版本,漏洞产生在后台,位置在Ba***.cl***.php文件。
我们需要根据这些基础信息,审计源码找出漏洞……
下载源码搭建好网站
使用phpstorm打开源码,查看后台admin目录,找到Ba***.cl***.php文件,里面只有两个Ba开头的php文件,所以就可以缩小范围到两个文件中审计漏洞
在两个文件搜索(Ctrl+F) unlink删除函数,确定漏洞是在BackdbAction.class.php文件产生的
经过代码审计发现:删除的是 file/back/ 目录下的$dir变量内容,而$dir变量内容是由$filename控制。我们需要找到是谁调用了del0ne方法。
选中del0ne右键选择声明成功找到是delbackdb调用了del0ne方法,发现是以GET方式传递的$filename参数。而且没有任何过滤
因为源码使用的是MVC架构,所以访问时需要使用MVC访问规则。删除的是file/back/ 目录下的内容,所以在目录下创建一个sc.php。
使用MVC规则访问网站,尝试删除sc.php文件。
提示删除成功
目录下也没了sc.php文件
install目录下有一个install_ok.txt文件,删除这个文件就可以重装网站
尝试使用目录遍历删除这个文件,访问网站
提示删除成功
访问网站install安装目录,成功提示重新安装网站
联系客服