文件上传漏洞实验

2023-09-12 20:50:21

实验目的

掌握上传漏洞的利用。

实验工具

  • 火狐:Mozilla Firefox,中文俗称“火狐”(正式缩写为Fx或fx,非正式缩写为FF),是一个自由及开放源代码网页浏览器,使用Gecko排版引擎,支持多种操作系统,如Windows、Mac OS X及GNU/Linux等。

实验内容


什么是网站(web)漏洞?

web漏洞通常是指网站程序上的漏洞,可能是由于代码编写者在编写代码时考虑不周全等原因而造成的漏洞,这些漏洞一旦被恶意攻击者利用,会根据漏洞的危害程度,造成不可估量的损失。

Web常见漏洞

  • SQL注入
  • XSS跨站点脚本
  • 任意文件读取漏洞
  • 上传漏洞
  • CSRF
  • 命令注入
  • 弱口令漏洞
  • 敏感信息泄露漏洞

实验上传漏洞介绍

文件上传是Web应用中比较常见的功能,用户经常会通过文件上传的功能分享照片、修改头像或上传附件等操作。文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。文件上传本身是一个网站正常的业务需求,但如果文件在上传之后,服务器端没有妥善的处理,就会导致严重的后果。

文件上传漏洞危害

  1. 上传的文件若为Web脚本语言,服务器的Web容器解释并执行了攻击者上传的脚本(Webshell),则会导致代码执行,致使攻击者获取网站甚至整个系统的控制权。

  2. 上传文件为Flash的策略文件crossdomain.xml,则攻击者可以控制Flash在该域下的行为。

  3. 上传文件为病毒,木马等,攻击者可以诱骗用户或者网站管理员下载执行,作为下一步攻击的起点。

  4. 黑客可以连续不断地上传大文件,使网站运行缓慢,并可能发动拒绝服务攻击。

  5. 上产文件是钓鱼图片或包含了脚本的图片,在某些版本的浏览器中会被作为脚本直接执行。

容易出现上传地方

  • 头像上传
  • 图片&视频分享
  • 附件上传功能
  • 文件管理器

漏洞产生原理

在用户可以上传文件的地方,如果对上传的文件类型判断并不严谨,则会导致文件上传漏洞的产生。文件上传漏洞一般会有以下一些产生原因:

  • 如果在文件上传时根本没有进行文件格式检查,导致攻击者可以直接上传恶意文件。

  • 如果仅仅通过客户端传入的文件类型进行检查,攻击者可以通过Burp Suite,Fiddler等截断工具轻松绕过客户端的检查。

  • 服务端听过黑名单的方式限制上传文件的类型,例如限制不允许上传'php'、'php3'、'php5'、'asp'等后缀的文件,却可以上传'php2'、'php4'、'inc'等后缀的文件,导致发生安全问题。

  • 服务器端进行了黑名单检查,但是却可能忽略了大小写,如将.php改为.Php即可绕过检查

  • Web应用虽然在服务器端进行了白名单检查却忽略了%00终止符,如应用本来只允许上传jpg图片,那么可以构造文件名为xxx.php%00.jpg,其中%00为十六进制的0x00字符,.jpg骗过了应用的上传文件类型检测,但对于服务器来说,因为%00字符截断的关系,最终上传的文件变成了xxx.php。

  • 允许用户修改已上传文件的后缀。假设应用本来只允许上传.doc类型的文件,文件时攻击者可以先将.php文件后缀修改为.doc,成功上传后再改回.php。

  • 使用第三方插件时引入。很多应用会引用了带有文件上传功能的第三方插件,这些插件的文件上传功能实现上可能有漏洞,攻击者可通过这些漏洞进行文件上传攻击。如博客平台WordPress就有丰富的插件,而这些插件中每年都会被挖掘出大量的文件上传漏洞。

下面开始实验

步骤1:寻找上传漏洞,并尝试上传

根据题意,我们开始上传一张图片,看看上传是否成功。

步骤2:文件上传缺陷漏洞绕过上传检测

我们在桌面创建一个webshell.php文件,测试是否能上传成功。

在php文件里写入如下内容,并命名为1.php

<?php eval($_POST['123']);?>            //post会把123当做参数进行传递,eval会执行后面的语句。

eval在php中会将字符串当做代码来执行, 而post的意思是使用post的方式进行传递参数。

一句话木马,顾名思义,它的体积很小,只由一句php代码构成。

点击浏览,选择创建好的webshell.php,然后点击提交

我们会发现,在我们提交webshell.php之后,我们就得出了我们所需要的flag.

总结

在本次试验中,我们尝试多种方法对其进行绕过。

  • 我们上传了jpg文件,虽然上传成功但并没有用处,因为Apache把它解析成图片了

  • 我们又上传了gif文件,也上传成功了,但是,Apache把它解析成gif图了。

  • 接下来上传了后缀名为php文件,这个上传成功了,爆出了falg值。

因此我们得出结论,需要成功的执行代码,需要两个条件:

  • 上传文件后缀必须要在网站白名单之内,否则无法上传。

  • 上传文件后缀必须是Apache无法识别的后缀。

