PHP代码审计

优采云 发布时间: 2022-06-07 16:32

  PHP代码审计

  代码审计顾名思义就是检查源代码中的缺点和错误信息,分析并找到这些问题引发的安全漏洞,并提供代码修订措施和建议。

  PHP代码审计

  审计套路

  审计方法

  常见漏洞安装问题包含漏洞

  2.见

  3.远程文件包含

  找回密码上传漏洞

  6.验证方法

  7.绕过

  文件操作

  任意文件删除,任意文件复制,任意文件重命名,任意文件移动,任意文件下载

  首先尝试拿到配置文件中的数据库连接账号和密码,然后外链

  拿到配置文件,拿到加密解密函数的 key,生成加密字符串,结合具体的代码利用

  2.文件复制

  3.文件下载

  下载配置文件,拿到 key

  参考漏洞:qibocmsV7 整站系统任意文件下载导致无限制注入多处 wooyun-2014-066459.html

  4.文件写入

  5.文件包含

  加密函数

  拿到加密函数的 key, 加密一些特殊字符然后拿到加密的字符串

  XSSCSRFSSRF撸库命令注入登录认证XXE越权注入

  把用户可控的一些变量,带入到了数据库的各种操作中,并且没有做好过滤,例如:在注册用户的时候检测用户名是否存在,SQL 语句是拼接 SQL

  3.insert注入

  把要输出的数据插入到这个 column 里面去

  4.delete注入

  通过盲注的方式列出数据

  5.数字型注入

  变量并没有用单引号括住,不需要用单引号区分数据与 SQL 命令,这样就会让一般的GPC等机制无用,因为不包括特殊字符强制类型转换 intval

  6.字符型、搜索型

  7.Magic_quotes_gpc

  8.宽字节注入

  9.解码导致

  10.变量覆盖

  变量覆盖有 extract、parse_str、$$

  11.Replace

  12.server 注入

  -只对 GET POST COOKIE 进行 addslashes,没有对 SERVER 进行转义,一些 server 的变量,用户可控并写入数据库

  QUERY_STRING , X_FORWARDED_FOR , CLIENT_IP , HTTP_HOST , ACCEPT_LANGUAGE

  最常见的当然也就是 X_FORWARDED_FOR,一般是在 IP 函数中用户,没有验证 ip 是否合法,直接 return。

  参考漏洞:Phpyun 注入漏洞二 wooyun-2014-068853.html

  13.file 注入

  14.未初始化造成的注入

  php < 4.20 时,register_globals 默认都是 on, 逐渐 register_globals 默认都是 off

  伪全局机制,遗漏了初始化

  参考漏洞:qibocms 地方门户系统注入一个问题 wooyun-2014-080867.html

  参考漏洞:qibocms 地方门户系统注入 wooyun-2014-080870.html

  参考漏洞:齐博地方门户系统 SQL 注入漏洞 wooyun-2014-079938.html

  参考漏洞:齐博整站/地方门户 SQL 注入漏洞 wooyun-2014-080259.html

  15.数组中的key

  判断 GPC 是否开启,如果 off 就对数组中的 value 进行 addslashes,没有对数组中的 key 进行转义,key 带入 sql,听说低版本的 php 对二维数组中的 key 就算 GPC ON 也不会转义

  参考漏洞:qibocms V7 整站系统最新版 SQL 注入一枚 & 另外一处能引入转义符的地方。 wooyun-2014-069746.html

  参考漏洞:qibocms 多个系统绕过补丁继续注入 wooyun-2014-070072.html

  参考漏洞:qibocms全部开源系统 Getshell wooyun-2014-070366.html

  参考漏洞:Discuz 5.x 6.x 7.x 前台 SQL 注入漏洞一枚 wooyun-2014-071516.html

  16.offset

  $_GET[a] 提交的是一个数组,且含有一个 key 为 0,那么 $a 就是对应的这个 key 的 value,但是这里并没有强制要求为数组。

  提交一个字符串就为了 \, 吃掉一个单引号,然后就在 $b 处写入 inject 可以注入

  参考漏洞:qibocms 地方门户系统 wooyun-2014-080875.html

  17.第三方插件

  常见的 uc_cencert / alipay / tenpay / chinabank

  18.数字型注入

  19.二次注入

  20.查询当中 key 可控

  把 $_POST 带入到了查询函数,然后 foreach key ,foreach 出来的 key 做了查询中的 column。

  防止方法一般是把数据库中的 column 查询出来,然后 in_array 判断一下 $_POST 出来的 key 是否在数据库中的 column 中。

  参考漏洞:云人才系统 SQL 注入,绕过 WAF wooyun-2014-060166.html

  参考漏洞:Cmseasy SQL 注射漏洞之三 wooyun-2014-066221.html

  21.striplashes

  在全局 addslashes 后,在后面的文件中又 stripslashes 去掉了转义符,然后可以闭合单引号

  $_SESSION['flow_consignee'] = stripslashes_deep($consignee);

  参考漏洞:ecshop 全版本注入分析

  22.截取字符

  23.注册 GLOBALS 变量

  把 GET POST COOKIE 循环出来,然后注册一个变量,这里不允许创建 GLOBALS 变量,如果设置了 REQUEST 的 GLOBALS,就直接退出低版本 request order 是 GPC ,在 php5.3 以后 request order 默认成了 GP ,也就是 request 成了 get 和 post ,不包含 cookie,所以 $_REQUEST 里面就不包含 COOKIE 提交来的,而这里也把 COOKIE 循环出来,注册变量,所以这里在 COOKIE 里面提交 GLOBALS 就不会被检测出来,而且也成功注册了 GLOBALS 变量,所以再结合后面的一些些代码就造成了代码执行。

  参考漏洞:Discuz! 某两个版本前台产品命令执行 wooyun-2014-080723.html

  24.PDO 注入

  #### 敏感逻辑

  2.交易

  3.投票、统计

  PHP黑魔法

  2.正则匹配

  总结

  本文中提到的漏洞都来自于 wooyun 的历史数据,只提供了漏洞编号而没有提供地址,这个需要大家自行去寻找提供镜像备份的网站,或者下载备份文件自己本地查看,给大家带来的不变请大家见谅。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线