当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP漏洞及安全建议(3)

ASP
ASP中实现限制IP的函数详解
Asp下实现限制IP访问的程序代码
asp下DateDiff 函数参数说明
Highlight patterns within strings
Insert Date and Time into Access
asp下调试程序的debug类
RESPONSE.WRITE和<%=%的区别
用asp实现网页邮箱访问的方法
编写一个含二级目录的源码(Asp+JavaScript)
asp下删除Access数词库中的空记录的sql语句
asp下制做行背景颜色交替变换的表格
asp下将数据库中的信息存储至XML文件中
asp下如何在Access数据库中立即得到所插入记录的自动编号?
asp下如何在ADO服务器端利用好缓存技术?
asp调用Word打印的代码
巧用FileSystem组件实现WEB应用中的本地特定打印的方法
用javascript解决外部数据抓取中的乱码问题
Asp中随机产生用户密码的代码
反SPAM新思路—换Z-BLOG的验证码!
在Z-BLOG可用的新版ASP的GIF验证码[V70404]

ASP漏洞及安全建议(3)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 135 ::
收藏到网摘: n/a

       8、ASP聊天室程序的漏洞
   问题描述:
   如果聊天室ASP程序设计不当,很容易会给他人利用来做坏事:可以踢人,穿墙,捣乱.
   首先,我们看看聊天室里有什么漏洞,大家看看下面这段代码:
  
  <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"改成聊天室的地址,然后把再"*"号的第一句的“测试者”两字改成想要的名字就可以了。也可以变换性别,只要把第二句的 "boy"改成"girl"。这就是所谓的穿墙术了。你甚至可以把它改成在线人的名字,然后发言,这样就冒充别人的姓名谈话。
   第二个漏洞
   踢人的漏洞就是这个了,我们看一下带"!"号的第一句,上面有是合法用户登陆的名字,再看第二句,他有”getout”,再加上上面还有一段"form"标签,这段就是我们退出聊天室时的代码,这个有什么用呢?我们先试试看,首先还是把"form"标签的"action"改成 聊天室的地址,不然就不知道提交给哪个家伙了。然后把"风风"改成你想踢下去的人的名字然后单击“退出”,那就把那个人踢出聊天室了。这个就是聊天室踢人的漏洞。
   这两个漏洞主要的原因是这两个漏洞使服务程序不识别客户发出的指令是不是合法用户。 以上两漏骗服务程序来更名发出发言,或更名退出,使得真正的使用者受害。
   当然上面的程序中还有一个漏洞,输入框没有对HTML语句和JAVASCRIPT语句做过滤。这个问题我们在漏洞5中已有详细分析,这里就不谈了。
  
   问题解决或者建议:
   在程序设计中让服务程序能识别到底是哪个家伙发出的指令就可以了,具体做法可以为每个聊天者发一个识别码,象五笔字一样,也可以用每个聊天者的密码识别,也可以把聊天者的密码随机加密后用作识别等等 ,反正能使你的服务程序识别到底是谁发出的指令就可以了。
  
  9、NT iss4.0_AuthChangeUrl? 漏洞
   问题描述:
   在NT iis4.0,当输入如下命令时
  http://someurl/_AuthChangeUrl?<font%20size=7%20color=red>你好
  你看到发生了什么吗?<font size=7 color=red>被解释成功
  出现了红色的放大的“你好”字
&