架构

精力有限, 力争合作伙伴,资源共享

常用链接

统计

常用

最新评论

某酒店预定管理系统漏洞分析

某酒店预定管理系统漏洞分析

时间:2010-08-26 18:30来源:刀客城 作者:anliou 点击:221次
首先在后台admin目录下的 checkadmin.asp中 ,直接看代码 % dimadmin_name,admin_pwd admin_name=trim(request( admin_name )) admin_pwd=trim(request( admin_pwd )) setrs=server.createobject( adodb.recordset ) sql= select*fromadmin_userwherename='

首先在后台admin目录下的 checkadmin.asp中 ,直接看代码

 

  1.  
  2.  
  3. <%  
  4. dim admin_name,admin_pwd  
  5. admin_name=trim(request("admin_name"))  
  6. admin_pwd=trim(request("admin_pwd"))  
  7. set rs=server.createobject("adodb.recordset")  
  8. sql="select * from admin_user where name=\'"&admin_name&"\'" 
  9. rs.open sql,conn,1,1  
  10. if not rs.eof then  
  11. if admin_pwd=rs("password") then  
  12.    session("admin")=admin_name  
  13.    response.redirect "main.asp" 
  14. else  
  15.    Response.Write "<script language=\'javascript\'>window.confirm(\'密码不正确,请后退重填!!\');</script>" 
  16.    Response.Write "<script language=\'javascript\'>parent.window.history.go(-1);</script>" 
  17. end if  
  18. else  
  19.    Response.Write "<script language=\'javascript\'>window.confirm(\'用户名不正确!!\');</script>" 
  20.    Response.Write "<script language=\'javascript\'>parent.window.history.go(-1);</script>" 
  21. end if  
  22. %>  

未过滤单引号,但由于之后又跟数据库中存在的密码进行比较,所以万能密码or 是无法登录了,但可以通过变异的万能密码来绕过,使用特定的 union 语句,将密码置为1 然后就可以通过验证了,比如说这里我观察到 admin_user中一共有三个字段 字段名分别为 name,password,id  ,password位于 第二个字段上,可以构造如下语句简单绕过认证。

用户名填写:1\' union select 1,1,1 from admin_user where \'1\'=\'1 
密码直接填写:1 

这样就OK。

后台文件中upfile.asp存在上传漏洞,代码如下:

 

  1.  
  2.  
  3. <%  
  4. dim upload,file,formName,formPath,iCount  
  5. set upload=new upload_5xSoft \'\'建立上传对象  
  6. response.write upload.Version&"<br><br>" \'\'显示上传类的版本  
  7. if upload.form("filepath")="" then   \'\'得到上传目录  
  8. HtmEnd "请输入要上传至的目录!" 
  9. set upload=nothing  
  10. response.end  
  11. else  
  12. formPath=upload.form("filepath")  
  13. \'\'在目录后加(/)  
  14. if right(formPath,1)<>"/" then formPath=formPath&"/"   
  15. end if  
  16. iCount=0  
  17. for each formName in upload.file \'\'列出所有上传了的文件  
  18. set file=upload.file(formName) \'\'生成一个文件对象  
  19. if file.FileSize>0 then         \'\'如果 FileSize > 0 说明有文件数据  
  20. file.SaveAs Server.mappath(formPath&file.FileName)   \'\'保存文件  
  21. response.write file.FilePath&file.FileName&" ("&file.FileSize&") => "&formPath&File.FileName&" 成功!<br>" 
  22. iCount=iCount+1  
  23. end if  
  24. set file=nothing  
  25. next  
  26. set upload=nothing \'\'删除此对象  
  27. Htmend iCount&" 个文件上传结束!" 
  28. sub HtmEnd(Msg)  
  29. set upload=nothing  
  30. response.write "<br>"&Msg&" [<a href=""javascript:history.back();"">返回</a>]</body></html>" 
  31. response.end  
  32. end sub  
  33. %>  

未对上传文件进行任何过滤,登录后可以上传任意文件,未做任何文件名的修改。

由于分析的是一个小程序,刚我也测试了一下,能拿shell的站不多,也就不提供关键字了,主要是学习一下找漏洞的思路吧

 

2010.8.12

 

 

(责任编辑:admin)

 

posted on 2011-01-14 01:20 fdsajhg 阅读(355) 评论(0)  编辑 收藏 引用 所属分类:


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理