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

ASP
保护 XML Web 服务免受黑客攻击
开发BtoC电子商务系统(ASP.NET)
用asp.net实现的把本文推荐给好友功能
尝尝ASP.NET中的小甜饼
web.config一个中文解释
使用ASP.NET加密口令
在SQL Server中保存和输出图片
ASP 中健壮的页结构的异常处理
如何使你的机器运行ASP?
asp(Active Server Page)的语言特性
关于inc文件
IE4 的 模 式 对 话 框 设 计
亲密接触ASP.net(6)
亲密接触ASP.Net(7)
用ASP.Net写一个发送ICQ信息的程序
用ASP.Net编写的查询域名的程序
使用 ASP+ 列表绑定控件(上)
使用 ASP+ 列表绑定控件(中)
使用 ASP+ 列表绑定控件(下)
揭开ASP神秘面纱(1)

ASP漏洞及安全建议(3)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 31 ::
收藏到网摘: 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>被解释成功
  出现了红色的放大的“你好”字
&