注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

zjcjack的博客

 
 
 

日志

 
 

PHP Taint – 一个用来检测XSS/SQL/Shell注入漏洞的扩展  

2012-05-21 22:51:07|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

之前, 小顿和我提过一个想法, 就是从PHP语言层面去分析,找出一些可能的注入漏洞代码. 当时我一来没时间, 而来也确实不知道从何处下手..

直到上周的时候, 我看到了这个RFC: RFC:Taint.

但是这个RFC的问题在于, 它需要为PHP打Patch, 修改了PHP本身的数据结构, 这对于以后维护, 升级PHP来说, 很不方便, 也会有一些隐患.

虽然这样, 但这个RFC却给了我一个启发, 于是我就完成了这样的一个扩展:Taint Extension

这个扩展使用起来, 很简单(目前只支持5.2.6 ~ 5.3.10):

下载源代码以后, 编译, 安装. 然后在php.ini中要开启这个扩展(建议不要在生产环境开启这个扩展):

  1. extension=taint.so
  2. taint.enable=1

启用这个扩展以后, 如果在一些关键函数(或者语句: echo, print, system, exec, 等等), 或者输出的地方*直接*(没有经过转义, 安全过滤处理)使用了来自$_GET, $_POST或者$_COOKIE的数据, 则Taint就会提示你:

  1. <?php
  2.  $a = $_GET['a'];
  3.  
  4.  $file_name = '/tmp' . $a;
  5.  $output = "Welcome, {$a} !!!";
  6.  $var = "output";
  7.  $sql = "Select * from " . $a;
  8.  $sql .= "ooxx";
  9.  
  10.  echo $output;
  11. //Warning: main(): Attempt to echo a string which might be tainted in xxx.php on line x
  12.  
  13.  print $$var;
  14. //Warning: main(): Attempt to print a string which might be tainted in xxx.php on line x
  15.  
  16.  include($file_name);
  17. //Warning: include() [function.include]: File path contains data that might be tainted in xxx.php on x
  18.  
  19.  mysql_query($sql);
  20. //Warning: mysql_query() [function.mysql-query]: First argument contains data that might be tainted in xxx.php on line x
  21. ?>

目前因为还没有支持5.4(5.4的实现方法, 要依赖于我将要和Dmitry讨论的一个新需求), 所以目前还没有发布一个下载包, 大家可以先直接从源代码下载: Taint on Github.

上面的例子显示了简单的用法, 回头我会再完善下文档….

enjoy~

  评论这张
 
阅读(201)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017