【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞
一,环境,工具准备
1-1 VMVare 16 虚拟机及下载安装(资源)
请参考以下博客安装(特详细):【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)https://blog.csdn.net/m0_67844671/article/details/133609717?spm=1001.2014.3001.5502
1-2 window server 2003 下载安装 (提供镜像)
请参考以下博客安装(特详细):
【网路安全 --- win2003安装】 windows server 2003 详细安装过程(提供镜像资源)_网络安全_Aini的博客-CSDN博客【网路安全 --- win2003安装】 windows server 2003 详细安装过程(提供镜像资源)https://blog.csdn.net/m0_67844671/article/details/133675835?spm=1001.2014.3001.5502
1-3 pikachu靶场搭建 (提供靶场及所需要的工具)
请参考以下博客安装(特详细):
【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)_网络安全_Aini的博客-CSDN博客【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)https://blog.csdn.net/m0_67844671/article/details/133682360?spm=1001.2014.3001.5502
二,任意文件下载漏洞
以pikachu靶场为例进行演示
1-1 实例

发现点击名字就可以下载图片
看一下图片的网址

http://192.168.31.159/pikachu/vul/unsafedownload/execdownload.php?filename=kb.png
看到这样的网址,我们上来的反应是sql注入点、xss攻击等手段,现在还需要考虑有没有任意文件下载漏洞,比如改一个文件名会怎样呢?会不会下载这个文件名的文件呢?先看一下文件所在目录

那么网址路径和物理路径的对应关系如下:但是注意,物理路径的最后一个download文件夹是没有在网址路径上体现出来的,通过filename参数对应的文件名称,后台代码肯定是去download文件夹里面找对应的文件了

我们再来看, ../../../index.php ,从download文件夹开始往上层走,找到了如下pikachu文件夹,将里面的文件下载下来了。

我输入完网址,一按回车就把index.php下载下来了

效果:index.php被下载下来了,这就叫做任意文件下载。这样的漏洞现在还有好多。
1-2 产生原因
我们看一看execdownload.php文件代码

