基本概念
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传” 本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
客服端绕过
直接使用 burp 抓包改包,先上传一个 gif 类型的木马,然后通过 burp 将其改为asp/php/jsp 后缀名即可。
服务端绕过
后缀绕过
php
php
php5
pht
phtml
shtml
pwml
phtm
jsp/asp
.jspx
.jspf
.jspa
.jsw
.jsv
.jtml
---
.asa
.asax
.cer
.cdx
.aspx
.ascx
.ashx
.asmx
asp{80-90
Magic检测绕过
上传文件的时候会检查上传文件是否合法,通过burp在木马内容基础上再加了一些文件信息,形成如下的结构:
GIF89a <?php phpinfo(); ?>
系统命名绕过
在Windows系统中,会自动去除不合理字符。如上传 index.php.
重命名为 index.php
,可这样以绕过后缀检查。 也可尝试 index.php%20
, index.php:1.jpg
index.php::$DATA
等。
在Linux系统中,可以尝试上传名为 index.php/.
或 ./aa/../index.php/.
的文件
.user.ini
在php执行的过程中,除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($SERVER'DOCUMENT_ROOT' 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。 .user.ini 中可以定义除了PHP_INI_SYSTEM以外的模式的选项,故可以使用 .user.ini 加上非php后缀的文件构造一个shell,比如 auto_prepend_file=01.gif
%00 截断上传绕过
php版本小于 5.3.4
通过抓包截断将 backlion.asp.jpg 后面的一个.换成%00 在上传的时候即 backlion.asp%00.jpg,当文件系统读到%00 时,会认为文件已经结束,从而将 backlion.asp.jpg 的内容写入到 backlion.asp 中,从而达到攻击的目的。%00 不是针对所有基于白名单的后缀名检查都能绕过,代码的实现过程中必须存在截断上传漏洞,上传格式如下:bk.asp%00.jpg
软链接任意读文件
上传的压缩包文件会被解压的文件时,可以考虑上传含符号链接的文件 若服务器没有做好防护,可实现任意文件读取的效果
标签:文件,00,asp,index,php,上传 From: https://www.cnblogs.com/Ho1dF0rward/p/18284885