文件上传绕过

  对于整个HTTP请求包来说,所有内容都是用户可控的,只是请求包中的几个点有可能是后台服务器的检测重点:

1 Content-Length  上传内容大小
2 MAX_FILE_SIZE   上传内容的最大长度
3 filename      上传文件名
4 Content-Type    上传文件类型
5 请求包中的乱码字段  上传文件的内容
6 有可能存在请求包中的可控点还有上传路径

一、客户端绕过

  利用抓包工具(如BURP),抓包改包。将原上传正常格式的文件变为 php、asp等文件

  如果是JavaScript验证,可以使用 IE 禁用 js(火狐的noscript插件也行)。

二、服务端绕过

  BURP抓包,修改相应值,修改文件名位置 filename ,文件类型位置 Content-Type

  1、文件类型

    控制文件类型的是  Content-Type  ,我们需要将文件类型改为允许上传的文件类型。

  2、文件头

    找到请求包中的文件内容位置,在一句话木马内容的前面加上一些文件头信息

  3、文件后缀名

    对于黑名单的绕过,如php、asp、jsp,可以先试试 在文件名后添加空格 或 大小写的组合。

 

另外能被解析的文件扩展名列表:
jsp jspx jspf
asp asa cer aspx
php php2 php3 php4 ph5 phtml
exe exee

   4、过滤绕过

    如果遇到,上传一个php被自动改成其他类型的文件,那么可能是php被过滤了,那么这个时候,可以尝试改后缀名为:pphphp。原理:过滤了  第一个php,分开的p和结尾的hp就组合成为 php

  5、文件重写

    直接传个 带小马的gif ,再传个 htaccess 重写解析规则

 

.htaccess 文件内容:
<FilesMatch "上传的文件名">
    SetHandler application/x-httpd-php
</FilesMatch>

 

posted @ 2019-03-04 23:57  MoonTwilight  阅读(562)  评论(0编辑  收藏  举报