写代码的时候,代码规定一个绝对路径,只能在某个文件夹里面下载文件,这样就能防止这个漏洞,但是很多程序员不知道这个问题,导致了漏洞。另一个防御方法,就是将 ../ 之类的符号屏蔽或者过滤掉。
很多网站还会出先如下的问题,就是写很多很多层的 ../
比如下面这种,如果是Linux系统部署的网站,通过../不断往上走,能查看/etc/passwd文件
http://192.168.0.15/pikachu/vul/unsafedownload/execdownload.php?filename=../../../../../../../../../../../../../../../etc/passwd
## 通过../../等切换目录,也叫做目录穿越漏洞。
很明显,这个层级是不存在的,那么如果没有对路径进行处理的话,很有可能默认就直接返回了系统根路径,那么就拿到了根路径下面的etc下面的passwd文件。
1-3 利用思路
快速扫描下载漏洞的时候,不管是工具还是手工,我们怎么判断下载漏洞呢?它有几个关键的形式:
## 一般链接形式:download.php?path=down.php?file=data.php?file=download.php?filename=## 或者包含参数:&Src=&Inputfile=&Filepath=&Path=&Data=
当遇到一个任意文件下载时,我们的一般利用思路:比如下载哪些文件呢?
(1)下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置
(2)下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方
(3)下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。如果是linux系统的话,尝试读取/root/.bash_history看自己是否具有root权限。如果没有的话。我们只能按部就班的利用../来回跳转读取一些.ssh下的配置信息文件,读取mysql下的.bash_history文件。来查看是否记录了一些可以利用的相关信息。然后逐个下载我们需要审计的代码文件,但是下载的时候变得很繁琐,
1-4 常见利用文件
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd // 存用户名的
/etc/shadow // 存密码的
/etc/my.cnf //mysql配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数
1-5 漏洞修复
(1)过滤".",使用户在url中不能回溯上级目录 不能目录穿越 ../../
(2)正则严格判断用户输入参数的格式
(3)php.ini配置open_basedir限定文件访问范围
相关文章:
【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞
一,环境,工具准备 1-1 VMVare 16 虚拟机及下载安装(资源) 请参考以下博客安装(特详细):【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客【网络安…...
驱动开发day4(实现通过字符设备驱动的分布实现编写LED驱动,实现设备文件的绑定)
头文件(head.h) #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0x50006000 #define PHY_LED2_MODER 0x50007000 #define PHY_LED3_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED2_ODR 0x50007014 #define PHY_LE…...
《深入浅出.NET框架设计与实现》阅读笔记(一)
.NET CLI概述 命令说明dotnet add将包或引用添加到.NET项目中dotnet build构建.NET项目,并编译为IL二进制文件dotnet clean清理.NET项目的构建输出dotnet help显示命令行帮助dotnet list罗列项目中的yinyongdotnet publish发布项目,用于部署dotnet sln修…...
Flutter 类似onResume 监听,解决入场动画卡顿(2)
接着完善上一篇内容,上一篇我们是能监听到初次进入路由页面节点,往往还想监听从当前路由跳转到其他路由后,再返回到当前路由页面,上一篇内容就无法满足当前需求了,不过我们完全可以按照上一篇的原理实现这个需求。 直…...
rabbitmq-3.8.15集群、集群镜像模式安装部署
目录 一、环境 1、映射、域名、三墙 2、Erlang和socat安装(三台服务器都实行) 二、部署三台rabbitmq-3.8.15实例 1、rabbitmq官网下载地址 : 2、解压rabbitmq 3、添加系统变量 4、启动web插件、启动rabbitmq 5、在rabbitmq1上添加用…...
import导入顺序杂乱的问题
我们经常会遇到项目中的import语句顺序混乱的问题。这不仅会影响代码的可读性,还可能使我们代码在提交的时候产生不必要的冲突。 解决方案 eslint-plugin-import 开始我调研了一下eslint-plugin-import插件。这款插件的排序逻辑是这样: builtin: 这代…...
Hadoop3教程(二十六):(生产调优篇)NameNode核心参数配置与回收站的启用
文章目录 (143)NameNode内存配置(144)NN心跳并发配置(145)开启回收站参考文献 (143)NameNode内存配置 每个文件块(的元数据等)在内存中大概 占用150byte&…...
PaddleX场景实战:PP-TS在电压预测场景上的应用
时间序列是按照时间发生的先后顺序进行排列的数据点序列,简称时序。时间序列预测即运用历史的多维数据进行统计分析,推测出事物未来的发展趋势。时间序列预测是最常见的时序问题之一,在很多行业都有其应用,且通常时序预测效果对业…...
pdf误删恢复如何恢复?分享4种恢复方法!
如何将pdf误删恢复?使用电脑的时候,经常会需要使用到pdf文件,但是有时候,因为一些操作上的失误,我们会丢失一些重要的文件。如果你不小心将pdf误删了,该如何进行恢复呢? PDF文件丢失的原因可以…...
简析新能源汽车充电桩设计与应用
叶根胜 安科瑞电气股份有限公司 上海嘉定 201801 摘要:本文针对新能源汽车充电桩建设工作进行探究,采用案例分析法、文献查阅法,指出了新能源汽车充电桩建设存在的问题,阐述了充电桩建设与优化的对策。研究表明:目前…...
Java零基础入门-算术运算符
本文旨在帮助零基础的读者快速了解Java中的算术运算符,包括基本的加减乘除运算符、取余运算符、自增自减运算符等常见的数学运算符。 在学习本文前,需要先掌握基本的Java语法,包括数据类型、变量、赋值语句等。 前言 在编写Java程序时&…...
java实现hbase数据导出
1. HBase-client方式实现 1.1 依赖 <!--HBase依赖坐标--><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.2.6</version></dependency><dependency><group…...
Unity之ShaderGraph如何实现旋涡效果
前言 今天我们来通过ShaderGraph来实现一个旋涡的效果 如下图所示: 主要节点 Distance:返回输入 A 和输入 B 的值之间的欧几里德距离。除了其他方面的用途,这对于计算空间中两点之间的距离很有用,通常用于计算有符号距离函数 (…...
【分布式】: 幂等性和实现方式
【分布式】: 幂等性和实现方式 幂等(idempotent、idempotence)是一个数学与计算机学概念, 常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是…...
idea 设置serlvet 类模板(快捷生成servlet类)
我的版本是idea2020.3.4,博客中有相应安装教程,其他版本设置类似: 1.选择文件-->设置 2.选择编辑器-->文件和代码模板-->其他 3.选择Web-->Servlet Annotated Class.java-->复制相应模板,下面顺便设置了注释模板 …...
SpringBoot自动配置原理解析 | 京东物流技术团队
1: 什么是SpringBoot自动配置 首先介绍一下什么是SpringBoot,SpringBoost是基于Spring框架开发出来的功能更强大的Java程序开发框架,其最主要的特点是:能使程序开发者快速搭建一套开发环境。SpringBoot能将主流的开发框架(例如Sp…...
AOP 笔记
AOP【面向切面编程】 作用:在不惊动原始设计的基础上进行功能增强。 无侵入式编程 连接点:程序执行的任意位置,SpringAOP中,理解为方法的执行。 切入点:匹配连接点的式子,要追加功能的方法 通知(写在通…...
微信小程序导航退回及跳转 传参(navigateBack,navigateTo)
一、uniapp navigateBack 退回上一级 当前页面-传递参数 uni.$emit(update, params)uni.navigateBack({delta: 1});退回的页面-接收参数 可以写在 onLoad 和 onShow 里面 onLoad(o) {uni.$on(update, function(e) {//参数e}}onShow() {}返回前两级 uni.navigateBack({delta: 2}…...
python实例代码介绍python基础知识
TODO: 知识点仍有待整理 import 使用 import 关键字可以让你选择性地导入所需的模块,而不必导入整个模块库。这样可以减少内存占用和加载时间,尤其是当你只需要使用模块中的某些功能时。 同时,使用 import 可以提高代码的可读性和可维护性&…...
【每日一题】掷骰子等于目标和的方法数
文章目录 Tag题目来源题目解读解题思路方法一:动态规划 写在最后 Tag 【动态规划】【数组】 题目来源 1155. 掷骰子等于目标和的方法数 题目解读 你手里有 n 个一样的骰子,每个骰子都有 k 个面,分别标号 1 到 n。给定三个整数 n࿰…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
