【网络安全 --- 任意文件下载漏洞(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限定文件访问范围

 

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

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

相关文章

Linux ln命令:建立链接文件

如果要想说清楚 ln 命令,则必须先解释下 ext 文件系统(Linux 文件系统)是如何工作的。我们在前面讲解了分区的格式化就是写入文件系统,而我们的 Linux 目前使用的是 ext4 文件系统。如果用一张示意图来描述 ext4 文件系统。 ext4 …

解决eslint与prettier在代码格式上的冲突

eslint与prettier在代码格式上的冲突 因为eslint本身也具备对代码格式的控制与检查能力,所以不可避免可能会与prettier的代码格式冲突,比如eslint配置rules中对缩进的要求为2并在不满足时报错。 解决方案很简单——思路就是把prettier的规则复写进esli…

无需编程,小白也能建立个人网站

想要搭建一个属于自己的网站,但又不懂编程?别担心,现在有一个简单的方法可以帮助你轻松实现这个愿望。只需要几个简单的步骤,就可以让小白也能搭建出一个漂亮的网站。 首先,登录乔拓云账号,点击网站搭建进入…

2-多媒体数据压缩国际标准

文章目录 多媒体数据压缩编码的重要性和分类为什么要压缩?计算: 未压缩音频的数据率简答: 环绕声系统-作业题9(简述7.4.3全景声)计算: 未压缩图像的数据量-作业题10(估计尺寸及容量)计算: 未压缩视频的数据率 为什么能压缩?数据压缩编码的两大类无损压缩算法: LZ77-作业题6-(…

大数据Doris(十三):创建用户和创建数据库并赋予权限

文章目录 创建用户和创建数据库并赋予权限 一、创建用户

css-渐变色矩形

效果图&#xff1a; 代码&#xff1a; html: <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"initial-scale1.0, user-scalableno" /><title></title><link …

c++复合数据类型

文章目录 复合数据类型数组 复合数据类型 数组 数据类型 数组名[元素个数] #include<iostream>using namespace std;int main() {const int n 3;// 元素个数必须为常量double ls[n];//初始化int ls1[2] {1, 2};float ls2[] {1.2, 3.1, 5.2, 6.6};short ls3[5] {3,…

【多线程面试题 六】、 如何实现线程同步?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; 如何实现线程同步&…

吃豆人C语言开发—Day2 需求分析 流程图 原型图

目录 需求分析 流程图 原型图 主菜单&#xff1a; 设置界面&#xff1a; 地图选择&#xff1a; 游戏界面&#xff1a; 收集完成提示&#xff1a; 游戏胜利界面&#xff1a; 游戏失败界面 死亡提示&#xff1a; 这个项目是我和朋友们一起开发的&#xff0c;在此声明一下…

MFC知识点

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

Linux cp命令:复制文件和目录

cp 命令&#xff0c;主要用来复制文件和目录&#xff0c;同时借助某些选项&#xff0c;还可以实现复制整个目录&#xff0c;以及比对两文件的新旧而予以升级等功能。 cp 命令的基本格式如下&#xff1a; [rootlocalhost ~]# cp [选项] 源文件 目标文件 选项&#xff1a; -a&…

归并排序(java)

大家好我是苏麟 , 今天说说归并排序 . 归并排序 递归 正式学习归并排序之前&#xff0c;我们得先学习一下递归算法。 定义&#xff1a; 定义方法时&#xff0c;在方法内部调用方法本身&#xff0c;称之为递归. public void show(){System.out.println("aaaa")…

el-select 、el-option 常见用法

<template> <div> // 可以多选 // 添加小叉&#xff0c;点击清空选择器 <el-select v-model"selectedValue" multiple disabled clearable filterable > <el-option …

JavaScript_Pig Game切换当前玩家

const current0El document.getElementById(current--0); const current1El document.getElementById(current--1); if (dice ! 1) {currentScore dice;current0El.textContent currentScore;} else {} });这是我们上个文章写的代码&#xff0c;这个代码明显是有问题的&…

Spring Boot进阶(93):体验式教程:手把手教你整合Spring Boot和Zipkin

&#x1f4e3;前言 分布式系统开发中&#xff0c;服务治理是一个比较重要的问题。为了更好地实现服务治理&#xff0c;需要解决服务跟踪问题&#xff0c;即如何对分布式系统中的服务进行监控和追踪。本文将介绍如何使用Zipkin进行服务跟踪&#xff0c;并结合Spring Boot进行整合…

STM32F4X SDIO(一) SD卡介绍

STM32F4X SDIO&#xff08;一&#xff09; SD卡介绍 SD卡分类外观分类容量分类传输速度分类 在之前的章节中&#xff0c;讲过有关嵌入式的存储设备&#xff0c;有用I2C驱动的EEPROM、SPI驱动的FLASH和MCU内部的FLASH&#xff0c;这类存储设备的优点是操作简单&#xff0c;但是缺…

指针仪表读数YOLOV8NANO

指针仪表读数YOLOV8 NANO 采用YOLOV8 NANO训练&#xff0c;标记&#xff0c;然后判断角度&#xff0c;得出角度&#xff0c;可以通过角度&#xff0c;换算成数据

A星算法(A* A Star algorithm)原理以及代码实例,超详细,超简单,大白话谁都能看懂

本文以这篇博主的文章为基础【精选】A*算法&#xff08;超级详细讲解&#xff0c;附有举例的详细手写步骤&#xff09;-CSDN博客 这篇文章的博主做了一个UI界面&#xff0c;但我感觉&#xff0c;这样对新手关注算法和代码本身反而不利&#xff0c;会被界面的代码所干扰。所以笔…

程序模拟(Concurrency Simulator, ACM/ICPC World Finals 1991, UVa210)rust解法

你的任务是模拟n个程序&#xff08;按输入顺序编号为1&#xff5e;n&#xff09;的并行执行。每个程序包含不超过25条语句&#xff0c;格式一共有5种&#xff1a;var constant&#xff08;赋值&#xff09;&#xff1b;print var&#xff08;打印&#xff09;&#xff1b;lock…