PHP代码审计从入门到入土-Day1

是否接触过PHP?

如何学习PHP?

菜鸟教程
w3school

PHP从入门到精通
PHP配置文件
PHP常见函数
PHP的一些特性

还需要掌握一些其他的

一些有关于数据库的知识
一些工具的使用
一些正则表达式
常见漏洞形成原理
不同的中间件的差异

工具的使用

环境搭建

phpstudy(推荐)
XAMPP

编辑器

Sublime Text(推荐)
Notepad++
PHPStorm+Xdebug

审计辅助插件

Seay源代码审计系统
RIPS
正则调试器
超级加解密转换工具

如何开始

开始之前

DVWA靶场练习
南邮CTF
BugKU CTF
多看看别人代码审计的文章
合理的使用百度、谷歌等搜索引擎

开始审计前的准备

获得源码
很多PHP程序都是开源的、找到官网下载最新的源码包就好了(站长之家,A5源码)
安装网站
在本地搭建网站,一边审计一边调试。实时跟踪各种动态变化
网站结构
浏览源码文件夹,了解该程序的大致目录
入口文件
index.php、admin.php文件一般是整个程序的入口,详细读一下index文件可以知道程序的架构、运行流程、包含哪些配置文件,包含那些安全过滤文件,了解该程序的业务逻辑。
配置文件
一般类似config.php等文件,保存一些数据库相关信息、程序的一些信息。

代码审计方法论

通读全文法

index 文件.index是一个程序的入口文件,所以通常我们只要读一读index文件就可以大致了解整个程序的架构,运行的流程,包含的文件、建议最好先将几个核心目录的index文件都简单的读一遍
函数集文件,一般在index文件中都会包含函数集文件,通常命名为functions,common等关键字,这些文件里面都是一些公共的函数,提供给其他文件统一调用。
配置文件,通常命名中包括config关键字,里面包含一些功能性配置选项以及数据库配置信息,还可以注意下参数值是用单引号还是双引号。
安全过滤文件,过滤文件对我们做代码审计至关重要,关系到我们挖掘到的可以点能不能利用,通常命名有filiter,safe,check等关键字,这类文件主要是对参数进行过滤。

优缺点

优点:更好的理解程序的架构和业务的逻辑,可以挖到更多,更高质量的漏洞
缺点:费时费力,对老手比较适合,对新手难度有点大。

敏感函数参数回溯法

直接使用工具可以扫出一些敏感的参数
例如:
1)通过select、insert结合from和where等关键字,判定是一条SQL语句,然后通过对字符串的识别,判断这个SQL语句里边的参数有没有拼接或者单引号过滤。
2)HTTP头里边的HTTP_CLIENT、HTTP_X_FORWARDFOR等获取到的IP地址,经常没有过滤就直接拼接到了SQL语句中,并且因为使在$_SERVER变量中,不受GPC的影响,因此可以查找HTTP_CLIENT、HTTP_X_FORWARDFOR关键字来快速查找漏洞。

优缺点

优点:只需要搜索相应敏感关键字,既可以快速的挖掘想要的漏洞,具有高效性
缺点:由于没有通读代码,对程序的整体框架了解不够深入,在挖掘漏洞时定位利用点会花费一点时间,另外对逻辑漏洞挖掘覆盖不到。

定向功能分析法

程序初始安装
站点信息泄露
文件上传
文件管理
登录认证
数据库备份与恢复
找回密码
验证码

本文到此已经结束,由于水平有限,在很多地方肯定有些不足之处,如有纰漏或者错误,还请斧正,定当改进。文章写的很不容易,大家的评论和点赞就是我的最大动力,谢谢支持!

2020-03-09
ro4lsc

你可能感兴趣的:(PHP代码审计)