工欲善其事必先利其器
环境推荐安装phpstudy. 他集成了php各种版本.一键切换.还有非常便捷的数据库管理等功能.
代码审计工具推荐Seay源码审计系统
RIPS汉化版:
关于这两款工具,.后续用到的时候我在仔细说.
审计方法
- 通读全文法
- 敏感函数参数回溯法
- 定向功能分析法
通读全文法
顾名思义,就是把所有代码都读一遍.这种方法是最麻烦的方法同时也是最全面的审计方法,特别是针对大型程序.源码成千上万行,想一下是不是忍不住要慰问xxx? 但这种方法在某种场景下是必须运用的,因为你只有通读了全文,你猜能了解整个业务的逻辑,才能挖掘到更多更有价值的漏洞. 这种方法一遍是企业对自身产品的审计,当然,小型应用也未必不可.
敏感参数回溯法
敏感参数回溯法就是根据敏感函数,逆向追踪参数传递的过程,. 这个方法是最高效,也是最常用的方法. 一般来说,大多数的漏洞产生是因为函数的使用不当造成的.我们只要找到这样的一些使用不当的函数,就可以快速挖掘到我们想要的漏洞.在这方面.Seay源码审计系统有独特的优势,他可以利用正则匹配一些高危函数,关键函数以及敏感关键字帮助我们快速定位,然后我们就可以分析判断敏感函数的上下文,追踪参数源头.尝试控制可控的参数变量.
定向功能分析法
该方法主要根据程序的业务逻辑来审计.首先是用浏览器逐个进行访问浏览,先熟悉下大致的功能,然后根据相关功能和审计经验,大概推测可能存在哪些漏洞.
常见漏洞(包括但不限于)
- 程序初始安装
- 站点信息泄露
- 文件上传
- 文件管理
- 登录认证
- 数据库备份恢复
- 找回密码
- 验证码
- ....
常见的INI配置
配置文件
一般为php.ini 有些时候会使php+版本号.ini ,他是全局配置文件,不管文件名什么样,作用都一样,配置文件在php启动的时候被读取,php.ini的值可以使用php相关函数进行修改覆盖.
.user.ini 用户配置文件,可以存在网站的根目录或者子目录.
语法
配置文件的语法非常简单. 空白字符和以引号开始的行被简单忽略. 一个空白字符串可以用在等号后不写任何东西表示,或者用none关键字表示
例: foo= , foo=none ,
配置文件是区分大小写的. foo=bar != FOO=BAR
配置文件中的表达式仅使用位运算符,逻辑非,圆括号,|位或,&位与,~位非,!逻辑非.
布尔标志用On表示打开,用Off表示关闭
安全模式
safe_mode = Off 默认值. (5.3.0废弃,5.4.0起移除)
安全模式关闭的情况下,是可以执行一些危险函数的. 比如 system(),关闭后把很多文件操作函数进行了权限控制,也不允许对某些关键文件操作 比如/etc/passwd.
上传文件及目录权限
file_uploads = on
upload_max_filesize= 8M
这两个参数主要是配置上传文件和上传文件大小的.
upload_tmp_dir =
这个主要是配置上传后的临时目录,不配置的话按系统走.
php.ini
建议大家有空了多去了解下具体的配置项, 每一项代表什么, 有几个选项等. 可以查阅官方文档等很多途径