文件上传漏洞的过滤绕过

文件上传漏洞的过滤绕过

这里总结一下文件上传漏洞的各种过滤机制的绕过。我找到的实验环境是upload-labs。

下载地址是GitHub – Tj1ngwe1/upload-labs: 一个帮你总结所有类型的上传漏洞的靶场

界面还是很美观的如图1-1,总共19个关卡。

文件上传漏洞的过滤绕过

图1-1

这里说一下我环境配置过程中遇到的一个小问题,就是网站的根地址设置。如图1-2

文件上传漏洞的过滤绕过

图1-2

记得把config.php文件中的$site_root改成自己的目录,不然这个美丽的界面是加载不出来的,这个是我自己更改过后的模样。另外如果文件执行时报错说缺少什么文件可能是你下载过程中遗漏了某些文件,可以重新下载一遍。(为什么要提一句这个?因为我经历过)

进入正题,其实文件上传早就学过的只是这次写个博客总结一下吧。

一、客户端过滤(js本地过滤)

(1)关闭浏览器执行js的功能,经过验证切实有效。火狐浏览器为例子,修改设置以后记得刷新页面以后才会有效。配置界面如图2-1

文件上传漏洞的过滤绕过

如图2-1

另外在某些禁止复制内容的网站上关闭js就可以实现内容复制了。

 (2)burp抓包修改后缀名

如图2-2所示,把php文件的后缀名修改成合服验证机制的后缀名,然后通过burp抓包修改后缀名,这样就可以实现绕过。

文件上传漏洞的过滤绕过

图2-2

二、MIME类型检测绕过

如图3-1,上传一个php文件但在burp中将选中字段content-type的值修改为image/jpeg

文件上传漏洞的过滤绕过

 图3-1

 如果不知道文件类型对应的特征值可以把文件通过相同方式上传查看content-type的值

三、黑名单绕过

(1)简单的黑名单绕过,比如通过区分大小写;

(2)在文件后缀加上空格字符,在windows环境下加入的这些字符会被自动过滤掉,但是在Linux和unix上不支持;

(3)空字符截断如%00,ox00;char(0)

(4)IIS默认解析解析.asp|.cdx|.asa等文件,当过滤中不包含这类文件时候可以绕过黑名单执行代码。

(5)也可以尝试修改文件后缀名或者利用服务器由于管理员的不合理配置造成的漏洞绕过上传过滤,但是修改文件后缀以后想要文件能正常按照执行则需要一些特定的配置。比如要解析php5文件后缀的文件为php文件执行需要配置httpp.conf中有AddType application/x-httpd-php .php .phtml .phps .php5 .pht这条语句。这条语句的意义就是让phtml、phps、php5、pht这些文件当作php文件解析。主动修改配置可以通过.htaccess文件

      简单介绍.htaccess:在文件特定目录下作用于该目录和子目录中可以配置文件目录下文件以何种格式解析的文件。利用AddType 指令将特定扩展名文件映射为php文件类型。如指定php5为php文件解析执行。

(6)在没有禁止.htaccess文件的情况下,可以上传.htaccess文件来修改apache的配置

比如将.htaccess文件内容书写为下:

<FilesMatch "muma.jpg(即将上传的文件名)">

  SetHandler application/x-httpd-php

</FilesMatch>

这段代码的意义就是将muma.jpg这个文件当作php文件解析。这样就绕过了黑名单检测、、、、

四、白名单绕过

(1)利用iis中间件解析漏洞

a.iis中间件默认能够解析.asp .cdx .asa .cer文件,所以利用这个特性来绕过白名单

b.在iis5.x到6.x版本中,在网站下建立文件夹的名字为 .asp、.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。

c.在IIS6.0下,分号后面的不被解析,如1.asp;jj那么服务器只会任务这是隔asp文件

(2)apache解析漏洞

1.apache解析文件名是从右向左解析的,如muma.php.aa.bb服务器先解析bb这个后缀,无法识别再解析aa这个后缀,一次类推一直到解析到php识别出是php文件所以正常解析。

2.另外可以通过修改apache配置来实现绕过比如利用AddType application这条配置来实现一些文件后缀名被当作指定文件解析,例如可以指定.jpg文件被当作php文件执行。

3.制作图片木马,例如使用copy命令。

文件上传漏洞的过滤绕过

 将muma.php写入muma.jpg 生成一个新文件mumaP.jpg “/”后的b和a表示的文件类型,b是二进制文件,a是ascii码文件。

文件上传漏洞的过滤绕过

 用记事本打开生成的文件可以发现代码。

随后触发该代码需要在源文件中加入

include '文件路径';

文件上传漏洞的过滤绕过

前面的乱码是图片文件的内容,输出的phpinfho()是加入的代码显示出来的

文件上传漏洞要想要成功的利用上传的文件实现攻击目的,攻击者需要知道文件上传的路径和上传以后的文件名。

                       

点击阅读全文

上一篇 2023年 6月 6日 am11:02
下一篇 2023年 6月 6日 am11:03