htaccess绕过上传实验

news2024/11/25 23:02:47

实验目的

利用上传htaccess文件解析漏洞绕过验证进行上传PHP脚本木马

实验工具

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

实验内容


什么是网站(web)漏洞?

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

Web常见漏洞

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

htaccess绕过上传漏洞解析

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

PHP在处理.htaccess文件中的配置时存在漏洞,本地攻击者可能利用此漏洞绕过PHP的某些安全限制。

如果将PHP用作Apache模块的话,就可以使用.htaccess文件中的指令更改配置设置。用户可以使用这些选项更改display_errors之类权限选项,

可以绕过不同函数中的safe_mode或open_basedir安全限制。例如,用户可以通过.htaccess设置session.save_path。

session_save_path()和ini_set()函数中对save_path检查了safe_mode和open_basedir,但在.htaccess中确可以绕过这个检查。

文件上传漏洞在WEB端属于危害比较大的漏洞,一旦成功利用漏洞,可能导致网站被下后门,甚至可以直接拿下服务器权限。

白名单

服务端通过获取上传文件的扩展名来匹配预先定义的合法扩展名数组,如果未能成功匹配的话,认为上传文件不合法,返回报错信息,如果扩展名能成功匹配,则认为上传文件合法,进行文件保存操作。

拿上传图片举例,服务端定义的白名单:

$WhiteList=array("png","jpg","jpeg","gif");

可以看到,上述代码中只允许上传"png","jpg","jpeg","gif"这四种格式文件,上传文件时,服务端会检测后缀,如果所上传的文件格式后缀,没有在白名单允许的范围内,系统会拒绝上传。

黑名单

服务端通过获取上传文件的扩展名来匹配预先定义的非法扩展名数组,如果能成功匹配的话,认为上传文件不合法,返回报错信息,如果扩展名没有匹配到,则认为上传文件合法,进行文件保存操作。

拿上传图片举例,服务端定义的黑名单:

$BlackList=array("php","htaccess","asp","aspx");

根据黑名单列表可以看出,服务器不允许上传攻击中常用的php、htaccess、asp、aspx等脚本文件,也就是说这些文件都会被服务端所拦截,不能上传成功。

下面开始实验

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

点击它后,我们看到了网站的首页,看到如下画面

我们看到下方显示了允许上传的类型,可以猜测,这应该是一个白名单验证,系统只允许列出的文件后缀进行上传。

首先我们在桌面上找到一个后缀名为.png的图片,然后我们点击浏览,选择创建好的3.png,然后点击提交

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

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

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

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

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

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

可以看到提示:错误的文件类型,也就是只可以上传它白名单内的内容,如果上传白名单外的东西,会被系统拒绝。

因为在白名单列表中有jpg格式,因此在我们再将它的后缀名改为jpg,命名为123.jpg,查看是否能成功。

可以看到,改为jpg可以上传成功。

虽然jpg文件上传成功,但它其中的php代码并不能执行成功,使用中国菜刀也不会连接成功的。

因为jpg是图片格式,不能解析其中的php代码,要想解析php代码,后缀必须为php或者其他可以解析php代码的格式。

  • 提示:这个时候我们就需要对其进行绕过,服务器会检测我们所上传的后缀是否在白名单内,如果不在的话就禁止上传。

步骤2:利用htaccess解析缺陷漏洞绕过上传检测

我们利用htaccess来绕过上传检测,我们创建一个后缀名为.htaccess的文件,文件内容为AddType application/x-httpd-php .jpg 这句话的意思是让Apache服务器识别并解析后缀名.jpg的文件名。

  • 提示:上传成功到服务器的.htaccess文件里的代码可以让 .jpg后缀名文件格式的文件名以 php格式解析 所以我们把PHP脚本木马文件的后缀名改为.jpg格式,让.htaccess文件解析PHP脚本木马文件里的php代码 ,使木马上传成功。

我们开始上传1.htaccess文件,我们查看结果。

