相信很多刚入门的朋友来讲, php 代码审计很陌生,很多网友喜欢直接扔 seay 等自动化工具,这方法也算是一种最快的一种审计方式。之前看 w 师傅的一篇文章,开始部分说了一段话 ” 对于面向过程写法的程序来说,最快的审计方法可能时直接丢 seay 审计系统里,但对于基于 mvc 模式的程序来说,你直接丢 seay 审计系统的话,那不是给自己找麻烦吗? ”
确实如此,对于mv模式的程序,确实给自己找麻烦。
进入今天的正题,如何快速挖掘漏洞,以下是我自己之前用的方法,今天给大家分享一下,适合刚接触代码审计的朋友,大佬勿喷。
首先我们需要一个好的测试环境。
工具篇之开发环境 ( 个人推荐,排名不分先后 )
0x01.PhpStorm
PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查 ,是一个非常不错的开发环境。
主要特点:
1. 跨平台 。
2. 对 PHP 支持 refactor 功能。
3. 自动生成 phpdoc 的注释,非常方便进行大型编程。
4. 内置支持 Zencode 。
5. 生成类的继承关系图,如果有一个类,多次继承之后,可以通过这个功能查看他所有的父级关系。
6. 支持代码重构,方便修改代码。
7. 拥有本地历史记录功能( local history 功能)。
8. 方便的部署,可以直接将代码直接 upload 到服务器。
下载链接:
https://www.jetbrains.com/zh-cn/phpstorm/promo/?utm_source=baidu&utm_medium=cpc&utm_campaign=cn-bai-pro-phpstorm-ph-pc&utm_content=phpstorm-php-software&utm_term=php%e8%bd%af%e4%bb%b6
0x02.PhpStudy
phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的 Apache + PHP +MySQL+ phpMyAdmin + ZendOptimizer ,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等。
主要特点:
集成最新的 Apache + PHP +MySQL+ phpMyAdmin + ZendOptimizer , 一次性安装 , 无须配置即可使用 , 是非常方便、好用的 PHP 调试环境 . 该程序不仅包括 PHP 调试环境 , 还包括了开发工具、开发手册等 。
下载链接:
https://www.xp.cn/download.html
工具篇之审计工具 ( 个人推荐,排名不分先后 )
0x01.RIPS
Rips 是使用PHP语言开发的一个审计工具,所以只要有可以运行PHP的环境就可以轻松实现PHP的代码审计,它现在的最新免费开源版本是0.55版本 。
主要特点:
1. 能够检测 XSS 、 SQL 注入、文件泄露、本地 / 远程文件包含、远程命令执行以及更多种类型的漏洞。
2. 有 5 种级别选项用于显示以及辅助调试扫描结果。
3. 详细列出每个漏洞的描述、举例、 PoC 、补丁和安全函数。
4. 7 种不同的语法高亮显示模式。
5. 使用自顶向下或者自底向上的方式追溯显示扫描结果。
6. 一个支持 PHP 的本地服务器和浏览器即可满足使用需求。
7. 正则搜索功能。
下载链接:
https://sourceforge.net/projects/rips-scanner/files/
0X02. VCG
VCG是一个基于字典的自动化源代码扫描工具,可以由用户自定义需要扫描的数据。它可以对源代码中所有可能存在风险的函数和文本做一个快速的定位。
主要特点:
1. 除了执行一些更复杂的检查外,它还为每种语言提供了一个配置文件,基本上允许您添加任何要搜索的错误函数(或其他文本)。
2. 以饼图的形式显示扫描后结果。
下载连接:
https://sourceforge.net/projects/visualcodegrepp/?source=directory
0x03.Seay源代码审计系统
这是一款基于C#语言开发的一款针对PHP代码安全性审计的系统,主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞。
主要特点:
1. 一键自动化白盒审计
2. 代码调试
3. 正则编码
4. 自定义插件及规则
下载连接:
https://download.csdn.net/download/aiwennba/10130771
审计思路篇 ( 小白方法,大佬勿喷 )
说到思路大家想到的就是找可控变量,功能函数等等。
但是呢,对于初学者来说这种思路很费时间。下面说一下个人的思路。
首先看源码的目录结构,对源码进行初步的了解,再去本地搭建此套源码,针对部分漏洞先进行一次简单的灰盒测试。查找前台,后台的一些关键性功能部分,比如:
0x01.SQL注入
前台 :新闻,xx介绍,搜索框,登录,后台:登录,查询用户(新闻....),数据库管理等。
0x02.跨站脚本漏洞(XSS)
前台:搜索框 (很多环境下一般是反射性XSS),留言板,招聘等类似功能处, 个人资料等。
0x03.文件上传
前台:个人资料处上传头像 ,招聘等类似功能处上传文件,后台:发布新闻附件上传,网站logo上传,新建模板,插入第三方js脚本等。
再到源码查找以上测试部分功能处的正则,waf的特点,再去考虑漏洞的产生和利用。
0x04.逻辑漏洞和未授权访问
前台:个人资料修改,购买商品,网站部分插件(上传...);后台:附件删除等。
充分利用burp suite,wireshark等工具进行流量分析,仔细观察,并记录每次传参的变量,再到源码查找此变量,并判断传入参数是对普通用户的身份验证。
这里很多朋友的问题来了, ” 你这个方法,跟直接扔 seay查找功能函数有什么区别啊,是在曾流量?”
刚开始接触代码审计的朋友们应该知道,去查找可控变量,功能函数,到后面去利用此变量,函数。是较困难的。所以呢针对初学者来说先对网站的结构进行了解,查找可疑存在漏洞处,是很不错的一种审计方法。
标签:审计,连载,代码,漏洞,PHP,上传,调试 From: https://blog.csdn.net/aihua002/article/details/140058927