超全的webshell权限提升方法(9)


说到%5c,你是不是想起了当前流行的那个%5c暴库漏洞,呵呵,本文就是对%5c利用的探索(呵呵,当然有我提出的新东东,或许对你有帮助哦^_^)。 
好,我们先追根溯源,找到那个漏洞的老底。看看绿盟2001年的漏洞公告:http://www.nsfocus.net/index.php?ac...iew&bug_id=1429 
N 年以前利用这个漏洞可以实现目录遍历,虽然微软出了补丁,不过好像补丁是用来限制iis只能访问虚拟目录的,所以漏洞还是存在,只不过利用方式变了。对 iis来说,提交一个含有%5c的url能够找到文件,但是该文件里以相对路径引用的其他文件却找不到了(%5c是\\的url编码,iis跳转到上一级目录去找,当然找不到;头晕了吧,哈哈,我也头晕啊)。 
后来这个漏洞就被牛人挖掘出来了,也就是传说中的%5c暴库:由于连接数据库的文件引用的相对路径,提交%5c找不到文件,所以导致出错,iis就会老老实实的说出数据库的路径(不明白?找google)。 
一个偶然的机会我发现还可以利用%5c绕过asp的验证;当我们暴库失败的时候不妨试试。 
废话少说,看下面的代码: 
<!--#INCLUDE file="conn.asp" --> 
<% 
guest_user=trim(request("guest_user")) 
guest_password=trim(request("guest_password")) 
Set rs= Server.createObject("ADODB.Recordset") 
sql="select * from admin where id=1" 
rs.open sql,conn,3,2 
readuser=rs("guest_user") 
readpassword=rs("guest_password") 
if readuser<>guest_user or readpassword<>guest_password then 
response.write "请输入正确地管理员密码!" 
response.end 
else 
session("admin")=1 \'登陆后写入seesion中保存 
response.write("登陆成功,请返回信息页") 
end if 
%> 
看到没有,要想通过验证必须让数据库里的用户名密码与提交的一致;想到什么?让我们再看看数据库连接文件代码: 
<% 
on error resume next 
set conn=server.createobject("adodb.connection") 
DBPath = Server.MapPath("guestbook.asp") 
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath 
%> 
啊,有容错语句不能暴库!等等,如果提交%5c数据库找不到,由于容错,所以程序会继续执行,那么说来从数据库得到的用户名密码皆为空(想想有时暴库失败是不是看到空空的框架,因为数据都是空嘛),哈哈,这样我们就绕过验证了! 
知道怎么做了吧,把登陆页面保存到本地,修改提交的url,把最后一个/改成%5c,用户名密码用空格(有的程序会检查用户名密码是否为空,空格会被程序过滤),提交,就ok了。 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1417.html