首页 园地图库文章列表留言下载
现在位置:首页 -> 网络科技 -> 网络攻防
关于%5c暴库
作者:未知 来源:网络 更新日期:2005-11-22 阅读次数
文字 〖 自动滚屏(右键暂停)


今天在黑基又看到了关于%5c暴库的文章。呵呵,这招真的很管用,大概10个网站里会有一个会暴库吧。。

关于这个漏洞。绿盟有相关的资料。




Microsoft IIS CGI文件名错误解码漏洞

发布日期:2001-05-15

CVE CAN ID:CVE-2001-0333

受影响的软件及系统:
====================
- Microsoft IIS 4.0 
- Microsoft IIS 5.0

未受影响的软件及系统:
======================
- Windows IIS 4.0 (sp6/sp6a 没有安装其他新的hotfix)

综述:
======
NSFOCUS安全小组发现微软IIS 4.0/5.0在处理CGI程序文件名时存在一个安全漏洞,由于错误地对文件名进行了两次解码,攻击者可能利用这个漏洞执行任意系统命令。

分析:
======
IIS在加载可执行CGI程序时,会进行两次解码。第一次解码是对CGI文件名进行http解码,然后判断此文件名是否为可执行文件,例如检查后缀名是否为".exe"或".com"等等。在文件名检查通过之后,IIS会再进行第二次解码。正常情况下,应该只对该CGI的参数进行解码,然而,IIS错误地将已经解码过的CGI文件名和CGI参数一起进行解码。这样,CGI文件名就被错误地解码了两次。 

通过精心构造CGI文件名,攻击者可以绕过IIS对文件名所作的安全检查,例如对"../"或"./"的检查,在某些条件下,攻击者可以执行任意系统命令。 

例如,对于\’\\\’这个字符,正常编码后是%5c。这三个字符对应的编码为: 
\’%\’ = %25 
\’5\’ = %35 
\’c\’ = %63 

如果要对这三个字符再做一次编码,就可以有多种形式,例如: 
%255c 
%%35c 
%%35%63 
%25%35%63 
... 

因此,"..\\"就可以表示成"..%255c"或"..%%35c"等等形式。 

在经过第一次解码之后,变成"..%5c"。IIS会认为这是一个正常的字符串,不会违反安全规则检查。而在第二次被解码之后,就会变成"..\\"。因此攻击者就可以使用"..\\"来进行目录遍历,执行web目录之外的任意程序。

测试方法:
==========
例如,如果TARGET存在一个虚拟可执行目录(scripts),并且它与windows系统在同一驱动器上。那么提交类似下列请求: 

http://target/scripts/..%5c..%5cwinnt/system32/cmd.exe?/c+dir+c:\\ 

就会列出C:\\的根目录。 

当然,对于\’/\’或者\’.\’做变换同样可以达到上面的效果。 
例如:"..%252f", ".%252e/"... 

注意:攻击者只能以IUSER_machinename用户的权限执行命令。

解决方法:
==========
1、如果不需要可执行的CGI,可以删除可执行虚拟目录,例如 /scripts等等。 
2、如果确实需要可执行的虚拟目录,建议将可执行虚拟目录单独放在一个分区 
3、将所有可被攻击者利用的命令行工具移到另外一个目录中并禁止GUEST组访问。

厂商状态:
==========
2001.3.27  我们将这个问题通报给了微软公司。 
2001.4.01  微软告知重现了这个问题 
2001.4.16  微软提供了补丁程序供测试,测试发现此问题已被解决 
2001.4.23  微软请求我们延迟2个星期发布公告以等待更完善的测试 
2001.4.30  微软告知我们还须再推迟一个星期发布 
2001.5.14  微软已就此发布了一个安全公告(MS01-026)以及相应补丁 

您可以在下列地址看到微软安全公告的详细内容: 

http://www.microsoft.com/technet/security/bulletin/ms01-026.asp 

补丁程序可以在下列地址下载: 

. Microsoft IIS 4.0: 
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29787 

. Microsoft IIS 5.0: 
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29764

