万能密码漏洞以及修复
<p> 万能密码漏洞以及修复</p> <p> 记得几年前要入侵一个企业网站超级简单</p> <p> 一般只需要找到后台 还有后台通常是www.xxx.com/admin/</p> <p> 然后账号 密码都是'or'='or' 就进去</p> <p> 现在好像有几个也可以用 但是已经没那么普及了</p> <p> 如果网站还出现这种“万能密码”漏洞该怎么办呢</p> <p> 'or'='or' 漏洞修复 方法有很多在这里介绍两种,咱们使用第2种</p> <p> 方法1: Replace过滤字符</p> <p> 解决方法:查找login.asp下的</p> <p> username=request.Form("name")</p> <p> pass=request.Form("pass")</p> <p> 修改为:</p> <p> username=Replace(request.Form("name"), "'", "''")</p> <p> pass=Replace(request.Form("pass"), "'", "''")</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]