首页 > 其他分享 >网络安全——文件上传漏洞

网络安全——文件上传漏洞

时间:2024-07-08 19:27:56浏览次数:20  
标签:网络安全 文件 jpg 后缀名 漏洞 绕过 php 上传

目录

一、文件上传漏洞概述

二、文件上传漏洞原因

三、常见绕过上传技术

四、实战模拟

PASS1(绕过JS)

PASS2(绕过contnet-type)

PASS3(绕过黑名单)

PASS4(htaccess重写解析绕过)

PASS5(黑名单大小写绕过)

PASS6(空格绕过)

PASS7(windows系统特征绕过)

PASS8(NTFS交换数据流::$DATA绕过)

PASS9(嵌套绕过.空格.)

五、实战总结


一、文件上传漏洞概述

       文件上传漏洞是指由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上传可执行的动态脚本文件。如常见的头像上传,图片上传,oa办公文件传,媒体上传,允许用户上传文件,如果过滤不严格,恶意用户利用件上传漏洞,上传有害的可以执行脚本文件到服务器中,可以获取服务器的权限,或进一步危害服务器。

二、文件上传漏洞原因

       任意文件上传:没有限制用户上传的文件类型,导致攻击者可以上传恶意脚本。
       有条件的上传漏洞:开发者对文件上传做了简单限制,但这些限制容易被绕过。
       权限认证问题:没有对文件上传页面进行权限认证,导致未授权访问。

       攻击者寻找目标网站的上传点尝试上传.php .aspx等动态脚本语言文件测试其是否可以直接上传,如果不行再尝试对其进行绕过。

三、常见绕过上传技术

       前端JS绕过:通过禁用 JS 或修改前端验证逻辑来上传恶意文件。
       content-type绕过:修改 HTTP 请求中的 content-type 来欺骗服务器。
       黑名单绕过:利用黑名单逻辑漏洞,如大小写不敏感、空格插入等。

四、实战模拟

       首先我们应该了解文件上传的过程:客户端选择发送的文件->服务器接收->网站程序判断->临时文件->移动到指定的路径。

       服务器接收资源代码:

<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>

       客户端文件上传的代码:

<html>
<head></head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

       我们现在使用2018版本的phpstudy与upload-labs文件上传漏洞靶场以及抓包软件BrupSuite实战模拟学习文件上传绕过技术。

子弹:

<?php
phpinfo();
@eval($_POST['pass']);
?>
PASS1(绕过JS)

       查看上传代码要求上传的文件类型是.jpg|.png|.gif,把恶意文件改成 js 允许上传的文件后缀,如 jpg、gif、png 等,再通过抓包工具抓取 post 的数据包, 把后缀名改成可执行的脚本后缀如 php 、asp、jsp、net 等,即可绕过上传。

       我们上传rsec.jpg,然后Burp抓取数据包,修改其中的后缀为.php

       提交即可成功上传

右键新标签页面打开图片即可查看我们的.php文件

PASS2(绕过contnet-type)

       有些上传模块,会对http的类型头进行检测,如果是图片类型,允许上传文件到服务器,否则返回上传失败。因为服务端是通过content-type判断类型,content-type在客户端可被修改。则此文件上传也有可能被绕过的风险;首先进行submit提交判断,再检测文件类型如果是image/jpeg或者image/png即允许上传;

       首先进行submit提交判断,再检测文件类型如果是image/jpeg或者image/png即允许上传;

       上传rsec.jpg文件,抓包把content-type修改成image/jpeg即可绕过上传

       检查方式同PASS1

PASS3(绕过黑名单)

       上传模块,有时候会写成黑名单限制,在上传文件的时获取后缀名,再把后缀名与程序中黑名 单进行检测, 如果后缀名在黑名单的列表内,文件将禁止文件上传;

       首先是检测 submit 是否有值,获取文件的后缀名,进行黑名单对比,后缀名不在黑名单内, 允许上传;

       可以在phpstudy的httpd.conf文件中查看AddType的设置情况。

       注:新版的phpstudy貌似没有这个了,实验的话只能使用老版的了。

       然后找到AddType application/x-httpd-php .php .phtml,去掉前面的注释符号,重启phpstudy并刷新页面,然后上传rsec.jpg,抓包更改后缀,操作同PASS1、2。

PASS4(htaccess重写解析绕过)

       上传的文件后缀名在列表内禁止上传。包括了所有的执行脚本。但是没有过滤.htaccess。

       .htaccess文件是Apache服务器中的⼀个配置文件,提供了针对目录改变配置的放法.通过 htaccess文件可以实现:网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

       重要功能:可以指定某个文件当作php文件执行(拿php解析器解析)要htaccess的规则生效 则需要在apache开启rewrite重写模块,因为apache是多数都开启这个模块,所以规则⼀般都效。

       

       上传.htaccess到网站里,该.htaccess将所有的jpg文件解析成php文件再上传恶意的jpg 到.htaccess相同目录里,访问图⽚片即可获取执行脚本;

PASS5(黑名单大小写绕过)

       有的上传模块,后缀名采用黑名单判断,但是没有对后缀名的大小写进行严格判断,导致可以 更改后缀大小写可以被绕过。如PHP、Php、phP、pHp;

       仔细阅读⿊名单,查看是否有被忽略的后缀名,当前可以使用phP 绕过;上传rsec5.jpg抓包后修改文件名为rsec5.PHp

检查方式同上

PASS6(空格绕过)

       上传rsec6.jpg,抓包在后缀名后添加空格。

