绕过黑名单检查实现文件上传1 ——合天网安实验室学习笔记

实验链接

文件上传指将客户端数据以文件形式封装,通过网络协议发送到服务器端。在服务器端解析数据,最终在服务端硬盘上作为真实的文件保存。了解文件上传漏洞产生的原因,掌握漏洞的利用方法。

链接:http://www.hetianlab.com/expc.do?ce=1d02daa2-881f-4102-83de-629637072914

同系列文章:绕过黑名单检查实现文件上传2

实验简介

实验所属系列: Web安全

实验对象: 本科/专科信息安全专业

相关课程及专业: 计算机基础、PHP、计算机网络

实验类别: 实践实验类

预备知识

  • 文件上传漏洞简介

    通常web站点会有用户注册功能,而当用户登录之后大多数情况下会存在类似头像上传、附件上传之类的功能,这些功能点往往存在上传验证方式不严格的安全缺陷,导致攻击者通过各种手段绕过验证,上传非法文件,这是在web渗透中非常关键的突破口。

  • 文件上传漏洞危害

    攻击者绕过上传验证机制上传恶意文件,通过上传的web后门获得整个web业务的控制权,复杂一点的情况是结合web服务器的解析漏洞来获取权限。

  • 文件上传检测流程

    通常一个文件以HTTP协议进行上传时,将以POST请求发送至web服务器,web服务器收到请求并同意后,用户与web服务器将建立连接,并传输数据。
    实验目的

通过该实验了解文件上传漏洞的基础知识及演示实践。

实验环境

操作系统:

Windows10:部署文件上传漏洞环境及漏洞利用;ip:10.1.1.100

辅助工具:phpStudy、Mozilla Firefox、burpsuite、菜刀

源码与工具请在实验机内下载使用:http://tools.hetianlab.com/tools/T044.zip(包里有菜刀,为避免误杀下载前请先关闭defender)

关闭defender步骤:在桌面搜索栏搜关键字 defender-> 设置-> 实时保护(关闭)即可

在这里插入图片描述
本次实验采用github开源项目upload-labs靶场,项目地址:https://github.com/c0ny1/upload-labs

实验步骤

步骤一

任务描述:后缀大小写绕过实现文件上传。

下载源码文件到phpStudy的WWW目录下,在源码文件里创建一个名为upload的文件夹:

在这里插入图片描述
PHP版本切换至5.2.17,开启phpStudy;
在这里插入图片描述
浏览器访问http://10.1.1.100/upload-labs/index.php,选择Pass-05,点击右上角‘显示源码’,通过源码提示进行文件上传:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

可以看出此处对后缀名为. php的文件做了限制,但是没有将后缀进行大小写统一,我们可以通过大小写绕过上传恶意文件。

在桌面写一个简单的一句话木马eval.php:

在这里插入图片描述

上传eval.php并用burpsuite抓包,将文件后缀改为.phP,点击‘go’之后在Response处查看响应内容:

burpsuite不会使用的同学可参考我上一篇笔记:burp暴力破解
在这里插入图片描述
在这里插入图片描述

可以看到文件已经成功上传,但是文件名已经变成了202003081530079359.phP。一些网站会对上传的文件进行文件名随机修改,以防攻击者通过原文件连接webshell,如果不通过burpsuite抓包检测很难发现这一点。

Firefox浏览器访问脚本http://10.1.1.100/upload-labs/upload/202003081530079359.phP,并开启post data:
在这里插入图片描述
没有找到HackBar,也是醉了。。。。

尝试用步骤二的方法连接webshell:
在这里插入图片描述
成功连接webshell。

步骤二

任务描述:空格绕过实现文件上传。

选择Pass-06,点击右上角‘显示源码’,通过源码提示进行文件上传:
在这里插入图片描述

发现还是黑名单检测,但是没有对后缀名进行去空处理,可以通过在后缀名后加空进行绕过。

还是上传之前的PHP一句话木马eval.php并用burpsuite抓包,将文件后缀改为.php+空格,点击‘go’:

在这里插入图片描述

在Response处查看响应内容:
在这里插入图片描述

此时文件名变为202003081549408284.php

利用菜刀进行webshell连接:

burpsuite不会使用的同学可参考我上一篇笔记:文件上传漏洞
在这里插入图片描述

点这个‘+’号;

输入webshell地址:http://10.1.1.100/upload-labs/upload/202003081549408284.php
在这里插入图片描述

在后面那个小框框即post数据输入框里输入:test=phpinfo();

在这里插入图片描述

点击post数据输入框后面的提交键,即可连接webshell:
在这里插入图片描述

连接成功。

步骤三

任务描述:利用Windows系统的文件名特性,通过点绕过实现文件上传。

选择Pass-07,通过查看源码可以发现没有对后缀名进行去‘.’处理,利用Windows系统的文件名特性,会自动去掉后缀名最后的‘.’,通过在文件名后加‘.’进行绕过。
在这里插入图片描述
上传eval.php并用burpsuite抓包,将文件名改为‘eval.php.’:
在这里插入图片描述

点击‘go’之后在Response处查看响应内容:

在这里插入图片描述

虽然在burpsuite里看到的是.php.文件,但是在Windows里保存的会是.php文件。

通过菜刀连接:

在这里插入图片描述

此处的‘test’即为@eval($_POST[‘test’]);中的‘test’,脚本类型选择PHP,点击‘添加’:

在这里插入图片描述

成功通过菜刀连接。

漏洞修复

  • 将上传的目录设置为不可执行;

  • 判断文件类型:结合MIME Type、后缀检查等方式,推荐文件类型检查使用白名单的方式;

  • 使用随机数改写文件名和文件路径。

答题

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值