最新消息:

备份文件在特定环境下(apache)可被任意下载(利用windows短文件名)

Apache admin 2704浏览 0评论

Windows下采用了短文件名机制,如

C:\wooyun12312394944545.txt

可采用

C:\wooyun~1.txt

访问

生成一个备份文件,文件名是这样的

http://127.0.0.1/admin/databack/sql/metinfo_met_20140202_ixzlfo_1.zip

所以在Windows系统下,可以这样访问来下载备份文件

http://127.0.0.1/admin/databack/sql/metinf~1.zip

虽然服务器很少用Windows,但存在一定隐患。

漏洞证明:

201405032000349274

 

修复方案:

生成类似这样的备份

http://127.0.0.1/admin/databack/sql/8f60c8102d29fcd525162d02eed4566b_metinfo.zip

 

ps:iis下不允许使用短文件来访问资源,而apache支持短文件名来访问资源,因此上面介绍的任意文件下载只能适应于windows系统下的apache搭建的网站中(ps:tomcat也不支持使用短文件名来访问资源)。IIS中虽然不能利用短文件名来访问资源,但是存在IIS短文件泄露漏洞,可以利用短文件名来猜测网站目录下的文件和目录名。

详情参考:http://www.acunetix.com/blog/web-security-zone/articles/windows-short-8-3-filenames-web-security-problem/

——————————————————————————————————————————

短文件名的命名规则

1)符合DOS短文件名规则的Windows下的长文件名不变。

2)长文件名中的空格,在短文件名中被删除。

3)删除空格后的长文件名,若长度大于8个字符,则取前6个字符,后两个字符以”~#”代替,其中”#”为数字,数字根据前六个字符相同的文件名的个数顺延。若个数超过10个则取前5个字符,后三个字符以”~##”代替,其中”##”为两位数字,若个数大于100也依此规则替换。
4)对使用多个”.”隔开的长文件名,取最左端一段转换为短文件名,取最右一段前三个字符为扩展名。

20140504102928

ps:根据第3条规则可以看出短文件前面不一定是6个字符(一般w为6个字符)。当一个目录中有多个前6个字符相同的文件时,则短文件以~#的方式区分。此外,还要注意第4条规则,文件短文件名的扩展名是最后一个.的右边一段的前三个字符。当然,如果目录中也有.则短文件名也有扩展名,如curl-7.17.1-win32-ssl目录,目录名中出现了.,所以该目录的短文件名的扩展名为最后一个“.“的右边的前三个字符,即1-W。

 

IIS短文件和文件夹泄漏漏洞

 

本文翻译自exploit-db.com,是苦逼阿德马童鞋经过数小时折腾而成,转载请著名出处,tks.E文太菜,如果有错误之处请各位大大多多指正.

IIS是有微软使用微软windows功能扩展模块创建的一套web服务器应用程序,是世界上第三个最流行的服务器。

漏洞描述:

漏洞研究小组发现了一个微软IIS的漏洞,攻击者可以利用一个包含”~”的get请求,来让服务器上的文件和文件夹被泄漏、

影响版本:

IIS 1.0, Windows NT 3.51

IIS 2.0, Windows NT 4.0

IIS 3.0, Windows NT 4.0 Service Pack 2

IIS 4.0, Windows NT 4.0 Option Pack

IIS 5.0, Windows 2000

IIS 5.1, Windows XP Professional and Windows XP Media Center Edition

IIS 6.0, Windows Server 2003 and Windows XP Professional x64 Edition

IIS 7.0, Windows Server 2008 and Windows Vista

IIS 7.5, Windows 7 (远程开启了错误或者没有web.config配置文件的情况下)

IIS 7.5, Windows 2008 (经典托管管道模式)

漏洞分析与利用:

如果网站是运行在IIS服务器上,可以通过”~”来发现一些文件和文件夹,攻击者可以发现重要的文件或者文件夹,如果这些文件或者文件夹是正规的可见文件.

关于此漏洞的深入分析可以参考以下连接中的文章:

http://soroush.secproject.com/blog/2012/06/microsoft-iis-tilde-character-vulnerabilityfeature-short-filefolder-name-disclosure/

漏洞详细说明:

一直在寻找一种方法,如果我可以使用通配符”*” 和 “?”发送一个请求到iis,我意识到当IIS接收到一个文件路径中包含”~”的请求时,它的反应是不同的.基于这个特点,我们可以根据http的响应区 分一个可用或者不可用的文件.在以下的表中,文件validxxx.xxx是存在于网站服务器根目录的.(备注:xxx.xxx是指不确定,还需要继续猜 解判断).下图主要是不同版本的IIS返回根据请求的返回错误来判断是否存在某个文件.

