【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞

news2025/1/15 3:21:13

一,环境,工具准备

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.coloradmin.cn/o/1127518.html

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

相关文章

vue2vue3--render函数(h)

目录 h函数 方法1. 在Options API中的使用 方法2. 在Composition API中的使用 Vue 2中的渲染函数 ​基础​ vue2 vue3 vue3--声明渲染函数 节点、树以及虚拟 DOM ​虚拟 DOM​ createElement 参数 深入数据对象 约束 vue2 vue3 使用 JavaScript 代替模板功能…

使用cpolar内网穿透实现远程Stackedit Markdown编辑器

文章目录 1. docker部署Stackedit2. 本地访问3. Linux 安装cpolar4. 配置Stackedit公网访问地址5. 公网远程访问Stackedit6. 固定Stackedit公网地址 StackEdit是一个受欢迎的Markdown编辑器,在GitHub上拥有20.7k Star!,它支持将Markdown笔记保…

库克嘴上说着共赢,实际却是降低中国制造占比,外媒:真是老狐狸

近期库克再度访华,在成都的苹果线下零售店与消费者密切互动,参观立讯精密并表示与中国制造合作共赢,然而日本媒体拆解iPhone15却撕下了苹果的遮羞布,库克真的是老狐狸。 一直以来,苹果CEO库克都积极向中国消费者释放善…

《java核心卷Ⅰ》知识点总结(可作面试题)

🛫 JDK和JRE傻傻分不清?🛫 HelloWorld的输出都经历了啥?🛫 Java的三个版本都是啥?🛫 关于main方法你都知道啥?main方法被声明为private会怎样?🛫 强制and自动类型转换都…

使用whatweb和python批量获取指纹信息

该程序去除了whatweb输出的一些乱码 import sys import os from pathlib import Path if __name__ "__main__":type sys.stdout.encoding file1Path("out.txt")if file1.is_file():os.remove("out.txt")os.system("whatweb -i url.txt -…

Flutter页面滑动回调处理解决方法

文章目录 TabBarViewTabBarView简介TabBarView详细介绍 TabBarView滑动时如何处理事务例子 PageControllerPageController介绍PageController 的详细介绍 TabBarView TabBarView简介 TabBarView 是 Flutter 中的一个用于显示选项卡视图的小部件。它通常与 TabBar 一起使用&am…

Vue 实战项目(智慧商城项目): 完整的订单购物管理功能 内涵资源代码 基于Vant组件库 Vuex态管理 基于企业级项目开发规范

鹏鹏老师的实战开发项目 智慧商城项目 接口文档:安全问题(需要私信即可) 演示地址:跳转项目地址 01. 项目功能演示 1.明确功能模块 启动准备好的代码,演示移动端面经内容,明确功能模块 在这里插入图…

腾讯云SSH连接不上的一个解决办法

最近在购买完腾讯云服务器后Xshell登录时老是报出Connection failed问题,最后发现问题所在。 解决方法 本人购买的是校园套餐中的轻量应用服务器2核2G,购买完以后打开控制台 在轻量级云服务器中找到自己购买的云服务器后,重置密码&#xff0…

【JavaEE初阶】 CAS详解

文章目录 🌲什么是 CAS🚩CAS伪代码 🎋CAS 是怎么实现的🌳CAS的应用🚩实现原子类🚩实现自旋锁 🎄CAS 的 ABA 问题🚩什么是 ABA 问题🚩ABA 问题引来的 BUG🚩解决…

Spring Boot实战 | 如何整合高性能数据库连接池HikariCP

专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https:/…

MySql第三篇---索引的创建与设计原则

文章目录 MySql第三篇---索引的创建与设计原则索引的声明与使用索引的分类创建索引在已经存在的表上创建索引删除索引 索引的设计原则哪些情况适合创建索引?限制索引的数目哪些情况不适合创建索引? 小结 MySql第三篇—索引的创建与设计原则 索引的声明与…

如何安装Ubuntu20.04(详细图文教程

目录 一.简介 二、需要资源 三、window设置 1、分区 2、启动盘制作 四、ubuntu安装 一.简介 Linux是一种自由和开放源代码的操作系统内核,被广泛应用于各种计算机系统中。它以稳定性、安全性和灵活性而闻名,并成为服务器、嵌入式设备和个人计算机…

如何用BCompare打增量包

一、基本描述 增量包:工程项目中的文件随着开发、更新、迭代过程,更新、修改了部分文件,没必要将所有的文件都更新时,只打包更新、修改了的这部分文件,这样的一个文件包称为增量包。 二、使用场景 在某个大的版本re…

ranger的只读(read)权限引起的

开发人员只要只读权限 在rang中只给了read的权限 ranger的read和select的权限区别 read 权限: read 权限允许用户读取(查看)文件或目录的内容。 具有 read 权限的用户可以查看文件的内容,读取目录中的文件列表和元数据&#xf…

你真的了解黑客吗?

前言:本文旨在介绍国内外黑客的发展历史,以及作为一名黑客所需的素质和原则 目录 一.黑客概述 二.黑客分类 三.国外黑客的历史 上世纪60年代初 上世纪80年代初 上世纪80年代末 上世纪90年代早期 上世纪90年代末期 2000年后 四.中国黑客的历史 …

【PythonRS】Rasterio库安装+基础函数使用教程

Rasterio是一个Python库,专门用于栅格数据的读写操作。它支持多种栅格数据格式,如GeoTIFF、ENVI和HDF5,为处理和分析栅格数据提供了强大的工具。RasterIO适用于各种栅格数据应用,如卫星遥感、地图制作等。通过RasterIO&#xff0c…

每日一题 1155. 掷骰子等于目标和的方法数(中等,动态规划,前缀和)

涉及到从 n-1 个骰子到 n 个骰子的状态转移,显然用动态规划做对于一共 i 个骰子所能投出来的数字之和为 t 的情况,我们用 dp[i][t] 表示,显然 dp[i][t] Σdp[i - 1][t - j],其中 j 从 1 到 k。所以对于每一个骰子我们需要 O(targ…

【C++心愿便利店】No.10---C++之模板

文章目录 前言一、泛型编程二、函数模板三、类模板 前言 👧个人主页:小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专栏:C 心愿便利店 🔑本章内容:函数模板、类模…

Delete `␍`eslintprettier/prettier

将CRLF改为LF 然后就消失了 除此之外,也可以修改git全局配置 git config --global core.autocrlf false

ChatGPT 入门指南:与 AI 进行愉快互动的秘诀大揭秘!

ChatGPT 入门指南:与 AI 进行愉快互动的秘诀大揭秘! 嗨!大家好,我是你们的互联网好友,今天我要给大家带来一份特别的礼物——《ChatGPT 入门指南》!是不是很期待呢?那就跟我一起来揭开与人工智能…