终于来到了代码审计篇章。希望看了朋友有所收获,我们通常把代码审计分为黑盒和白盒,我们一般结合起来用。
通常我们白盒审计有多种方法我们可以归纳为:
1.通读全文
2.回溯
其中通读全文费时间,但是有利于代码审计的经验积累,也能更深入的挖掘一些难以发现的漏洞。功能回溯我们可以定向的审计一些功能和函数,最常见的就是对命令执行函数的回溯,和上传等功能的审计。通过熟悉白盒审计有利于漏洞的发掘,因为代码审计和开发都能熟悉到程序中那些地方会存在对数据库的操作和功能函数的调用,举个简单的例子当我们看到download的时候,我们就会想到是不是有任意文件下载。
我们在代码审计中又可以分为静态和动态,静态我们通常用于无法搭建原来的环境只能看代码逻辑来判断是否存在漏洞,而动态调试就可以debug、输出、监控SQL语句来看非常方便。
接下来代码审计工具基本就用到Sublime Text 3、VSCode、Seay源代码审计系统、PHPStorm+XDebug、文件对比、MYSQL监控、编码转换、正则调试等。其中文件对比工具可以拿来和更新补丁后的文件进行对于对比定位漏洞代码区,PHPStorm+XDebug可以动态调试定位漏洞成因,也有利于漏洞的发掘。当然你也可以用那些自动化审计的,貌似还支持代码回溯,还是能审计到一些漏洞的。环境能用基本就用phpstudy了。
代码审计我们需要对php有一定的了解,当然是越深入越好,我们也不纠结,代码审计需不需要精通php什么的,只能说知识面在什么层次就能审计到什么层次的漏洞,但是至少你得看得懂代码。
我们应该具备一些知识:
1.基本的正则
2.数据库的一些语法(这个我在前面的数据库维基已经讲的差不多了)
3.至少你得看懂php代码
4.php配置文件以及常见函数
前面我们的实验环境我基本上不会使用框架类的,我尽量使用一些很普通的网站,还有如何用phpstudy之类的来本地搭建网站这些我也不会讲,这些基础的问题搜索一下就有,不能独立解决问题怎么能进步,遇到一些特殊的问题我还是会说一下的。
当然如果你跟我一样是一个新手才入门代码审计,看这篇文章最好不过了,因为我会讲的很细,当然我可能很多东西也讲不到,还请大家多看看别人的审计思路,只有不断的学习才有提高。