呵呵。虽然这个我们这个漏洞呵暴库关系不是很大, 但是明眼人还是看的出相关的地方,IIS 二次解码。大家知道在 url中 "\\" 和 "/"
是一样的,也就是说 http://www.example.com/abc/123.asp?id=5 mmkey.com;和 http://www.example.com/abcmmkey.com\\123.asp?id=5 是一样的。

而 http://www.example.com/abc%5c123.asp?id=5 mmkey.com;经过一次解码后变成 http://www.example.com/abcmmkey.com\\123.asp?id=5 这里是不会出错的。
而 经过 IIS 二次解码后就变成 http://www.example.com/abc%5c123.asp?id=5mmkey.com, 如果数据库连接文件用的相对路径的话。HOO, 找不到数据
库文件,当然就出错了。还很老实呢,连物理路径都出来了。大家看。



Microsoft JET Database Engine 错误 \’80004005\’ 

\’D:\\wwwroot\\hell\\wwwroot\\data\\abc.asp\’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 

/blog/conn.asp,行29 


这个是我暴 Oblog 暴出来的,这个月的黑防大家都有看吧。。(晕倒,早知道我也去投稿了。我发现的比他早多了,郁闷。)

很多人都在分析成功的条件,就象itbbs里的人讨论的一样。(itbbs最近我怎么上不去啊,知道告诉偶.)

sykkk 认为:

1,是数据库连接中没有加入容错代码 所以导致错误不能跳过而活生生的把数据文件连接暴出来

2, 对方的IIS没有关闭错误提示 只要关了错误提示就算你怎么暴也没有用 

3,不一定要2级目录 但是肯定的是一级目录是绝对不成功的 要是你成功了欢迎拿出来给大家分享 他文章说的自己够造个noexists/..%C的2级目录 个人认为应该是错误的 至少我没有成功过 有成功的欢迎留下网站测试 

4,还有就是 要成功一定要调用到数据库 不一定是5c1.asp?id=1 这种类别的 只要是提交或者检测数据的基本都可以 非常多的*采网站都是采用/XXX/CHECK.ASP来认证 找到认证位置 直接/XXX%5CCHECK。ASP同样可以达到 暴库的目的 

其实我们 XST的老大ToToDoDo说的必要条件他忘了,数据库要相对路径,绝对路径是暴不出来的。还有我补充一点 应该是 IIS 4.0 或者 IIS 5.0 ,IIS 6 应该是不行了。

关于二级目录,我同意sykkk的看法,有的人说一定是二级目录,呵呵,我可以告诉大家那是错误的。应该是最靠近的asp文件的那个 "/"改成
"%5c", 只有有调用数据库都有可能暴库。哈哈,还有当然对方要没有屏蔽错误信息,要不然你是肯定看不到di

总结:%5c暴库成功条件

1. 对方服务器用的是 IIS 4.0 或 IIS 5.0, 并且没有屏蔽错误信息。


2. 是数据库连接中没有加入容错代码 所以导致错误不能跳过而活生生的把数据文件连接暴出来 (On Error Resume Next)

3.应该是Microsoft JET Database Engine 方式

4. 数据库文件调用用的是相对路径!!


不一定要求是二级目录。三级也是可以的(我有成功过), 二级目录反倒没成功,呵呵。还有构造二级目录,我是没成功过,嘿嘿,应该是错误的。:)


随便也告诉大家,aspx %5c 也有文章的,运用也很巧妙,想知道就知道google吧。^_^



个人见解,欢迎大家批评指正。

--------------------------------------------------------------------------------
 
--  作者:最爱是你
--  发布时间:2005-3-27 16:32:52

--  
关于%5c的暴库利用想已经不是什么新技术了,原因我只找到含糊的说法:\\的UNICODE是%5c当提交时,IIS无法正常解析,导致暴库。但我对http://www.hoky.orgmmkey.com测试成功后(现在已经补上)问过hoky.pro,得知%5c与IIS的设置是有关系的。而在默认设置下是可以暴库的。 
还有很多人说不成功,我要说的三点: 
1。一般的错误返回页面是本地IE提供的,所以我们先得关了本地的错误页面,具体在菜单项的‘工具->internet选项->高级->显示友好信息’。 
2。对方数据库要是Access型。 
3。%5c的暴库需要的是二级目录,一级目录无法成功。如: 
http://www.sometips.com%5c1.asp?id=1 不成功 
http://www.sometips.com/other%5c1.asp?id=1 成功 

