文本文件上传漏洞[任意.绕过.解析]

首先我们来普及一下几个知识点,嘿嘿!!

  • 什么是文件上传漏洞?

文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

  • webshell

百度百科:

webshell就是以aspphp、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。
 
  • 危害:
文件上传(File Upload)是大部分web应用都具备的功能,如:用户上传的附件、修改头像、分享图片/视频等正常的文件一般是文档、图片、视频等,web应用收集之后放入后台存储,需要的时候调用出来返回如果恶意的文件如PHP、ASP等执行文件绕过web应用,并顺利执行,则相当于黑客直接拿到webshell一旦黑客拿到webshell,则可以拿到web应用的数据,删除web文件,本地提权,进一步拿下整个服务器甚至内网SQL注入攻击的对象是数据库服务,文件上传漏洞主要攻击web服务,实际渗透两种相结合,达到对目标的深度控制
 
  • 任意文件上传

直接上传木马 ok

  • 绕过验证机制文件上传

绕过方法:
1.抓包改包(MIME修改绕过)

2.文件后缀名大小写绕过

3.文件内容绕过

4.JavaScript绕过

  • 解析漏洞文件上传

1.Nginx解析漏洞
我们有一张图片:http://ap.test.com:8080/1.jpg
而当我们正常访问,nginx会把这个当作非脚本语言直接读取传送回客户端(也就是浏览器),但是存在解析漏洞的nginx会把如下连接解析并且执行~:
1. http://ap.test.com:8080/1.jpg/1.php
2. http://ap.test.com:8080/1.jpg%00.php

漏洞影响范围:nginx 0.7.65以下(0.5.*, 0.6.*, 0.7.* )全版本系列和0.8.37(0.8.*)以下8系列受影响。

 

2.IIS解析漏洞
① 版本:iis5.*/6.0
漏洞信息:
1.目录解析
网站目录有一个名字为1.asp(其他的asp扩展名也可以),目录里有一个1.jpg 内容为asp代码。
访问:http://ap.test.com/1.asp/1.jpg 会被当成正常asp文件执行

2.文件名解析
在IIS6.0下,分号后面的不被解析,也就是说mst.asp;.jpg会被服务器看成是mst.asp,还有IIS6.0 默认的可执行文件除了asp还包含这三种:/.asa/.cer/.cdx
② 版本:iis7.0/7.5
漏洞信息:
畸形解析漏洞,上传一个名字为mst.jpg,内容为:一句话代码的文件,然后访问mst.jpg/1.php,就可以连接 。同Nginx解析1

 

3.Apache解析漏洞:
Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断。
比如 mst.php.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把mst.php.owf.rar解析成php。
如何判断是不是合法的后缀就是这个漏洞的利用关键
测试时可以尝试上传一个mst.php.rara.jpg.png…(把你知道的常见后缀都写上…)去测试是否是合法后缀

 

4.其他解析漏洞:
在windows环境下,xx.jpg[空格] 或xx.jpg. 这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点,黑客可以通过抓包,在文件名后加一个空格或者点绕过黑名单.若上传成功,空格和点都会被windows自动消除,这样也可以getshell。如果在Apache中.htaccess可被执行,且可被上传,那可以尝试在.htaccess中写入:
<FilesMatch "mst.jpg"> SetHandler application/x-httpd-php
</FilesMatch>
然后再上传mst.jpg的木马, 这样mst.jpg就可解析为php文件

文件上传黑名单旁路技术

Windows IIS服务器黑名单文件上载旁路:

1.在黑名单扩展名后上传带有分号的文件,例如: shell.asp;.jpg
2.上传扩展名为.asp的目录,然后使用允许的文件扩展名命名目录中的脚本,例如: folder.asp\file.txt
3.通过IIS提供PHP时< > and .转换回来? * .
4.使用可替换文件的字符,示例>>可以替换web.config
5.尝试在字符后使用空格或点,例如: foo.asp..... .. . . .
6.file.asax:.jpg
7.通过在文件名中上载带有禁用字符的文件来尝试在错误消息中披露信息,例如: | %< * ? "

Apache Windows黑名单旁路:

1.Windows 8.3功能允许短名称替换现有文件,例如:web.config可以替换为web~config.con或.htaccess可以替换为HTACCE~1
2.尝试上传。文件,如果上传函数root是/www/uploads/它将在上面的目录中创建一个名为uploads的文件。

 

一般黑名单旁路:

1.确定要过滤的字符 - 使用burp intruder评估带有元字符列表的插入点
2.确保您的列表中包含常见的文件类型的扩展名,例如.php5,.php3,.phtml
3.测试保护机制中的缺陷,如果剥离文件名可能会被滥用吗?示例:shell.p.phpp如果应用程序剥离.php,它可以将扩展名重命名为.php
4.%00在文件名中的不同位置尝试一个空字节,例如:shell.php%00.jpg,shell.php%0delete0.jpg- 观察应用程序的响应方式
5.双重扩展:如果应用程序正在剥离或重命名扩展名 - 如果你给它两个扩展名怎么办?示例:shell.php.php或4shell.txt.jpg.png.asp
6.尝试使用长文件名,例如supermassivelongfileeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeename.php应用与长文件名一起使用的其他过滤器旁路技术
7.试试吧test.asp\,test.asp.\
8.你可以上传flash XSS有效载荷,命名为.jpg
9.尝试使用以前的技术,但请使用PDF或Silverlight
10.同样但尝试滥用crossdomain.xml或clientaccesspolicy.xml文件
11.尝试使用编码绕过黑名单过滤器,尝试URL,HTML,Unicode和双重编码
12.结合所有上述旁路技术
13.尝试使用替代HTTP Verb,尝试使用POST而不是PUT或GET(反之亦然),您可以使用Burp Intruder和HTTP Verbs有效负载列表枚举选项
14.此外,确保所有输入点都针对各种输入验证失败进行模糊测试,例如XSS,命令注入,XPath,SQLi,LDAPi,SSJI

 


绕过文件上传白名单

1.枚举白名单并测试任何可能被滥用的允许文件扩展名
2.正在验证测试文件内容
3.测试扩展重命名技术shell.php.png是不可能的

 

 
posted @ 2019-08-04 21:23  五木徒羚  阅读(3086)  评论(0编辑  收藏  举报