绕过黑名单检查实现文件上传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服务器将建立连接,并传输数据。
实验目的
实验环境 操作系统:
【绕过黑名单检查实现文件上传1 ——合天网安实验室学习笔记】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、后缀检查等方式,推荐文件类型检查使用白名单的方式;
- 使用随机数改写文件名和文件路径。
文章图片
推荐阅读
- 渗透测试|【文件上传绕过】——后端检测_内容检测图片马绕过
- python|JS逆向之抖音登陆及验证码绕过
- 逆向修改手机内核,绕过反调试
- App自动化04-Inspector检查器启动QQ测试
- SSM+VUE项目(传智健康)|03-预约管理-检查项管理的增删改查页面完善
- 「榆林经文保」省厅经文保总队总队长刘涛??检查指导榆林公安经文保工作
- 【漏洞修复通知】修复Apache|【漏洞修复通知】修复Apache Shiro认证绕过漏洞
- 忘不了~戒不掉~
- [译] PostgreSQL 11 - 约束
- 五险一金黑名单来了!这些行为会被联合惩戒!