代码审计基础

工欲善其事必先利其器

环境推荐安装phpstudy. 他集成了php各种版本.一键切换.还有非常便捷的数据库管理等功能.

 

代码审计工具推荐Seay源码审计系统

 RIPS汉化版:

关于这两款工具,.后续用到的时候我在仔细说. 

审计方法

  1. 通读全文法
  2. 敏感函数参数回溯法
  3. 定向功能分析法

通读全文法

顾名思义,就是把所有代码都读一遍.这种方法是最麻烦的方法同时也是最全面的审计方法,特别是针对大型程序.源码成千上万行,想一下是不是忍不住要慰问xxx? 但这种方法在某种场景下是必须运用的,因为你只有通读了全文,你猜能了解整个业务的逻辑,才能挖掘到更多更有价值的漏洞. 这种方法一遍是企业对自身产品的审计,当然,小型应用也未必不可.

敏感参数回溯法

敏感参数回溯法就是根据敏感函数,逆向追踪参数传递的过程,. 这个方法是最高效,也是最常用的方法. 一般来说,大多数的漏洞产生是因为函数的使用不当造成的.我们只要找到这样的一些使用不当的函数,就可以快速挖掘到我们想要的漏洞.在这方面.Seay源码审计系统有独特的优势,他可以利用正则匹配一些高危函数,关键函数以及敏感关键字帮助我们快速定位,然后我们就可以分析判断敏感函数的上下文,追踪参数源头.尝试控制可控的参数变量.

定向功能分析法

该方法主要根据程序的业务逻辑来审计.首先是用浏览器逐个进行访问浏览,先熟悉下大致的功能,然后根据相关功能和审计经验,大概推测可能存在哪些漏洞.

常见漏洞(包括但不限于)

  1. 程序初始安装
  2. 站点信息泄露
  3. 文件上传
  4. 文件管理
  5. 登录认证
  6. 数据库备份恢复
  7. 找回密码
  8. 验证码
  9. ....

常见的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

建议大家有空了多去了解下具体的配置项, 每一项代表什么, 有几个选项等. 可以查阅官方文档等很多途径

posted @ 2019-03-12 10:34  admin_root_root  阅读(543)  评论(0编辑  收藏  举报