PHP Taint – 一个用来检测XSS漏洞的扩展
浏览:2869次 出处信息
之前, 小顿和我提过一个想法, 就是从PHP语言层面去分析,找出一些可能的XSS漏洞代码. 当时我一来没时间, 而来也确实不知道从何处下手..
直到上周的时候, 我看到了这个RFC: RFC:Taint.
但是这个RFC的问题在于, 它需要为PHP打Patch, 修改了PHP本身的数据结构, 这对于以后维护, 升级PHP来说, 很不方便, 也会有一些隐患.
虽然这样, 但这个RFC却给了我一个启发, 于是我就完成了这样的一个扩展:Taint Extension
这个扩展使用起来, 很简单(目前只支持5.2.6 ~ 5.3.10):
下载源代码以后, 编译, 安装. 然后在php.ini中要开启这个扩展(建议不要在生产环境开启这个扩展):
- extension=taint.so
- taint.enable=
启用这个扩展以后, 如果在一些关键函数(或者语句: echo, print, system, exec, 等等), 或者输出的地方*直接*(没有经过转义, 安全过滤处理)使用了来自$_GET, $_POST或者$_COOKIE的数据, 则Taint就会提示你:
- <?php
- $a = $_GET['a'];
- $file_name = '/tmp' . $a;
- $output = "Welcome, {$a} !!!";
- $var = "output";
- $sql = "Select * from " . $a;
- $sql .= "ooxx";
- echo $output;
- //Warning: main(): Attempt to echo a string which might be tainted in xxx.php on line x
- print $$var;
- //Warning: main(): Attempt to print a string which might be tainted in xxx.php on line x
- include($file_name);
- //Warning: include() [function.include]: File path contains data that might be tainted in xxx.php on x
- mysql_query($sql);
- //Warning: mysql_query() [function.mysql-query]: First argument contains data that might be tainted in xxx.php on line x
- ?>
目前因为还没有支持5.4(5.4的实现方法, 要依赖于我将要和Dmitry讨论的一个新需求), 所以目前还没有发布一个下载包, 大家可以先直接从源代码下载: Taint on Github.
上面的例子显示了简单的用法, 回头我会再完善下文档….
建议继续学习:
- 几种极其隐蔽的XSS注入的防护 (阅读:4759)
- 一段Javascript的代码 (阅读:3387)
- 使用Http-only Cookie来防止XSS攻击 (阅读:3210)
- 新浪微博的XSS攻击 (阅读:3106)
- 对HTML做白名单过滤 (阅读:2707)
- xss简单渗透测试 (阅读:2775)
- 深掘XSS漏洞场景之XSS Rootkit (阅读:2277)
- XSS 前端防火墙 —— 内联事件拦截 (阅读:1518)
- XSS 前端防火墙 —— 可疑模块拦截 (阅读:1432)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:wget 自动发送用户名密码
后一篇:验证码的几个常见漏洞 >>
文章信息
- 作者:雪候鸟 来源: 风雪之隅
- 标签: Taint XSS
- 发布时间:2012-03-04 18:11:52
建议继续学习
近3天十大热文
-
[61] memory prefetch浅析
-
[54] 转载:cassandra读写性能原理分析
-
[51] 深入浅出cassandra 4 数据一致性问
-
[44] MySQL半同步存在的问题
-
[40] 《web前端最佳实践》—高维护性css
-
[40] 获取Dom元素的X/Y坐标
-
[38] 字符引用和空白字符
-
[37] javascript插入样式
-
[37] 基本排序算法的PHP实现
-
[34] MySQL vs NoSQL 效率与成本之争