好了,上面说的大家都知道,当是废话。在暴库这么好用的东西下,如果一个网站只有一级目录的话,难道就没有办法了吗? 
说到重点: 
其实一级目录我们也同样可以成功的,我们可以通过构造一个多级目录来达到暴库的目的。 
如下: 
http://www.target.com/noexists/..%5clist.asp?id=1 

这样大家就会有新的惊喜了,呵呵。 

补救方法也很简单: 
在conn.asp里 加入数据库文件的位置后面加上这句: 
On Error Resume Next 
就可以了。  
  
  




暴库专题

去年的时候曾经有一段时间研究过ie双解码,所以对暴库有一定的认识,前些天终于收到黑客的杂志,
里面看了一篇临的文章,下面我也谈谈个人对那篇文章的认识,这里要说的是,大家如果再深入点研
究下去,就会发现,暴库的利用不只是这么简单,还会有更多可以用的东东。 
暴库的方式有多种多样,我知道的就有3种以上,常见的暴的方法有:%5c类暴,conn.asp暴,ddos暴等等.
这篇文章我主要讲%5c和conn.asp暴.
可以说,这篇是对临国越南首相写的文章的补充.

1.%5c暴法
下面我们先用肉鸡来试一下
http://www.yianxin.com/e-market/bbs/select.asp
暴:
http://www.yianxin.com/e-market/bbs%5cselect.asp
返回信息如下:
microsoft jet database engine 错误 ’80004005’ 

’d:\www\yianxin.comgr7shg3l26\e-market\data\yianxinlzn.asp’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 

/e-market/bbs/conn.asp,行3

我们来看一下真实路径和暴出的路径
d:\www\yianxin.comgr7shg3l26\e-market\data\yianxinlzn.asp     暴出的路径
d:\www\yianxin.comgr7shg3l26\e-market\bbs\data\yianxinlzn.asp   真实的路径
对比后我们发现暴出来的少了一个bbs
这里我们还发现%5c就相当于一个休止符返回的路径就变成
绝对路径+%5c后面的内容
我们再来看一下对暴不出来的分析
肉鸡: http://www.guilin.com.cn/renrenbbs/body.asp?id=516mmkey.com
暴url: http://www.guilin.com.cn/renrenbbs%5cbody.asp?id=516mmkey.com
返回内容如图三所示

此主题相关图片如下:

肉鸡: http://www.jijiahao.com/guest/default.aspmmkey.com
暴url: http://www.jijiahao.com/guest%5cdefault.aspmmkey.com
返回内容如图四所示

此主题相关图片如下:

我们再来分析一下成功与失败的原因:
http://www.yianxin.com/e-market/bbs%5cselect.asp
会暴成功库,我们打开select.asp我们会发现里面
<!--#i nclude file="conn.asp"-->
<!--#i nclude file="pageset.asp"-->
<!--#i nclude file="lock.asp"-->
<!--#i nclude file="css.asp"-->
也就是说有调用到其它文件
所以当你用%5c时,返回路径也就变成了
绝对路径+%5c后面的select.asp,select.asp又调用到路径库data/renren.asp
所以返回的路径就变成了
绝对路径+路据库路径,而在绝对路径和路据库路径,我们知道有guest这个目录,
这个时候因为绝对路径+路据库路径不存在(绝对路径+guest+路据库路径才存在)
所以也就返回了,我们所看到的出错信息。
现在再来分析一下失败的原因:
我个人认为是因为iis双解码的原因,
例如,对于’\’这个字符,正常编码后是%5c。这三个字符对应的编码为:
’%’ = %25
’5’ = %35
’c’ = %63

如果要对这三个字符再做一次编码,就可以有多种形式,例如:
%255c
%%35c
%%35%63 
%25%35%63
...

因此,"..\"就可以表示成"..%255c"或"..%%35c"等等形式。

在经过第一次解码之后,变成"..%5c"。iis会认为这是一个正常的字符串,不会违反安全规则检查。而在第二次被解码之后,就会变成"..\"。因此攻击者就可以使用"..\"来进行目录遍历,执行web目录之外的任意程序。