PASS7(windows系统特征绕过)

       在windows中文件后缀名. 系统会自动忽略.所以shell.php.像shell.php的效果⼀样。

       源码:同样是黑名单,但是没有删除⽂件末尾的点的判断条件;上传rsec7.jpg,抓包后修改在后缀名后加上.即可绕过;

PASS8(NTFS交换数据流::$DATA绕过)

       如果后缀名没有对::$DATA进⾏判断,利用windows系统NTFS特征可以绕过上传 ;

       上传rsec8.jpg,burpsuite抓包修改后缀名为.php::$DATA ;

PASS9(嵌套绕过.空格.)

       上传rsec9.jpg,抓包后后缀改为.php. .

五、实战总结

       我总结了漏洞利用实战的步骤:

       信息收集:确定目标站点允许的文件类型和上传点。
       上传尝试:尝试上传恶意文件,观察服务器响应。
       抓包分析:使用代理工具抓取上传请求,分析验证逻辑。
       绕过验证:根据分析结果,修改请求以绕过客户端和服务器端验证。
       文件上传:成功上传恶意文件后,尝试执行以获取控制。

       文件上传漏洞的利用和防御是一个持续的过程,需要不断学习最新的安全技术和攻击手段。通过实战经验的积累和安全意识的提升,可以更有效地保护系统安全。

标签:网络安全,文件,jpg,后缀名,漏洞,绕过,php,上传
From: https://blog.csdn.net/weixin_71208450/article/details/140269520

相关文章

  • Linux-网络安全私房菜
    目录前言入门基本指令篇章man帮助手册字符集设置cdlsdatemkdirtouch-d-m修改主机名rmshredrename重命名mv移动tar打包与压缩打包但是不压缩打包且压缩更新包文件解压对应的包zip压缩文件命令cat查看显示行号交互写入(追加)显示空行more和lesshead和tailheadtail(能够实时监测内容)-......
  • 网络安全--计算机网络安全概述
    目录网络信息系统安全的目标网络安全的分支举例P2DR模型信息安全模型访问控制的分类多级安全模型网络信息系统安全的目标保密性保证用户信息的保密性,对于非公开的信息,用户无法访问并且无法进行非授权访问,举例子就是:防止信息泄露。完整性保证用户的信息完整性,就是不允......
  • 如何把本地数据库上传到生产环境数据库
    java项目打包至生产环境流程-CSDN博客j上面的文章写了如何将代码打包至生产环境,但是由于我新建表了,导致报错找不到数据库表这篇文章讲一下如何讲本地数据库上传至生产环境下的数据库.一.navicat配置生产环境数据库1.首先用fianlshell连接到服务器2.然后配置连接,点击......
  • vue element 上传到七牛云
    使用网站token生成:点我七牛云上传接口错误码:点我七牛云存储区域上传地址:点我七牛云在线生成token一般是后端生成,使用接口获取(放在后端比较安全)//获取七牛云tokenexportasyncfunctiongetQiniuToken(){consturl='/upload/key';constresult=awaitdefHtt......
  • 阅读笔记《GB/T 22240-2020信息安全技术 网络安全等级保护定级指南》
    等级保护对象:网络安全等级保护工作直接作用的对象。主要包括信息系统、通信设施和数据资源等。定级流程:确定定级对象、初步确定等级、专家评审、主管部门核准、备案审核作为定级对象的信息系统应具有如下基本特征:(1)具有确定的主要安全责任主体;(2)承载相对独立的业务系统;(3)包含相互......
  • 2024HW必修高危漏洞集合_v3.0
    高危风险漏洞一直是企业网络安全防护的薄弱点,也成为HW攻防演练期间红队的重要突破口;每年HW期间爆发了大量的高危风险漏洞成为红队突破网络边界防护的一把利器,很多企业因为这些高危漏洞而导致整个防御体系被突破、甚至靶标失守而遗憾出局。HW攻防演练在即,斗象情报中心依......
  • VMware vCenter Server 7.0U3r 下载 - 修复堆溢出 (远程执行代码) 和本地权限提升漏洞
    VMwarevCenterServer是一款高级服务器管理软件,提供了一个集中式平台来控制vSphere环境,以实现跨混合云的可见性。简化且高效的服务器管理什么是vCenterServer?实现集中式可见性、简化且高效的大规模管理,以及在整个混合云中的可延展性,所有这一切,均可通过单一控制台来实现......
  • 网络安全设备——防火墙
    网络安全设备防火墙是一种用来加强网络之间访问控制的特殊网络互联设备。以下是对防火墙的详细解释:一、定义与基本概念定义:防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的组合。它通过监测、限制、更改跨越防火墙的数据流,尽......
  • 实战篇——文件包含漏洞一
    实战篇——文件包含漏洞(1)本地文件包含本地文件包含一般需要依赖文件上传漏洞。如果文件上传漏洞限制上传文件的后缀必须为.jpg,那么配合本地文件包含,就可以通过上传图片木马获得服务器权限。上传图片木马:利用本地文件包含,成功连接一句话木马:可见本地文件包含最大的缺陷在......
  • ctfshow-web入门-文件上传(web151-web160)
    目录1、web1512、web1523、web1534、web1545、web1556、web1567、web1578、web1589、web15910、web1601、web151试了下前端只能传png后缀的将一句话木马改成png后缀,上传后用burpsuite抓包绕过前端检测后,改回php后缀,发包调用:/upload/eval.php?cm......