Taint-0.3.0(A XSS codes sniffer) released
2012-02-18 00:00
1646 查看
最近几天忙里偷闲, 一直在完善taint, 今天我觉得终于算做到了80%的满意了, 根据80:20原则, 我觉得可以做为一个里程碑的版本了 :).
什么是Taint? An extension used for detecting XSS codes(tainted string), And also can be used to spot sql injection vulnerabilities, shell inject, etc.
经过我实际测试, Taint-0.3.0能检测出实际的一些开源产品的(别问是什么)隐藏的XSS code, SQL注入, Shell注入等漏洞, 并且这些漏洞如果要用静态分析工具去排查, 将会非常困难, 比如对于如下的例子:
另外, 多说一句, Taint可以说是, 我完成的扩展中最为复杂的一个, 使用了各种tricky技巧, 大家如果有兴趣做扩展开发, 可以用来作为一个很好的高级教材.
附录:
A. Tainted String
所有来自$_GET, $_POST, $_COOKIE的变量, 都被认为是Tainted String
B. taint检测的函数/语句列表, 当这些函数使用tainted string参数的时候, taint会给出警告:
1. 输出函数/语句系列
RFC:Taint (想法主要来自这个RFC)
什么是Taint? An extension used for detecting XSS codes(tainted string), And also can be used to spot sql injection vulnerabilities, shell inject, etc.
经过我实际测试, Taint-0.3.0能检测出实际的一些开源产品的(别问是什么)隐藏的XSS code, SQL注入, Shell注入等漏洞, 并且这些漏洞如果要用静态分析工具去排查, 将会非常困难, 比如对于如下的例子:
<?php $name = $_GET["name"]; $value = strval($_GET["tainted"]); echo $$name;对于请求:
http://****.com/?name=value&tainted=xxx静态分析工具, 往往无能为力, 而Taint却可以准确无误的爆出这类型问题.
Warning: main() [function.echo]: Attempt to echo a string that might be tainted in %s.php on line %d现在0.3.0已经发布, 我想短时间内, 我不会再添加新功能了. enjoy, PHP Taint.
另外, 多说一句, Taint可以说是, 我完成的扩展中最为复杂的一个, 使用了各种tricky技巧, 大家如果有兴趣做扩展开发, 可以用来作为一个很好的高级教材.
附录:
A. Tainted String
所有来自$_GET, $_POST, $_COOKIE的变量, 都被认为是Tainted String
B. taint检测的函数/语句列表, 当这些函数使用tainted string参数的时候, taint会给出警告:
1. 输出函数/语句系列
echoprintprintffile_put_contents2. 文件系统函数
fopenopendirbasenamedirnamefilepathinfo3. 数据库系列函数/方法
mysql_querymysqli_querysqlite_querysqlite_single_queryoci_parseMysqli::querySqliteDataBase::querySqliteDataBase::SingleQueryPDO::queryPDO::prepare4. 命令行系列
systemexecproc_openpassthrushell_exec5. 语法结构
evalinclude(_once)require(_once)C. 消除tainted信息的函数, 调用这些函数以后, tainted string就会变成合法的string:
escapeshellcmdhtmlspecialcharsescapeshellcmdaddcslashesaddslashesmysqli_escape_stringmysql_real_escape_stringmysql_escape_stringsqlite_escape_stringPDO::quoteMysqli::escape_stringMysql::real_escape_stringD. 调用中保持tainted信息的函数/语句, 调用这些函数/语句时, 如果输入是tainted string, 则输出也为tainted string:
= (assign). (concat)"{$var}" (variable substitution).= (assign concat)strvalexplodeimplodesprintfvsprintftrim(as of 0.4.0)rtrim(as of 0.4.0)ltrim(as of 0.4.0)E. 链接:
RFC:Taint (想法主要来自这个RFC)
相关文章推荐
- php taint检测XSS/SQL/Shell注入漏洞
- MagicAjax.NET 0.3.0 Released
- Laravel 5 中防止 XSS 跨站攻击的例子
- JVM优化系列之一(-Xss调整Stack Space的大小)
- 有关DOM XSS的一点思考
- kali beef-xss结合metasploit配置
- XSS 小结
- Delete an already released transport request(删除已释放请求)
- DVWA漏洞学习(2)反射型XSS
- XSS
- winpcap 中出现c:\codes\include\pcap-stdinc.h(79) : error C2144: syn..错误时
- XSS分析及预防
- JVM调优总结 -Xms -Xmx -Xmn -Xss
- web安全————XSS(预防篇)
- XSS 攻击原理
- 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)
- WEB安全实战XSS 攻击的另外一种解决方案(推荐)
- Google的XSS游戏
- JVM学习之:调优总结 -Xms -Xmx -Xmn -Xss
- 05-树10 Huffman Codes (30分)