1.2 文件上传之解析漏洞

浅谈文件解析及上传漏洞



文件解析漏洞

解析漏洞主要是一些特殊文件被iis、Apache、Nginx等服务在某种情况下解释成脚本文件格式并得以执行而产生的漏洞。

iis 5.x/6.0解析漏洞

iis6.0解析漏洞主要有以下三种:

??

1. 目录解析漏洞 /xx.asp/xx.jpg

??在网站下创建文件夹名字为.asp、.asa的文件夹,其目录内的任何扩展名的文件都被iis当做asp文件来解析         并执行。因此只要攻击者可以通过该漏洞直接上传图片马,并且可以不需要改后缀名!

2. 文件解析 xx.asp;.jpg

??在iis6.0下,分号后面的不被解析,所以xx.asp;.jpg被解析为asp脚本得以执行。

3. 文件类型解析 asa/cer/cdx

iis6.0 默认的可执行文件除了asp还包含这三种asa、cer、cdx。

Apache解析漏洞

Apache对文件的解析主要是从右到左开始判断并进行解析,如果判断为不能解析的类型,则继续向左进行解析,如xx.php.wer.xxxxx将被解析为PHP类型。

IIS 7.0/ Nginx <8.03畸形解析漏洞

在默认Fast-CGI开启状况下上传名字为xx.jpg,内容为:

<?PHP fputs(fopen(‘shell.php‘,‘w‘),‘<?php eval($_POST[cmd])?>‘);?>

然后访问xx.jpg/.php,在这个目录下就会生成一句话木马shell.php。

Nginx<8.03空字节代码执行漏洞

nginx如下版本:0.5., 0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37在使用PHP-FastCGI执行php的时候,URL里面在遇到%00空字节时与FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码。

??另一种Nginx文件漏洞是从左到右进行解析,既可绕过对后缀名的限制,又可上传木马文件,因此可以上传XXX.jpg.php(可能是运气,也可能是代码本身问题,但在其他都不能成功的条件下可以试试)。如下:

Content-Disposition: form-data; name="userfiles"; filename="XXX.jpg.php"

htaccess文件解析

如果Apache中.htaccess可被执行并可被上传,那么可以尝试在.htaccess中写入:

<FilesMatch "shell.jpg"> SetHandler application/x-httpd-php </FilesMatch>

然后再上传shell.jpg的木马,这样shell.jpg就可被解析为PHP文件了。

操作系统解析

??由于windows会将文件的后缀中的空格以及点进行过滤,如果遇到是黑名单校验的,如限制不允许上传PHP文件,而系统又是windows系统,那么我们可以上传xx.php ,或者xx.php.,通过这种方式就可以绕过黑名单检验的文件上传!

文件上传漏洞

文件头欺骗漏洞

在一句话木马前面加入GIF89a,然后将木马保存为图片格式,可以欺骗简单的waf。

filepath漏洞

filepath漏洞主要用来突破服务器自动命名规则,主要有以下两种利用方式:

1、改变文件上传后路径(filepath),可以结合目录解析漏洞,路径/x.asp/

??                 2、直接改变文件名称(都是在filepath下进行修改),路径/x.asp;.

%00截断

%00截断的两种利用方式:

??

1、更改filename,xx.php .jpg,在burpsuit中将空格对应的hex 20改为00

??              2、更改filename,xx.php%00.jpg,在burpsuit中将%00进行右键转换-url-urldecoder

filetype漏洞

filetype漏洞主要是针对content-type字段,主要有两种利用方式:

??              1、先上传一个图片,然后将content-type:images/jpeg改为content-type:text/asp,然后对                                 

                      filename进行00截断,将图片内容替换为一句话木马。

                     2、直接使用burp抓包,得到post上传数据后,将Content-Type: text/plain改成 Content- Type: image/gif。

iconv函数限制上传

??如果某天你上传文件发现,不敢你上传什么文件,上传后的文件都会自动添加一个.jpg的后缀,那么我们可以怀疑是否是使用iconv这个函数进行了上传的限制,此时我们可以使用类似00截断的方法,但是这里不是00截断,二是80-EF截断,也就是说我们可以修改HEX为80到EF中的某一个来进行截断,如果真是使用这个函数的话,那么恭喜你上传任意文件成功!如上传一个xx.php ,然后截断抓包将后面的空格对应的十六进制改为80到EF中的任意一个!

双文件上传

再一个文件上传的地方,右键审查元素,首先修改action为完整路径,然后复制粘贴上传浏览文件(<input ......),这样就会出现两个上传框,第一个上传正常文件,第二个选择一句话木马,然后提交。!参考链接

