Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18440
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-02 14:42
文章分类
文章存档

2015年(5)

2014年(7)

我的朋友
最近访客

分类: PHP

2014-09-22 12:05:50


在甲方公司做一般还是以白盒为主,无非这么几类,XSS注入、命令执行、上传漏洞、本地包含、远程包含、权限绕过、信息泄露等。


1.xss + sql注入


     其中占大头的自然是XSSSQL注入,对于框架类型或者有公共的,建议在公共文件中统一做一次XSSSQL注入的过滤。写个过滤函数,可由如下所示:


$_REQUEST = filter_xss($_REQUEST);

$_GET = filter_xss($_GET);

$_POST = filter_xss($_POST);

$_COOKIE = filter_xss($_COOKIE);


$_POST = filter_sql($_POST);

$_GET = filter_sql($_GET);

$_COOKIE = filter_sql($_COOKIE);
$_REQUEST = filter_sql($_REQUEST);


这里有一点需要说明,$_REQUEST虽然等于$_GET+$_POST,但他们是独立的数组,也就是说假设改变了$_GET的值,但$_REQUEST的值还是原来的值,所以过滤时都不能落下,至于其他的如$_FILE之类的就可忽略了。


最简单的filter_xss函数是htmlspecialchars()


最简单的filter_sql函数是mysql_real_escape_string()


当然,谁都知道这种过滤filter_sql只能过滤字符型和型的注入,对于数字型是没有办法的,但也说明做了这层过滤后,只需在后面注意数字型的SQL语句就可以了,遇到了加intval过滤就可以了,这就变得容易多了。


    2. 命令执行


      对于命令执行,可以从入手,总共可分为3


(1) 代码执行 eval


(2)命令执行:execpassthrusystemshell_exec


(3) 文件处理:fwritefopenmkdir


       对于这几类需要注意其参数是否可控。


3.上传漏洞


       对于上传漏洞,也是重点关注的地方,要仔细分析它的处理流程,针对上传的绕过方式是很多的,最保险的方式:在保存文件是采用文件名随机命名和后缀白名单方式。其次要注意的一点是上传文件的地方可能不止一处,不要有遗漏,可能会碰到这样的情况,突然在某个里面包含了一个第三方的在里面。


      文件包含漏洞涉及的函数如include() include_once()require()require_once()file_get_contents()


最常见的还是出在文件功能函数,例如download.php?file=../../../etc/passwd 这种类型中。


4. 权限绕过


       权限绕过可分为两类吧


(1)文件的未授权访问。后台的文件没有包含对session的验证,就容易出现这样的问题

(2)
未作用户隔离,例如mail.php?id=23显示了你的信件,那么换个ID,
mail.php?id=24
就查看到了别人的信件,编写代码是方便,把信件都存在一个数据表里,id统一编号,前端展现时只需按id取出即可,但未作用户隔离,判定归属,容易造成越权访问。


这样的例子是很常见的,给某银行做评估是就经常发现这种漏洞。


   5. 信息泄露


    信息泄露算是比较低危的漏洞了,比如列目录这种就属于部署问题,而与代码审计无关了,而像暴路径、暴源码这种是需要防止的。曾经遇到这样的代码



表面上似乎没问题,可是当请求变为 xx.php?a[]=1时,即参数变为数组的时候,就会发生错误以致路径泄露,而用isset判断则不会,当然一个个防太麻烦,建议在配置文件中关闭错误提示,或者在公共文件中加入如下代码以关闭错误显示功能:






   
当然,漏洞远不止这些,其他如伪造、CSRF等非主流的就不介绍了。



阅读(331) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:PHP 事件机制

给主人留下些什么吧!~~