前言php
代码审计是在通过黑盒测试完毕,也就是检查应用的基本功能是否符合产品业务需求下进行的。须要有必定的编码基础以及对漏洞造成原理的基本认知,经过工具或者经验检测代码中可能出现的bug,并在不一样平台(windows,linux),不一样PHP版本下测试。好比PHP的不少新版本会对一些指令废弃删除,可是在旧版本中却能使用,而该版本下的指令即有可能会被人发现漏洞。linux
PHP核心配置windows
PHP配置对于大多数人都是经过php.ini设置,但实际上是有配置范围的,好比一些指令配置只能经过php.ini配置,也有一些能够在PHP脚本中设置,经过ini_set()函数,详细能够查询PHP_INI.*的列表和ini_set使用方法。浏览器
代码审计工具函数
1.seay源代码审计工具(公众号回复"审计"可获取)工具
2. HackBar漏洞验证辅助(火狐浏览器扩展)学习
代码审计思路测试
1. 查看敏感函数追踪参数编码
2. 所有通读一遍源码了解逻辑3d
3. 按功能点审计追踪
常见的几种漏洞类型
1. SQL注入
2. XSS漏洞(跨站脚本攻击)
3. CSRF漏洞(跨站请求伪造)
4. 文件操做漏洞
5. 代码执行漏洞
6. 命令执行漏洞
7. 变量覆盖漏洞
8. 业务逻辑漏洞
9. 越权与提权
10. 二次注入
11. ……等等
小结&待续
因为在代码审计中会涉及到不少知识点,因此这里只先总结一个引文。了解几种常见的漏洞类型,而这些漏洞也都有特定的例子能够挖掘,须要在工做或学习中不断积累分析,而且找到最好的防范方案解决。好比程序中须要注意接收与输出。获取用户提交过来的数据或操做,都说:”不要相信用户的任何操做”。用户可能只是一个脚本,天然就存在XSS,爆破,CSRF,操做越权等等的风险。而输入多是由咱们接收完用户输入直接反射性输出或把接收数据存储后再根据业务逻辑存储型输出。因此每个函数或方法编写时对参数的校验过滤以及返回值的转换处理等等都必不可少。而应用的功能点好比评论,登录注册,找回密码,获取验证码,上传文件图片,提现抽奖,积分等都最会是别人盯上找漏洞的地方,除了经过限制次数,IP防止暴力登录每每还不够。单说获取IP地址,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR,REMOTE_ADDR均可以获取,而前二者可使用http header伪造,这时候对于一个IP的真实性须要比较一下这三种获取方式的不一样点再来实现功能。还有验证码,有图片验证,滑动验证,语音验证,短信验证等,但网上也存在图片识别,打码平台相应的工具。只能说防范手段在升级,漏洞也在不断升级,代码审计必不可少。