1.前端JS绕过上传

这类上传检测都会在前端进行校验,如果禁用js或修改js代或使用burp抓包修改即可绕过


2.MIME类型检测绕过

服务端MIME类型检测是通过检查http包的Content-Type字段中的值来判断上传文件是否合法的。这种检测也可以通过burp修改上传

修改为


3.上传其他后缀名的文件

php语言除了可以解析以php为后缀的文件,还可以解析php2、php3、php4、php5这些后缀的文件。


4.重写文件解析规则绕过。

上传先上传一个名为.htaccess文件,内容如下:

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

再上传一个一句话的jian.jpg,直接链接这个jian.jpg即可。因为这个文件已经被按照php进行解析


5.后缀名的大小写绕过

这类绕过是在于开发者队后缀名过滤不严,上传后缀名例如.Php或.pHp等来绕过


6.Apache文件解析漏洞

apache对文件的的解析是从后向前的,如果遇见不认识的后缀名就会跳过向前一个查看是否能够解析。
例如可以上传shell.php.xxx,可以绕过后缀名检测。

如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是 shell.php.jpg 也会以 php 来执行。

  • 解决方法:
    可以使用伪静态将.php.*都重定向到.php

7.iis6.0目录解析漏洞

以*.asp命名的文件夹里的文件都将会被当成ASP文件执行。
如果可以在上传的时候修改上传的路径,可以将文件上传到/1.asp/shell.jpg,所有1.asp文件夹下的文件都将会被解析为asp


8.iis6.0文件解析漏洞

服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。
所以可以构造为 shell.asp;.jpg


9.Nginx解析漏洞

首先上传一个图片马,例如上传一个 shell.jpg,然后访问 127.0.0.1/uploads/shell.jpg/shell.php就会被成功解析。

因为Nginx拿到URL shell.jpg/shell.php后,一看后缀是.php,便认为该文件是php文件,转交给php去处理。php一看L shell.jpg/shell.php不存在,便删去最后的/shell.php,又看/shell.jpg存在,便把/shell.jpg当成要执行的文件了。

新版本的php引入了“security.limit_extensions”,限制了可执行文件的后缀,默认只允许执行.php文件


10.Nginx 文件名逻辑漏洞(CVE-2013-4547)

我们上传一个 shell.jpg的图片马,然后用burp抓包修改文件名为 shell.jpg .php,然后将20 20改为20 00

在这里插入图片描述

我们请求 shell.jpg[0x20][0x00].php ,这个URI可以匹配上正则 \.php$,
可以进入这个Location块;但进入后,由于fastcgi在查找文件时被\0截断,Nginx却错误地认为
请求的文件是shell.jpg[0x20],就设置其为SCRIPT_FILENAME的值发送给fastcgi。
fastcgi根据SCRIPT_FILENAME的值进行解析,最后造成了解析漏洞。
所以,我们只需要上传一个空格结尾的文件,即可使PHP解析之。


11.使用 ::$DATA 加在后缀之后进行绕过(Windows特性)

例如上传抓包并修改文件名为 shell.php::$DATA

  • 上传到服务器的文件在Windows中会自动去掉::$DATA

因为php在window的时候如果文件名+::$DATA会把::\$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名


12.%00截断上传路径

在这里插入图片描述
然后直接访问 /upload/1.php即可

因为在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束,后面的东西都没截断


13.上传图片马,解释文件包含使用

将一句话插入到图片中上传 然后识别其他页面的文件包含执行这个马


14.利用长标记写法

有时候waf或在做ctf的时候会过滤上传文件的php头,所以可以使用长标记写法绕过
例如:

<script language="php">phpinfo();</script>

15.Apache HTTPD 换行解析漏洞(CVE-2017-15715)

其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

访问刚才上传的/1.php%0a,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞:


16.Apache SSI 远程命令执行漏洞

如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用上传

<!--#exec cmd="ls" -->

这样一个shell.shtml执行任意命令。


暂时想到这么多 后期还会继续更新

最后修改:2021 年 05 月 16 日
如果觉得我的文章对你有用,请随意赞赏