详细的大家可以看下面的资料参考

我们再来分析图三和图四失败的原因就会发现,他可能解析成../,通过图的比较可以分析出来,
难道这时就暴不出来了吗,当然不是,这要我们精心构造。
下面还会分析到。

下面我们来纠正一下网上常见的错误观点。
1.不一定要asp?id=的才可以暴,只要有调用其它有文件就有可能暴
2.不一定是access,也可以是mssql,我就成功过,下面大总结的时候就会分析到只要是iis就有可能成功
3.不一定要调用到数据库,因为%5c的关键是调用,而不是一定是数据库.
4.理论上讲,根目录通过精心构造是可以暴的,但有些人说的通过..%5c的却一定暴不出来,因为返回是
取%5c后面的与前面的无关
5.并不是说多层目录就暴的成功率就高,%5c能否成功关键是看系统怎么解析,另外我个人觉得能否暴出
与程序无关,更多的与系统有关,不信大家去百度找同一板本的人人留言板,你就会发现有的可以暴
出来,有的却暴不了出来。
好了,上面是对%5c暴库的初步了解

2.conn.asp暴
conn.asp暴可以说,与系统无关,是因为目录的关系。
我用netbox架设同样可以暴,而%5c是iis解码错误,有那个漏洞的一定是windows系统.
同样,我们还是通过比较来说明问题
肉鸡:http://192.168.0.55/ren/mmkey.com
暴1 : http://192.168.0.55/ren/images/conn.aspmmkey.com
暴2 : http://192.168.0.55/ren/conn.aspmmkey.com
其中暴1里面的conn.asp是从暴2里面复制过去的
返回内容:
暴1:
microsoft jet database engine ’80004005’ 

’c:\documents and settings\xiaoqiu\桌面\wwwroot\ren\images\data\renren.asp’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

\wwwroot\ren\images\conn.asp, line 3

暴2:
全是白白。
再来分析为什么conn.asp可以暴出来
conn.asp代码如下:
<%
set conn=server.createobject("adodb.connection")
conn.open="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("data/renren.asp")
set rs=server.createobject("adodb.recordset")
function connclose
conn.close
set conn = nothing
end function
function errmsg(message)
session("err")=message
response.redirect"err.asp"
end function
%>
其中最重要的是
set conn=server.createobject("adodb.connection")
conn.open="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("data/renren.asp")
这两句,这两句也是能暴出的关键.
我们再来先看暴出的路径和真实路径的差别
c:\documents and settings\xiaoqiu\桌面\wwwroot\ren\images\data\renren.asp 暴出的路径
c:\documents and settings\xiaoqiu\桌面\wwwroot\ren\data\renren.asp     真实的路径
我们会发现多了一个images,这是因为,conn.asp的返回路径是
绝对路径+conn.asp前的+conn.asp连接的数据库路径
像上面的就等于绝对路径c:\documents and settings\xiaoqiu\桌面\wwwroot+conn.asp前面的ren/images+
data\renren.asp也就是数据库路径,合起来就是
c:\documents and settings\xiaoqiu\桌面\wwwroot\+ren\images\+data\renren.asp
不同连接语法返回路径不一定一样,但是上面的连接语句返回的却一定是绝对路径
下面我们再来验证一下我们的正确性,把下面的内容保存为任何一个经过asp.dll解析过扩展的文件,如
linzi.asp,linzi.cdx等等,代码内容如下:
<%
set conn=server.createobject("adodb.connection")
conn.open="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("data/renren.asp")
%>
这个时候你把他放在任何一个目录,只要不是ren目录里,也就是留言簿的根目录,都可以暴出绝对路径,
这个时候你可能会问,难道根目录就暴不出了吗?答案是可以暴出来。你把上面代码里的
data/renren.asp改成任何一个不存在的目录或文件,也同样可以暴出来,例如,我改成
data123/renren.asp,因为data123不存在,所以就暴了出来,返回内容如下

microsoft jet database engine ’80004005’ 

’c:\documents and settings\xiaoqiu\桌面\wwwroot\ren\data123\renren.asp’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 

