一、前言
php代码审计如字面意思,对PHP源代码进行审查,理解代码的逻辑,发现其中的安全漏洞。如审计代码中是否存在sql注入,则检查代码中sql语句到数据库的传输和调用过程。
入门php代码审计实际并无什么门槛要求,只需要理解基础的php语法规则,以及理解各种类型漏洞的出现原因则可以开始尝试审计php源代码。通常的漏洞演示中sql语句会直接传入PHP自带的函数传入数据库执行,但在实际的软件项目中,通常以面向对象的思想进行编程,则会涉及各种形式的封装,调用,以及不同风格的框架,在这个条件下,只需要保持耐心跟踪其调用过程即可。
另外关于代码审计的思路而言,一种是通读代码逐行分析逻辑,另外一种是通过正则快速定位一些问题函数,再反向定位调用过程。这两种方式也对应代码审计的工具主流的实现思路,一种是通过语法分析的过程发现漏洞,另一者是定位问题函数实现。
不管什么方式,重点还是实战阅读代码,累积经验。
以上为个人观点,谨慎吸收。
二、基础知识要求
PHP语法
主流漏洞原理
三、入门阅读参考
《代码审计入门总结》
《PHP手册》
《代码审计:企业级Web代码安全架构》
四、审计实战
基础系列
基础系列中的4篇文章基本是通过一些直观的小案例来让人理解从用户的交互到代码的执行这个过程中漏洞是以什么形式存在的,又是如何被利用的,初学者阅读这几篇文章可以让人更加快速的理解代码审计的过程,以及基本的审计思路。
常见WEB漏洞原理分析及利用方式——SQL注入篇
常见WEB漏洞代码层原理分析及利用方式——文件操作漏洞篇
常见WEB漏洞代码层原理分析及利用方式之PHP代码执行篇
高级系列
高级系列的几篇其实就代码审计的整个大的领域来说并不算高级,但是都有其特色,并且大部分是从真实的软件项目开始讲解,可以让初学者理解实战中可能会遇到的一些问题,以及实战中的思考过程。
代码审计之绕过后台权限限制,继续sql注入
代码审计之突破路径限制删除文件
代码审计之任意用户密码找回漏洞
代码审计之伪全局机制使用不当导致的致命后果
代码审计之绕过addslashes总结
mel和bees系列都是指定了对某个实际软件项目的审计,初学者可以跟随作者的脚步进行挖掘,联系,其他的类型则是一些杂乱的文章。
Melcms分析集合
代码审计就该这么来MlecmsGetshell
代码审计就该这么来2Mlecms注入
{代码审计思路}(通读+审计)Mlecms(中危漏洞/不简单)
beescms分析集合
beescmsv4.0_RSQL
对BeescmsSQL注入漏洞的进一步思考
代码审计就该这么来3beescmsgetshell
Beecms任意文件删除
其他
PHP代码审计:Null字符问题
一个CMS案例实战讲解PHP代码审计入门
PHP代码审计储存XSS形成防御加利用篇
ZZCMS的代码审计
另外要提的一点是,不同语言编写的web应用其实都有相似性,当你熟练了解一门语言的代码审计过程后其实便可以进一步扩展到别的语言。你会发现基本原理是相似的,当然不同还是存在的,比如其中的addslashes和null的文章便是如此,它是PHP这门语言独有的问题,其他还有的一些差异在这里不细说明。
五、代码审计工具推荐
RIPS
它能检查出XSS,sql注入,敏感信息泄漏,文件包含等常见漏洞;能够采用正则方式扫描代码发现漏洞;也可以采用自定义的语法扫描代码发现问题。