当前位置: 首页 > news >正文

【网络安全 --- 任意文件下载漏洞(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.lryc.cn/news/205373.html

相关文章:

  • 驱动开发day4(实现通过字符设备驱动的分布实现编写LED驱动,实现设备文件的绑定)
  • 《深入浅出.NET框架设计与实现》阅读笔记(一)
  • Flutter 类似onResume 监听,解决入场动画卡顿(2)
  • rabbitmq-3.8.15集群、集群镜像模式安装部署
  • import导入顺序杂乱的问题
  • Hadoop3教程(二十六):(生产调优篇)NameNode核心参数配置与回收站的启用
  • PaddleX场景实战:PP-TS在电压预测场景上的应用
  • pdf误删恢复如何恢复?分享4种恢复方法!
  • 简析新能源汽车充电桩设计与应用
  • Java零基础入门-算术运算符
  • java实现hbase数据导出
  • Unity之ShaderGraph如何实现旋涡效果
  • 【分布式】: 幂等性和实现方式
  • idea 设置serlvet 类模板(快捷生成servlet类)
  • SpringBoot自动配置原理解析 | 京东物流技术团队
  • AOP 笔记
  • 微信小程序导航退回及跳转 传参(navigateBack,navigateTo)
  • python实例代码介绍python基础知识
  • 【每日一题】掷骰子等于目标和的方法数
  • 霸王条款惹品牌争议,京东双11站在商家对立面?
  • 深度神经网络为何成功?其中的过程、思想和关键主张选择
  • 什么是服务器节点?
  • 水电站与数据可视化:洞察未来能源趋势的窗口
  • Mac运行Docker报错
  • 代码 $(“.btn“).click(function(){ 和代码 $(document).ready(function() 有啥区别?
  • 【nodejs脚本】为文件夹中的所有node项目执行命令 npm install 并收集error日志
  • 非父子组件通信-发布订阅模式
  • iPhone手机分辨率整理
  • 【linux】SourceForge 开源软件开发平台和仓库
  • LabVIEW应用开发——控件的使用(四)