发信人: oyiboy()
整理人: i_am_trueman(2003-10-22 17:03:24), 站内信件
|
也谈聊天室的安全(写聊天室的安全问题)
最近几天在到一个黑客网站去转了一圈发现到了一篇关于聊天室里如何踢人 ,如何穿墙,如何捣乱的文章,里面说一些聊天室的漏洞,并如何通过这些漏洞 来捣乱,我在几个聊天室里试了一下,有大部份是可以做到的,同时我还发现这 些漏洞全布都是由于聊天室的程序设计上疏忽而产生的,所以在这里我想写出来 ,好让大家写出的聊天室更安全点,不过这些问题简单了,各位大虾们见了笑小 声点可以吗。
首先,我们看看聊天室里有什么漏洞,大家看看下面这段代码:
<html>
<head>
<body BGCOLOR="008888" TEXT="FFFFFF">
…………………………
………………
………
<form NAME="sendmsg" ACTION="chatt.asp" METHOD="POST" target="mtalk1"
OnSubmit="return chksend();">
<input type="hidden" name="username" value="长弓">******
<input type="hidden" name="sex" value="boy">********
<input type="hidden" name="message" value="">
<input type="hidden" name="a_method" value="sendtalk">
<div align="center"><center>
<table CELLSPACING="0" CELLPADDING="0"> <tr>
<td>发言: <input type="text" name="msg" size="60"> </td>
<td><input type="submit" value="发 言"> </td>
</tr>
<tr>
<td>悄悄:<input type=checkbox name=mtalk value=1>
对象:<input type="text" name="betalk" size="10">
表情:<select NAME="exp" onChange="document.sendmsg.msg.focus();documen t.sendmsg.msg.select();" size="1">
………
……………
……………………
</form>
<form name="getout" ACTION="chatt.pl" METHOD="POST">
<input type="hidden" name="username" value="长弓">!!!!!!
<input type="hidden" name="a_method" value="getout">!!!!
<input type="submit" value="退 出"></td>
</form>
</body>
</html>
以上这段代码是我在某个聊天室用"长弓"作代号登陆后在发言帧当下来的, 这只是一小部份,但在这一小部份代码里面就有两个漏洞,等我慢慢的讲给你们 听吧。
第一个漏洞
大家看看我在后面加上"*"号的那两句,其中第一句中的"长弓"就是我登陆 的名字,还有,第二句中的"boy"是的登陆时的姓别,还有再看看下面我加上"!" 号的两句,第一句里还是有我登陆时的名字,这几句都是我现在想说的两个漏洞 所在点啦,倒底怎么回事呢,慢慢听我讲吧。
大家看,如果我想在这个聊天室里穿墙的话,我只要把发言帧的代码当下来 另存,把"form"的"action"改成聊天室的地址,然后把再"*"号的第一句的“长弓 ”两字改成我想要的名字就可以了。如果我想变换姓别的也OK,只要把第二句的 "boy"改成"girl"就可以了。这就是所谓的穿墙术了。你甚至可以把它改成在线人 的名字,然后发言,让他感受一下自言自语的感觉吧^o^
第二个漏洞
踢人的漏洞就是这个了,我们看一下带"!"号的第一句,上面有我登陆的名 字对吧,再看第二句,相信大家对"getout"这个东东的英文意思都很清楚吧(反 正我就有点看不懂,我是用东方快车才知道这个是“离开”的意思,不要笑!我可 是个E文盲),它们俩的上面还有一段"form"标签,这段就是我们退出聊天室时的 代码,这个有什么用呢?我们先试试看,首先还是把"form"标签的"action"改成 聊天室的地址,不然就不知道提交给哪个家伙了。然后把"长弓"改成你想踢下去 的人的名字然后单击“退出”,哈!那个家伙怎么自己跑出去了。这个就是聊天 室踢人的漏洞。
好了,讲了怎么多,这两个漏洞知道是怎么回事了吧,但是它怎么会有这些 漏洞的呢?主要的原因是这两个漏洞使服务程序不识别客户发出的指令是不是真 正的从飧隹突Х⒊觯杂腥司陀? 以上两漏骗服务程序来更名发出发言,或更 名退出,使得真正的使用者受害,如果把这些洞洞堵住呢?这个就不必我解释了 吧,很简单!就是让服务程序能识别到底是哪个家伙发出的指令就可以了,具体 的作法就不用我说了吧,你可以给每个聊天者发一个识别码,象五笔字一样,也 可以用每个聊天者的密码识别,也可以把聊天者的密码随机加密后用作识别等等 ,反正能使你的服务程序识别到底是谁发出的指令就可以了。
好了,就讲到这了,大家再……(喂喂!不是还有一个漏洞吗?你还没讲完呢 ,想溜?没那么容易!)
(第三个漏洞)
喔!喔!喔!对了,还有一个漏洞还没说呢,这个洞洞也是由于程序员粗心 造成的,大家都知道现在的聊天室一般都有HTML过滤器,是不能输入HTML语言的 ,但为什么在一些聊天室虽然有HTML过滤器,但还是有人能输入HTML语言呢?大 家都知道在聊天室里能输入聊天的话都是在发言框内,是不?所以HTML过滤器就 过滤了发言框所输入的内容,对不?大家再想想除了发言框是不是还有一个对象 框?是吗?那里也是可以输入的,HTML语言就是从这输入的,这里有很多的程序 员把这给漏了,这就是一个漏洞,所以过滤不能只过滤发言框的,要全布能输入 的框都给加个过滤器。
当然有一些聊天室的对象框不是文本框是下拉框不能输入,但你想想看,如 果你把下拉框改成文本框那会怎么样呢?(这个方法我没试过,不知行不行,我 只是提出一下)
讲完了……请大家丢砖头吧!
到结束语了,以上三个漏洞都由于聊天室的设计者的粗心而出现的,希望大 家在写程序时一定要注意一下,其实我知道的就那么一点点,还有很多漏洞我不 知知道的,如在聊天室里用HTMT语言还有其它的方法,但我不知是什么,只好… …如果我真到后一定再写一篇补上,不过如果你知道有新的漏洞不防给我一封信 ,我们交流交流,我的信箱是:[email protected],主页是:oyi.126.com,我可不 想我写的聊天室有那么多漏洞。
好啦,废话多多,总之一句话:愿大家写的程序永远安全。
本篇文章是由ASP交流站的长弓亲手所写,虽然文笔差了点,
但如果要转载请不要改动它内容和链接,好让哪个看了想扁人的家伙来找我^o^
-----------------------------------
一个纯网页制作和ASP教学资料的收集站欢迎大家的光临。
http://oyi.126.com
[email protected]
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.246.181]
|
|