东文网络  
     首页 焦点推荐 网站设计 网络安全 网站运营 经典网站 菜鸟学校 数字传媒 网站推广 搜索优化 域名拍卖 风云人物 电脑常识 电脑专家 专业建站 网店圈圈
 
  您现在的位置: 东文网络/网站设计/程序设计
我也要作好人,如何在入侵后帮助管理员修补asp漏洞
 
双击自动滚屏 发布者:东文网络 来源网络发布时间:2008-3-10

在学脚本入侵的时候,我们经常可以找到一些安全性比较差的站点,作为练手的对象,xixi~~。  
这对于跟我一样的菜鸟级黑客来说是件好事!可以满足一下自己的小小虚荣心,拿个webshell的!  
但是由于我本善良(谁在扔臭鸡蛋??哇~),有时候也有一点小小的内疚!毕竟你拿人家作试验了,对方舍身为你提供了这个机会,好像不给对方一点答谢也有点说不过去的。况且那些漏洞很明显的暴露在网上本身也是很危险的~,万一下一个入侵者是个龌龊卑劣的挂马者呢(这种情况我是经常遇到).  
这个时候你有三个选择-----  
一:电邮或在留言板留言通知该站管理员修补(记住!不是让你去改掉人家的主页,装模作样的说:该站有漏洞……)。  
二:义务帮助扫马(这个我经常做的)。  
三:如果对方的管理员很不负责,而且漏洞不涉及太多程序上的修改,那你干脆就自己动手。几分钟就搞定了。(不过这样做的时候我要提醒大家,千万要备份)。  

举个例子,比如我们经常能见到这样一些漏洞,在一些站点的后台入口处输入or=or,就可以直接构造一个伪造的输入成立语句,欺骗程序让我们以合法的身份进入后台管理页面。这样是很危险的。如下图,直接输入or=or,就可以顺利进入到管理后台。  


原因是没有过滤掉非法字符or和“”,这个时候我们可以在登陆页面中使用replace语句进行简单过滤,简单介绍replace语句,他叫字符转义函数,基本用法如下:  

Replace(Replace(Pwd,"or",""),"","")  
Replace(Replace(Replace(Replace(Replace(变量名称,"",""),"or",""),"and",""),"--",""),";","")  
其中Replace可以套嵌使用,何谓套嵌使用?就是一层一层的用(空空的话,xixi~~)。  

还是实例演示:比如我们察看这个网站的后台登陆页面(怎么察看?我有webshell马嘛),如下图,他的后台登陆验证页面是那个checklogin.asp文件。  


看他的验证代码:  
<%dim adminname,adminpassword  
adminname=DisHtml(request.form("adminname"))  
adminpassword=DisHtml(request.form("adminpassword"))  
if (adminname<>"") and (adminpassword<>"") then   
adminname=Replace(Replace(adminname,"",""),"or","")   
adminpassword=Replace(Replace(adminpassword,"",""),"or","")  

if adminname="" or adminpassword="" then  
  call showerror("用户名和密码不能为空")  
End If  
end if  
adminpassword=md5(adminpassword)  
set rs=conn.execute("select adminname,adminpassword,AdminPower from [admin] where adminname="&adminname&" and adminpassword="&adminpassword&"")  
if rs.eof then  
  rs.close  
  set rs=nothing  
  call connclose  
  call showerror("用户名或密码不存在")  
else  
  session("adminname")=adminname  
  session("AdminPower")=rs("AdminPower")  
  rs.close  
  set rs=nothing  
  call connclose  
  response.write "<script>top.location.href=../menu/main.asp;</script>"  
end if  
%>  


打开来,我们在其中加入这样一句,  

if (adminname<>"") and (adminpassword<>"") then   
adminname=Replace(Replace(adminname,"",""),"or","")   
adminpassword=Replace(Replace(adminpassword,"",""),"or","")  

不要忘记在结尾处加上end if语句。也就是改成  

<%dim adminname,adminpassword  
adminname=DisHtml(request.form("adminname"))  
adminpassword=DisHtml(request.form("adminpassword"))  
if (adminname<>"") and (adminpassword<>"") then   
adminname=Replace(Replace(adminname,"",""),"or","")   
adminpassword=Replace(Replace(adminpassword,"",""),"or","")  

if adminname="" or adminpassword="" then  
  call showerror("用户名和密码不能为空")  
End If  
end if  
adminpassword=md5(adminpassword)  
set rs=conn.execute("select adminname,adminpassword,AdminPower from [admin] where adminname="&adminname&" and adminpassword="&adminpassword&"")  
if rs.eof then  
  rs.close  
  set rs=nothing  
  call connclose  
  call showerror("用户名或密码不存在,或输入字符非法")  
