盘点漏洞种类和代码审计工具
前言
代码审计是在经过黑盒测试完毕,也就是检查应用的基本功能是否符合产品业务需求下进行的。需要有一定的编码基础以及对漏洞形成原理的基本认知,通过工具或者经验检测代码中可能出现的 bug,并在不同平台(windows,linux),不同 PHP 版本下测试。比如 PHP 的很多新版本会对一些指令废弃删除,但是在旧版本中却能使用,而该版本下的指令即有可能会被人发现漏洞。
PHP 核心配置
PHP 配置对于大多数人都是通过 php.ini 设置,但其实是有配置范围的,比如一些指令配置只能通过 php.ini 配置,也有一些可以在 PHP 脚本中设置,通过 ini_set()函数,详细可以查询 PHP_INI.*的列表和 ini_set 使用方法。
代码审计工具
1.seay 源代码审计工具
2. HackBar 漏洞验证辅助(火狐浏览器扩展)
代码审计思路
1. 查看敏感函数追踪参数
2. 全部通读一遍源码了解逻辑
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 的真实性需要比较一下这三种获取方式的不同点再来实现功能。还有验证码,有图片验证,滑动验证,语音验证,短信验证等,但网上也存在图片识别,打码平台相应的工具。只能说防范手段在升级,漏洞也在不断升级,代码审计必不可少。
评论