iis-short-file-disclosure1

举例说明如果一个IIS6网站http://www.xxx.com的短文件猜解方法

请求 http://www.xxx.com/a*~1*/.aspx 返回404,就说明存在a开头的一个axxx.xxx的文件.(其中xxx.xxx还需要进一步确定判断是什么字母,什么后缀).

请求http://www.xxx.com/a*~1*/.aspx 返回400,说明不存在a开头的一个axxx.xxx的文件.(其中xxx.xxx还需要进一步确定判断是什么字母,什么后缀).

IIS5.X的判断方法如下:

请求 /a*~1* 返回404 说明存在a开头的一个文件。

请求/a*~1*  返回400 说明不存在a开头的一个文件.

IIS7.x.net 2 no error handing判断方法如上图,各位仔细看.

 

下面附上一个IIS6猜解文件的全过程。

测试地址:http://sdl.me/AcSecret.html acsecret.html是存在于服务器上的.猜解过程如下图:

iis-short-file-disclosure2

附上详细的poc和漏洞利用说明文件:

PoC: http://www.exploit-db.com/sploits/19525.zip

Paper: http://www.exploit-db.com/download_pdf/19527

漏洞修复方案:

使用微软或者安全厂商提供的解决方案

使用配置好的Web应用防护系统(拒绝丢弃掉包含”~”线的Web请求)可能会起到对此漏洞进行防范的作用.

漏洞发现者:

Soroush Dalili (@irsdl)

Ali Abbasnejad

漏洞参考:

http://support.microsoft.com/kb/142982/en-us

http://soroush.secproject.com/blog/2010/07/iis5-1-directory-authentication-bypass-by-using-i30index_allocation/

漏洞披露相关细节:

2010-08-01 – 发现漏洞

2010-08-03 – 卖方知情

2010-12-01 – 销售商第一反应

2011-01-04 – 第二卖方响应(下一版本修复)

2012年6月29日 – 公开披露

站长评论:

其实这是个很鸡肋的“漏洞”……

首先,如果文件名符合8.3规范的文件(文件名主体部分小于等于8个字节、扩展名部分小于等于3个字节),则根本没有短文件名。

其次,汉字和特殊符号等字符的猜解,也是很蛋疼的问题……

最后,即使猜出来了,也只有前六位,只能靠运气碰碰看了……

不过,它还是有不小的用处,也算是很另类的一个“漏洞”吧……

(提示:如果目标站自定义了 400、404 错误页面,那么该扫描器是无法判断的……)

可以参考下表:

2012/07/04  20:46    <DIR>    !@#!@#~1.TXT    !@#!@#!@#.txt
2012/07/04  20:46    <DIR>                    !@#!@#.txt
2012/07/04  20:44    <DIR>    012345~1        0123456789
2012/07/04  20:44    <DIR>                    1
2012/07/04  20:44    <DIR>                    123
2012/07/04  20:44    <DIR>                    123456
2012/07/04  20:44    <DIR>                    1234567
2012/07/04  20:44    <DIR>                    12345678
2012/07/04  20:44    <DIR>    123456~1        123456789
2012/07/04  20:46    <DIR>                    啊.txt
2012/07/04  20:46    <DIR>    啊啊啊~1.TXT    啊啊啊啊啊啊啊啊啊.txt
2012/07/04  20:43    29       012345~1.TXT    0123456789.txt
2012/07/04  20:43    29                       1.txt
2012/07/04  20:43    29                       123.txt
2012/07/04  20:43    29                       123456.txt
2012/07/04  20:43    29                       1234567.txt
2012/07/04  20:43    29                       12345678.txt
2012/07/04  20:43    29       123456~1.TXT    123456789.txt

转自:http://lcx.cc/?i=2643

相关资料:

关于8.3格式短文件名规范、DOS时代的8.3格式文件名规范

相关内容:

IIS短文件和文件夹泄漏漏洞

Windows short (8.3) filenames – a security nightmare?

Windows short filenames “漏洞”、利用 Windows 短文件名猜文件

 

转载请注明:jinglingshu的博客 » 备份文件在特定环境下(apache)可被任意下载(利用windows短文件名)


Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in /usr/share/nginx/html/wp-content/themes/d8/comments.php on line 17
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 可以在cmd下通过dir /X命令来查看目录下文件和目录的短文件名
    admin6年前 (2014-05-04)回复