\wwwroot\ren\2.asp, line 3
我们还可以发现,并没有少目录,只不过目录出错,经过一大堆的测试,我个人总结出conn.asp暴成功的
原因以及对网上一些错误观点的个人看法:
1.要暴不一定要调用到数据库,但是要暴库,一定要调到到数据库或与数据库有关的文件。
2.不一定conn.asp才可以暴,只要有调用其它文件,造成目录错误的都可以报,如动力的除了inc/conn.asp
外,放在inc里面的其它文件同样也可以暴。
3.总结conn.asp的暴原因是你返回的目录和真实的目录不一定,或者也可以说是不存在。

3.暴的简单利用:
1.下载数据库进后台找上传点,然后得到webshell
2.往数据库里面插入asp小马,详细的可以参考angel的文章《把mdb改成asp带来的灾难》
3.access跨库查询
如语句:
select count(*) from dv_admin in ’d:\www\data\dvbbs7.mdb’
4.注入时的利用,如mssql backup a shell
5.绕过后台验证,详细的可以见我收集的暴库文摘

好了,就这么些吧,上面可以说只是暴后攻击的冰山一角,当你再深入下去,你会发现还有更恐怖
的东西在后面,2k+sp4有人利用双解码成功了,这也只是一角。
还有这里要说一下的是,有的人说用asp.dll解析mdb用来防下载,事实上稍微不笨的人,就会发现这是
一种愚蠢的做法,当你用asp.dll解析mdb后,你把newmmm.asp改成newmm.mdb上传后,就相当于一个
newmm.asp,因为asp.dll解析过的扩展只要里面有asp语句就会被执行,这和cer,cdx等,一个道理.
我个人认为防下载的最好方法是往数据库里加入防下载表段<% zhenzhen520 <%,只要插入这个就可以
防下载了,懂点asp的人都知道,<% zhenzhen520 <%放到数据库里,一定会发生语法错误,因为没有%>
结束符,当然你可以说,可以注是,事实上,注是是不可能的事,除非你得到了shell,修改数据库,否
则你就别想了,因为就算让你加上了两个%>结束符,但是因为<%%>里面的东西不满足asp语法,也会发生
500错误。不信?要不你试试动网,动网的数据库就是这样。

4.防范:
1.最好的办法临在文章里也说过了,就是屏所有的出错。
2.加容错语句,不过要注意的是,你加了容错,只能是你加的那个文件暴不出来,但并不代表,其它文件
暴不出来。
3.把数据库在非相对路径下,例如:你本来的路据库路径是:c:\www\data\dvbbs.asp,这时你可以把数
据库改放在c:\里,这样就下载不到数据库。
好了,防的方法就说到这里了。因为我说的都是废话,大家都看过的.

5.%5c暴与conn.asp总结:
可以说%5c暴是因为调用文件出错,而conn.asp暴是因为返回的路径出错或不存在。

6.conn.asp与%5c的结合:
可以说如何构造是入侵时能不能暴出的关键。
现在我们假设,guest目录放在c:\www\下,而conn.asp放在c:\www\guest\conn.asp,直接调用
http://192.168.0.13/guest/conn.asp不会报错,因为返回路径是正确的,通过上面的,我们可以知道
conn.asp暴是因为返回路不存在。现在我们对比一下%5c和conn.asp的不同返回路径
1.%5c     : 绝对路径+%5c后面的内容
2.conn.asp : 绝对路径+conn.asp前面的相对路径+conn.asp调用的数据库路径
两者结合起来,假设http://192.168.1.13/guest%5ccoonn.aspmmkey.com
那么返回路径也就变成了
绝对路径+conn.asp,但实际在入侵之时,我们会发现有的时候并不是,这个时候大家别忘了双解码
好了,我只提出思路,实际的入侵方法,我想你可能已经想到。

上篇文章: 前列腺炎(Prostatitis)
下篇文章:七夕礼物
相关文章:
没有相关文章

版权所有:文摘园地;本站资料均由站长收集,如果有侵权,请立即来信留言告诉我们,以免损害您的权益,谢谢!
Copyright © 2004 文摘园地 http://wwww.mmkey.com All Rights Reserved Power by:HeadWind
粤ICP备05098767号