else  
  session("adminname")=adminname  
  session("AdminPower")=rs("AdminPower")  
  rs.close  
  set rs=nothing  
  call connclose  
  response.write "<script>top.location.href=../menu/main.asp;</script>"  
end if  
%>  


再次登陆检验,呵呵,成功了!  



补充一句:其实网站程序这样把登陆页面和检验页面分开的本身做法是对的,因为登陆页面是在客户端执行的,而检验页面是在服务器端执行的,由登陆页面提交参数在服务器端进行检验,无权限用户是无法直接读取的,安全性就有保证。如果不分开直接在客户端检验的话就容易被入侵者加以利用,他可以修改上传提交函数或者干脆用NC 提交,这样的话,Replace语句本身就形同虚设了!(你如果认真地在看得话就会从中得到一点启示,呵呵,这样就可以尝试我的过关题目2了,咳!)。  


再来说说另一个漏洞,调用conn.asp暴出数据库路径的问题。conn.asp文件用于连接数据库,通常我们直接访问在网站目录inc下的conn.asp就可以暴出数据库的物理路径。如图,还是举个实例!如图!  



看见没,真实的数据库物理路径出来了。我们输入http://www.xxxx.cn/xianjin/admin/DataBase\xianjinsdfsdb.asp  
乖乖!居然没做防下载处理!  


这样是可能被入侵者利用的,一句话插马连接就是需要这样的前提(参考我以前的一篇文章)  
其实弥补漏洞的方法有两个,一是给数据库作防下载处理,二是修改conn.asp。  

第一个我不会也没那个精力,还是第二个方法来得快。(xixi~~我很懒的)在其中加入On Error Resume Next 语句。简单介绍下:直接访问conn.asp文件因为出错才会返回数据库连接路径,我们只要让它出错不返回数据库连接路径不就可以了吗?On Error Resume Next 语句本身就是一个容错语句,就算出错也会执行下去的。  

举实例,还是直接用我的webshell马去看看源文件的代码。如图  


<%  
  dim conn  
  dim connstr  
  dim db  
    db="../../DataBase/xianjinsdfsdb.asp"  
  Set conn = Server.CreateObject("ADODB.Connection")  
  c & Server.MapPath(""&db&"")  
  conn.Open connstr  
    
  释放Rs对象  
  function rsclose  
    set rs=nothing  
  end function  
    
  关闭并释放数据库连接  
  function connclose  
    conn.close  
    set conn=nothing  
  end function  

%>  

我们只需要改成这样  


<%  
  dim conn  
  dim connstr  
  dim db  
      On Error Resume Next   
  db="../../DataBase/xianjinsdfsdb.asp"  
  Set conn = Server.CreateObject("ADODB.Connection")  
  c & Server.MapPath(""&db&"")  
  conn.Open connstr  
    
  释放Rs对象  
  function rsclose  
    set rs=nothing  
  end function  
    
  关闭并释放数据库连接  
  function connclose  
    conn.close  
    set conn=nothing  
  end function  

%>  

再来试试!  



看见没,没有返回数据库连接路径的错误提示,成功了。  

好累!今天先到这吧!以上是我在检测入侵的之后对网站的一些简单修补,其实还有很多诸如数据库备份和上传的漏洞也是可以简单修补的,太累了,下次  
如果大家有兴趣我再继续,没有就算了。毕竟这样做完全是义举,没有任何报酬的,愿意就做,不愿意就溜,只要不做坏事就OK了! -东文网络专业建站,您信赖的网络专家-

不知该信息是否给您解决了问题,还有疑问请到留言建议向我们咨询 :)

 
也许你对下面的相关信息感兴趣:
我也要作好人,如何在入侵后帮助管理员修补
ASP程序网站漏洞SQL通用防注入程序
ASP程序漏洞解析及黑客入侵防范方法
常见ASP程序漏洞---防范补救篇
很严重的mu页面asp程序漏洞
ASP程序漏洞全接触-入门篇
ASP程序漏洞全接触-高级篇
ASP程序漏洞全接触-进阶篇
[空间]200M 中型虚拟主机,支持as
[空间]80M 经济实惠型虚拟主机,支持
热点推荐新闻:
李彦宏:创业仅仅有一个好主意是不够的
55BBS韩华:80后美丽女孩的创业生活
360提示有漏洞,但win2000安装不
N70手机自动发彩信的病毒描述及解决方法
手机病毒N70已不容我们忽视,它威胁到我
组图:中国最美的六大草原及其传说
奇图探秘:唐三藏徒弟孙悟空真实原型之谜
二OO七年木马病毒“英雄榜”,你中过几个
小心“机器狗木马”破坏电脑系统(附查杀)
谁能娶女首富杨惠妍?将财色双得


打印本页 | 关闭窗口

------------------------

------------------------

------------------------
    Powered by dongwen.net 2007-2010 东文网络