我们找到了flag值,我们把.htaccess文件里的代码上传到服务器后,我们把php脚本木马文件从.php修改成.jpg格式,让.htaccess文件解析php脚本,则木马成功。

总结

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

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

  • 首先我们直接上传了php文件,因为白名单中没有php后缀的格式,拒绝上传,因此失败了

  • 接下来上传了htaccess文件,这个上传成功了,爆出了falg值。

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1005367.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

车机多用户系统的适配问题

多用户问题出现背景 记录一下多用户的适配问题&#xff1a; 背景是system/app下面新push了两个apk&#xff0c;一个是我们的业务场景apk一个是虚拟车CarService服务的apk&#xff0c;我们的apk需要链接CarService服务通过AIDL通信。 下面这两张图是未roo的情况&#xff08;当…

什么是无人机全自动飞行系统?概念、构成、作用深度解析

无人机的工业化应用深入催生出新的痛点&#xff0c;无人机应用飞手培养难、成本高、技术参差不齐&#xff0c;以及应急响应和采集作业价值等没有得到充分释放&#xff0c;由此无人机自动飞行系统、无人机自动机场横空出世&#xff0c;因其无人化、自动化、无人机值守的应用特性…

免费的代码审查工具你知道这几个就够了?新手程序员必读

代码质量关系到一个项目的好坏&#xff0c;一直以来都是程序员和项目经理所关心的事情&#xff0c;在之前代码的检查用于人工或者静态页面&#xff0c;再后来就会用的各种工具来做因为不良的代码不仅会影响代码的可维护性&#xff0c;而且还会在某些情况下影响其性能。此外&…

MYSQL优化——B+树讲解

B-/B树看 MySQL索引结构 B-树 B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树.它类似普通的平衡二叉树&#xff0c;不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图. B-树有如下特点: 所有键值分布在整颗树中&#xff1b; 任何一…

远程双屏电脑的时候有的窗口默认打开在第二块屏幕上,导致无法看到和操作【伸手党福利】

解决方法&#xff1a; 点击看不到的窗口&#xff0c;使之处于激活状态 win 左箭头 或者 win右箭头 Alt空格 按M 按 左箭头 或者 右箭头 就能看到窗口移出来了。

2023-9-12 分组背包问题

题目链接&#xff1a;分组背包问题 #include <iostream> #include <algorithm>using namespace std;const int N 110;int n, m;int v[N][N], w[N][N], s[N]; int f[N];int main() {cin >> n >> m;for(int i 1; i < n; i ){cin >> s[i];for(…

VSCODE 使用技巧

vscode批量去掉代码中空行的方法 1、在vscode中使用ctrl f组合快捷键打开替换窗口. 2、输入下面的正则表达式 ^\s*(?\r?$)\n https://mp.weixin.qq.com/s/ZKV2sZWszxBLNTNLEWhsng

PHP-学习笔记-部署wordpress

这部署wordpress 准备工作wordpress和php的版本需要进行匹配apache和php的匹配一二 php和mysql的匹配msyqlapache 正式使用注意事项 准备工作 wordpress和php的版本需要进行匹配 https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versio…

Bug管理工具推荐:了解常用Bug管理工具

引言 在软件开发过程中&#xff0c;Bug&#xff08;缺陷&#xff09;是不可避免的。为了高效地跟踪、记录和解决Bug&#xff0c;Bug管理工具成为了软件开发团队的必备利器。这些工具能够帮助团队识别、管理和解决Bug&#xff0c;从而提高软件质量和开发效率。 1、Zoho Project…

ATF(TF-A) SPMC威胁模型-安全检测与评估

安全之安全(security)博客目录导读 ATF(TF-A) 威胁模型汇总 目录 一、简介 二、评估目标 1、数据流图 三、威胁分析 1、信任边界 2、资产 3、威胁代理 4、威胁类型 5、威胁评估 5.1 端点在直接请求/响应调用中模拟发送方或接收方FF-A ID 5.2 篡改端点和SPMC之间的…

Unity-UML类图讲解

