文件上传

基本概念

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传” 本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

客服端绕过

直接使用 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

软链接任意读文件

上传的压缩包文件会被解压的文件时,可以考虑上传含符号链接的文件 若服务器没有做好防护,可实现任意文件读取的效果

posted @ 2024-07-04 23:19  Ho1d_F0rward  阅读(42)  评论(0)    收藏  举报