只有最后一个满足了这两点,因此一句话木马才能上传成功。

因为本实验仅作为测试用,无法连接中国菜刀,在真实的环境中,我们可以将上传木马的地址复制到菜刀里连接,这样就拿到了网站的Shell(具体操作步骤敬请关注本平台的其他相关课程)。

更多推荐

数据库计算机三级等级考试--数据库技术相关知识点和笔记

数据库计算机三级等级考试–数据库技术计算机三级等级考试笔记,是博主通过计算机三级数据库技术考试的相关笔记,此篇博客,不仅适合需要考计算机三级考试的各位考生,也适合在职场处理关于数据库的部分操作,个人认为算是一篇使用性比较强的文档,我个人认为,我目前所在开发岗位,在回顾去看这篇文档,我都会再次有收获,对了,如果你需要计算

外包干了2个月,技术退步明显了...

先说一下自己的情况,大专生,19年通过校招进入深圳某软件公司,干了接近4年的功能测试,今年8月份,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试,已经让我变得不思进取,谈了2年的女朋友也因为我的心态和工资和我分手了。于是,我决定要改变现状,冲击下大厂。刚开始准备

浅析-ES6

4、ES6语法指南后端项目搭建完毕,接下来就是前端页面了。不过在这之前需要一些准备工作。我们需要学习ES6的语法标准。什么是ES6?就是ECMAScript第6版标准。4.1.什么是ECMAScript?来看下前端的发展历程:web1.0时代:最初的网页以HTML为主,是纯静态的网页。网页是只读的,信息流只能从服务的到

2023年8月知识复习

物联网总括物联网即通过网络将客观事物进行智能化互联的网络系统。互联网主要是人与人、人与计算机之间的通信,而物联网主要是物联网设备之间的通信。注意:数据上传到云端不是物联网的必要条件。物联网可以仅在本地网络和局域网中进行通信和数据处理。比如在工业控制系统中,设备之间需要实时通信和数据处理,但出于隐私、安全性或数据管控的考

C++核心编程之类和对象---C++面向对象的三大特性--封装

目录类和对象类和对象的概念C++面向对象的三大特性一、封装封装案例1:设计一个学生类,可以给姓名和学号赋值,可以显示学生的姓名和学号。二、访问权限访问权限有三种struct和class的区别三、成员属性私有化成员属性私有化的优点:四、封装案例案例1:设计立方体类案例2:点和圆的关系类和对象面向对象编程(OOP)是现代编

【C语言】进阶——字符串和内存函数

目录一:非限制字符串函数1.strlen👊模拟实现方法1:计算器法方法2.指针-指针方法3.函数调用2.strcpy👊模拟实现3.strcat👊模拟实现4.strcmp👊模拟实现二:可限制字符串函数1.strncpy2.strncat3.strncmp4.strstr👊模拟实现5.strtok6.strerr

【1++的C++进阶】之C++11(二)

👍作者主页:进击的1++🤩专栏链接:【1++的C++进阶】文章目录一,类的新变化二,可变参数模板三,lambda表达式一,类的新变化在C++03之前,我们的默认成员函数有6个,我们在类与对象这篇中有过详细的讲解。C++11中又增加了两个默认成员函数—移动构造与移动赋值重载,其底层原理以及优势我们在上节已经有过描述。

在本地搭建WAMP服务器并通过端口实现局域网访问(无需公网IP)

文章目录前言1.Wamp服务器搭建1.1Wamp下载和安装1.2Wamp网页测试2.Cpolar内网穿透的安装和注册2.1本地网页发布2.2Cpolar云端设置2.3Cpolar本地设置3.公网访问测试4.结语前言软件技术的发展日新月异,各种能方便我们生活、工作和娱乐的新软件层出不穷,但也有一些经过时间和用户考验的老牌

服务器基准测试实践:SysBench的搭建与基本使用

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。🏆数年电商行业从业经验,AWS/阿里云资深使用用户,历任核心研发工程师,项目技术负责人。🎉欢迎👍点赞✍评论⭐收藏文章目录🚀一、SysBench是什么?🚀二、SysBe

VSCode 安装使用教程 环境安装配置 保姆级教程

一个好用的IDE不仅能提升我们的开发效率,还能让我们保持愉悦的心情,这样才是非常Nice的状态^_^那么,什么是IDE呢?whatIDE(IntegratedDevelopmentEnvironment,集成开发环境)是含代码编辑器、关键词高亮、智能感应、智能纠错、格式美化、版本管理等功能于一身的"高级代码编辑器"每个

MySQL(4)索引实践(2)

一、分页优化limit100010,其实不是只查询出10条记录,mysql底层会查询出1100条,然后舍去前1000条所以,随着页的增多,查询效率会降低1、可以使用取范围的方式比如id>1000方式优化2、使用关联查询优化,子表使用覆盖索引,不用查出来所有数据,主表关联子表查询出数据二、关联表执行过程(1)两种算法1、

热文推荐