例如“动物”矩形框&#xff0c;代表一个类&#xff08;Class)。 类图分三层&#xff0c;第一层显示类的名称&#xff0c;如果是抽象类&#xff0c;则就用斜体显示。 第二层是类的特性&#xff0c;通常就是字段和属性。 第三层是类的操作&#xff0c;通常是方法或行为。 注…

LeetCode(力扣)45. 跳跃游戏 IIPython

LeetCode45. 跳跃游戏 II 题目链接代码 题目链接 https://leetcode.cn/problems/jump-game-ii/description/ 代码 class Solution:def jump(self, nums: List[int]) -> int:if len(nums) 1:return 0curdis 0nextdis 0step 0for i in range(len(nums)):nextdis max(…

Redis缓存魔法:如何轻松提升你的应用性能

Redis&#xff0c;作为一个开源的、内存中的数据结构存储系统&#xff0c;已经成为了许多开发者和企业的首选工具。无论是作为数据库、缓存还是消息代理&#xff0c;Redis都展现出了其强大的性能和灵活性。在本文中&#xff0c;我们将深入探讨Redis的魅力&#xff0c;以及如何有…

爬虫容易进局子?——爬虫的一些内幕

爬虫其实没有你想的那么简单。你是否曾接到过陌生电话&#xff0c;对方不仅知道你的姓名&#xff0c;还了解你的生日、地址等个人信息&#xff1f;这不再是巧合&#xff0c;而是来自于这个黑暗产业链的信息搜集。这些个人信息&#xff0c;从何而来&#xff1f;那不得不说——爬…

TikTok挑战:社交模式对现实友情的冲击

随着社交媒体平台的崛起&#xff0c;我们的社交模式正在经历着前所未有的变革。TikTok&#xff0c;作为最具代表性的短视频分享应用之一&#xff0c;已经深刻地改变了我们的社交方式和互动模式。然而&#xff0c;这种改变并不总是带来积极的影响&#xff0c;特别是当我们思考Ti…

Fast-DDS 服务发现简要概述

阅读本文章需要对DDS基础概念有一些了解&#xff0c;一些内容来自Fast-DDS官方文档&#xff0c;一些是工作中踩过的坑。 1. 服务发现阶段 满足OMG标准的DDS服务发现分为两部分&#xff0c;分别是: PDP(Participant Discovery Protocol 参与者发现协议)&#xff1a;参与者确认…

带裂纹板受拉力状态下的边界位移输出

上边界位移获取思路&#xff1a; 首先获取上边界线&#xff0c;再获取上边界线上的节点&#xff0c;再提取节点的位移&#xff0c;输出成txt文件后导出到MATLAB中绘图 !选择37号线上的所有节点 alls,all lsel,r,,,37 nsll !获取37号线的节点总数&#xff0c;node_num *get,node…

IDEA设置Maven 镜像

第一步&#xff1a;右键项目&#xff0c;选择Maven->Create ‘settings.xml’ 已经存在的话是Open ‘settings.xml’&#xff1a; 第二步&#xff1a;在settings.xml文件中增加阿里云镜像地址&#xff0c;代码如下&#xff1a; <?xml version"1.0" encodin…

FVCOM流域、海洋水环境数值模拟方法及实践教程

详情点击公众号&#xff1a;技术科研吧&#xff0c;链接&#xff1a;FVCOM流域、海洋水环境数值模拟方法及实践教程 一&#xff1a;FVCOM水动力相关理论 1.主流海洋数值模式特点&#xff08;FVCOM、POM、HYCOM等&#xff09; 2.不同坐标系下FVCOM控制方程推导 3.FVCOM有限体积…

flink命令行提交jar包任务

1. 环境准备 1.1 flink环境准备 关于如何安装flink&#xff0c;这个写的非常详细&#xff0c;https://blog.csdn.net/qq_43699958/article/details/132826440 在flink的bin目录启动flink cluster [rootlocalhost bin]# ./start-cluster.sh1.2 Linux环境准备 1.2.1 关闭linu…