web文件上传漏洞的示例分析

发布时间 - 2023-05-25 00:00:00    点击率:

文件上传功能模块

文件上传功能是大部分web应用的必备功能,网站允许用户自行上传头像、一些社交类网站允许用户上传照片、一些服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。若没有进行充分的安全措施,那么即便是看似微不足道的文件上传功能也会面临极高的安全风险。

文件上传漏洞原理

当用户在在文件上传的功能模块处上传文件时,如果WEB应用在文件上传过程中没有对文件的安全性进行有效的校验,攻击者可以通过上传WEBshell等恶意文件对服务器进行攻击,这种情况下认为系统存在文件上传漏洞。

文件上传漏洞---webshell

最常见的文件上传漏洞的方法是上传网站木马(webshell)文件,WEBSHELL又称网页木马文件,根据开发语言的不同又分为ASP木马、PHP木马、JSP木马等,该类木马利用了脚本语言中的系统命令执行、文件读写等函数的功能,一旦上传到服务器被脚本引擎解析,攻击者就可以实现对服务器的控制。

网站木马(webshell)文件又分为大马和小马(一句话木马)、图片马等

大马:功能比较善,配合浏览器使用;代码量通常较大;隐蔽性相对较弱,代码量大,通常需要通过加密等方式来隐藏特征。

小马:功能简单,需要配合客户端使用;代码量通常较小;隐蔽性相对较强,容易通过变形隐藏特征,绕过过滤,通常与cknife工具一起使用。

图片马:当网站限制只能上传图片相关格式的时候,攻击者无法绕过限制即可尝试利用图片马来实现webshell操作。

文件上传漏洞绕过限制

一句话木马类似于,将该木马文件通过文件上传模块上传到服务器。$_POST['v']里面的参数v就是我们的可以利用的参数,我们将我们要执行的指令通过参数v传到服务器来执行;或者利用cknife工具来实现操作目标服务器。

(一)该网页上传形式收到限制,需要符合jpg、jpeg、JPG、JPEG这几个类型格式,所以将原来的格式改为1.jpg格式(服务端校验)

打开burp suite软件拦截数据包,将文件名改为1.php,这样才能运行php脚本,不然jpg后缀的文件虽然能够上传,但是没用运行的功能。

在hackbar插件中定义v=phpinfo();可以查看php当前状态的大量信息

(二)这个页面限制了上传的格式(MIME),需要将文件格式改为JPEG或者PNG(服务端校验)

用burp suite拦截信息,将content-Type改为image/png

用hackbar工具定义参数v=phoinfo();查看php状态信息

(三)该页面对文件后缀进行了筛选,对php类型的文件不进行接受(服务端校验)

打开burp suite软件拦截信息,将文件名改为1.PHp,绕开web服务器的识别

用hackbar定义v=system(ipconfig);

(四)使用截断的方式将jpg截断。这句话有些混淆了。正确的写法应该是: 1. 使用「%00」来截断文件名的文件上传漏洞。 2. 在使用「%00」时,可以使用「ctrl+shift+u」来将其编译。

1.php%00.jpg,%00用ctrl+shift+u来编译

用hackbar工具定义参数v=phoinfo();查看php状态信息(五)该网页只允许上传图片,修改后缀名无效

上传b374k.jpg图片马,登入的密码为b374k

利用浏览器即可使用图片马进行webshell操作

该页面允许上传的文件类型包括jpg、jpeg、png、gif和7z。可以利用apach识别不了后缀名时,从后往前识别扩展名的方式,将1.jpg通过burp改为1.php.7z,则变成压缩形式的文件。

通过burp软件抓包将1.jpg通过burp改为1.php.7z,则变成压缩形式的文件。

用hackbar工具定义参数v=phoinfo();查看php状态信息

文件上传漏洞在web安全里面算是比较常见且危害较大的漏洞,建站厂商可以在此方面增加防范力度:如加强文件后缀名黑名单的范围;对上传文件的名字进行随机修改;上传文件的临时目录和保存目录不允许执行权限等。


# 文件上传  # 上传  # 上传图片  # 服务端  # 上传文件  # 句话  # 可以利用  # 大马  # 马来  # 隐蔽性 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信h5制作网站有哪些,免费微信H5页面制作工具?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  JavaScript实现Fly Bird小游戏  Laravel怎么使用Intervention Image库处理图片上传和缩放  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何在万网利用已有域名快速建站?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  如何在云主机快速搭建网站站点?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  网站优化排名时,需要考虑哪些问题呢?  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  如何彻底删除建站之星生成的Banner?  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  java获取注册ip实例  Java遍历集合的三种方式  使用C语言编写圣诞表白程序  如何在 Pandas 中基于一列条件计算另一列的分组均值  太平洋网站制作公司,网络用语太平洋是什么意思?  JavaScript如何实现路由_前端路由原理是什么  网页设计与网站制作内容,怎样注册网站?  奇安信“盘古石”团队突破 iOS 26.1 提权  html5的keygen标签为什么废弃_替代方案说明【解答】  在线制作视频网站免费,都有哪些好的动漫网站?  如何用搬瓦工VPS快速搭建个人网站?  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Laravel如何创建自定义Facades?(详细步骤)  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  如何在Windows服务器上快速搭建网站?  黑客入侵网站服务器的常见手法有哪些?  Bootstrap CSS布局之列表  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  如何在万网开始建站?分步指南解析  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  如何构建满足综合性能需求的优质建站方案?  ,怎么在广州志愿者网站注册?  百度浏览器如何管理插件 百度浏览器插件管理方法  JavaScript如何实现类型判断_typeof和instanceof有什么区别  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  Laravel如何升级到最新版本?(升级指南和步骤)