β

Taint-0.3.0(A XSS codes sniffer) released

风雪之隅 488 阅读
xss
  • 转载请注明出处
  • 最近几天忙里偷闲, 一直在完善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注入等漏洞, 并且这些漏洞如果要用静态分析工具去排查, 将会非常困难, 比如对于如下的例子:

    <?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. 输出函数/语句系列

    echo
    print
    printf
    file_put_contents

    2. 文件系统函数

    fopen
    opendir
    basename
    dirname
    file
    pathinfo

    3. 数据库系列函数/方法

    mysql_query
    mysqli_query
    sqlite_query
    sqlite_single_query
    oci_parse
    Mysqli::query
    SqliteDataBase::query
    SqliteDataBase::SingleQuery
    PDO::query
    PDO::prepare

    4. 命令行系列

    system
    exec
    proc_open
    passthru
    shell_exec

    5. 语法结构

    eval
    include(_once)
    require(_once)

    C. 消除tainted信息的函数, 调用这些函数以后, tainted string就会变成合法的string:

    escapeshellcmd
    htmlspecialchars
    escapeshellcmd
    addcslashes
    addslashes
    mysqli_escape_string
    mysql_real_escape_string
    mysql_escape_string
    sqlite_escape_string
    PDO::quote
    Mysqli::escape_string
    Mysql::real_escape_string

    D. 调用中保持tainted信息的函数/语句, 调用这些函数/语句时, 如果输入是tainted string, 则输出也为tainted string:

    = (assign)
    . (concat)
    "{$var}" (variable substitution)
    .= (assign concat)
    strval
    explode
    implode
    sprintf
    vsprintf
    trim(as of 0.4.0)
    rtrim(as of 0.4.0)
    ltrim(as of 0.4.0)

    E. 链接:


    Comments


    Related posts:


    Copyright © 2010 风雪之隅 版权所有, 转载务必注明. 该Feed只供个人使用, 禁止未注明的转载或商业应用. 非法应用的, 一切法律后果自负. 如有问题, 可发E-mail至my at laruence.com.(Digital Fingerprint: 73540ba0a1738d7d07d4b6038d5615e2)

    Related Posts:

    xss
    作者:风雪之隅
    PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 - 左手代码 右手诗
    原文地址:Taint-0.3.0(A XSS codes sniffer) released, 感谢原作者分享。