%5c暴库漏洞

今天在黑基又看到了关于%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=5http://www.example.com/abc/123.asp?id=5 是一样的。

http://www.example.com/abc%5c123.asp?id=5 经过一次解码后变成http://www.example.com/abc/123.asp?id=5 这里是不会出错的。
而 经过 IIS 二次解码后就变成http://www.example.com/abc%5c123.asp?id=5, 如果数据库连接文件用的相对路径的话。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吧。^_^

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值