东江环境科技有限公司 發表於 2011-3-11 12:10:24

万能密码漏洞以及修复

<p>  万能密码漏洞以及修复</p> <p>  记得几年前要入侵一个企业网站超级简单</p> <p>  一般只需要找到后台 还有后台通常是www.xxx.com/admin/</p> <p>  然后账号 密码都是'or'='or' 就进去</p> <p>  现在好像有几个也可以用 但是已经没那么普及了</p> <p>  如果网站还出现这种&ldquo;万能密码&rdquo;漏洞该怎么办呢</p> <p>  'or'='or' 漏洞修复 方法有很多在这里介绍两种,咱们使用第2种</p> <p>  方法1: Replace过滤字符</p> <p>  解决方法:查找login.asp下的</p> <p>  username=request.Form(&quot;name&quot;)</p> <p>  pass=request.Form(&quot;pass&quot;)</p> <p>  修改为:</p> <p>  username=Replace(request.Form(&quot;name&quot;), &quot;'&quot;, &quot;''&quot;)</p> <p>  pass=Replace(request.Form(&quot;pass&quot;), &quot;'&quot;, &quot;''&quot;)</p> <p>  语法是屏蔽'和''字符来达到效果.</p> <p>  方法2:在conn.asp 内加入<B>���� SSI �ļ�ʱ����</B><BR>
</p> <p>  注:(前提 登陆页面有<B>���� SSI �ļ�ʱ����</B><BR>
)</p> <p>  把以下代码保存为safe.asp</p> <p>  下面是程序代码********************************************************</p> <p>  <!--p> <p>  Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name</p> <p>  Err_Message = 3</p> <p>  Err_Web = "404.htm"</p> <p>  '出错时转向的页面</p> <p>  Query_Badword="'|and|select|update|chr|delete|%20from|;|insert|mid|master.|set|chr(37)|="</p> <p>  '在这部份定义get非法参数,使用"|"号间隔,还可以增加</p> <p>  Form_Badword="'|(|)|;|="</p> <p>  '在这部份定义post非法参数,使用"|"号间隔</p> <p>  On Error Resume Next</p> <p>  if request.QueryString<>"" then</p> <p>  Chk_badword=split(Query_Badword,"|")</p> <p>  FOR EACH Query_Name IN Request.QueryString</p> <p>  for i=0 to ubound(Chk_badword)</p> <p>  If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then</p> <p>  Select Case Err_Message</p> <p>  Case "1"</p> <p>  Response.Write " <script Language=Javascript>alert('传参错误!参数 "&name&" 的值中包含非法字符串!nn请不要在参数中出现:and update delete ; insert mid master 等非法字符!');window.close();</script> "</p> <p>  Case "2"</p> <p>  Response.Write " <script Language=Javascript>location.href='"&Err_Web&"'</script> "</p> <p>  Case "3"</p> <p>  Response.Write " <script Language=Javascript>alert('传参错误!参数 "&name&"的值中包含非法字符串!nn请不要在参数中出现:and update delete ; insert mid master 等非法字符!');location.href='"&Err_Web&"';</script> "</p> <p>  End Select</p> <p>  Response.End</p> <p>  End If</p> <p>  NEXT</p> <p>  NEXT</p> <p>  End if</p> <p>  if request.form<>"" then</p> <p>  Chk_badword=split(Form_Badword,"|")</p> <p>  FOR EACH name IN Request.Form</p> <p>  for i=0 to ubound(Chk_badword)</p> <p>  If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then</p> <p>  Select Case Err_Message</p> <p>  Case "1"</p> <p>  Response.Write " <script Language=Javascript>alert('出错了!表单 "&name&" 的值中包含非法字符串!nn你的非法操作已记录,请马上停止非法行为!');window.close();</script> "</p> <p>  Case "2"</p> <p>  Response.Write " <script Language=Javascript>location.href='"&Err_Web&"'</script> "</p> <p>  Case "3"</p> <p>  Response.Write " <script Language=Javascript>alert('!参数 "&name&"的值中包含非法字符串!n谢谢您光临!,请停止非法行为!');location.href='"&Err_Web&"';</script> "</p> <p>  End Select</p> <p>  Response.End</p> <p>  End If</p> <p>  NEXT</p> <p>  NEXT</p> <p>  end if</p> <p> --></p> <p>  防注意入也可以用这段代码。。。</p> <p>  希望可以给你带来帮助</p>
頁: [1]
查看完整版本: 万能密码漏洞以及修复