下面是一个上传地址:

右键—查看源代码,修改2处代码:

修改后:

保存为1.html

第一个上传选择正常的jpg图片,第2个选择我们的马,

这里asp过滤了,所以我选择cdx

成功突破,

右键—查看源代码

菜刀连接:

表单提交按钮

我们有时扫描发现上传路径,可是只有一个浏览文件,却没有提交按钮,此时我们就需要写入提交按钮。

??写入表单:

??F12审查元素,在选择文件表单下面添加提交按钮代码。

<input type="submit" value="提交" name="xx">

原文地址:https://www.cnblogs.com/bmjoker/p/8970017.html

时间: 2024-10-01 21:34:04

1.2 文件上传之解析漏洞的相关文章

Excel文件上传,解析,下载(一 文件上传,使用MultipartFile来实现)

文件上传我使用的是jquery的一个插件"ajaxfileupload.js",使用方式详见下面的一种方式,使用file类型的input,同时需要给button绑定事件,这边使用的"ajaxfileupload.js"当中定义的ajax请求,到后台. <div id="fileupload"> <input type="file" id="file" name="file&quo

poi excel文件上传并解析xls文件

1.jsp页面 <form action="hw/pe_xls_upload" method="post" enctype="multipart/form-data" > <table> <tr> <td>导入硬件序列号/密码Excel文件:</td> <td><input name="hwFile" type="file"/&g

Webwork 学习之路(七)文件上传下载

Web上传和下载应该是很普遍的一个需求,无论是小型网站还是大并发访问的交易网站.WebWork 当然也提供了很友好的拦截器来实现对文件的上传,让我们可以专注与业务逻辑的设计和实现,在实现上传和下载时顺便关注了下框架上传下载的实现,在本篇博文中总结记录如下. 1. 包装 Request 请求 每次客户端请求 Action 时,都会调用 WebWork 调度类 ServletDispatcher.service()方法. 具体过程请参照: http://www.cnblogs.com/java-cl

Strut2 和Spring MVC 文件上传对比

在Java领域中,有两个常用的文件上传项目:一个是Apache组织Jakarta的Common-FileUpload组件 (http://commons.apache.org/proper/commons-fileupload/),另一个是Oreilly组织的COS框架的 (http://www.servlets.com/cos). 1.Struts2的文件上传 Struts2本身并没提供上传的组件,我们可以通过调用上传框架来实现文件的上传,struts2默认是jakarta作为其文件上传的解析

SpringMVC学习记录(四)--文件上传

学习一个框架少不了学习文件上传 在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的,这可以方便我们实现自己的文件上传.但如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明.这样之后,客户端每次进行请求的时候,springMVC都会检查request里面是否包含多媒体信息,如果包含了就会使用Multi

文件上传至服务器

使用文件上传至服务器需要导入两包commons-fileupload-1.2.2.jar与commons-io-2.4.jar 本文的servlet使用的是 servlet3.0注解配置,   不用写web.xml 文件了 建立文件时使用javaEE6.0 支持servlet3.0 value的值就是访问路径 urlPatterns的值也是访问路径  例如 @WebServlet(name="DemoServlet3",value="/demoServlet3")

springMVC3学习(十二)--文件上传优化CommonsMultipartResolver

基于上一篇文件上传发现效率很慢,我们应该对它进行优化  使用springMVC对文件上传的解析器 来处理文件上传的时候需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明 这样客户端请求的时候 springMVC会检查request里面是否包含多媒体信息 如果包含了就会使用MultipartResolver进行解析, springMVC会使用一个支持文件  处理的MultipartHttpServletRequest来包

反射型XSS+文件上传+CSRF&mdash;DVWA

在学习的过程中,想到将几种漏洞进行组合练习,记录下学习过程.大佬请绕过!谢谢!! 测试环境:DVWA,安装方法参考上一篇:https://www.cnblogs.com/aq-ry/p/9220584.html 前期知识:了解反射型XSS.文件上传.CSRF漏洞原理及利用方法. 一.反射型XSS; 查看源码文件:WWW\DVWA\vulnerabilities\xss_r\source\low.php 未做任何过滤,构造如下HTML代码,分别为两张图片,诱惑用户去点击,形成XSS攻击: <!DO

Java使用Commons-FileUpload组件实现文件上传最佳方案

学习的目标 使用commons-fileupload实现文件上传 使用commons-fileupload封装文件上传工具类 什么是commons-fileupload? The CommonsFileUploadpackage makes it easy to add robust, high-performance, file upload capability to your servlets and web applications. FileUpload parses HTTP req