Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >目录遍历+任意文件读取+任意文件下载

目录遍历+任意文件读取+任意文件下载

作者头像
vFREE
发布于 2021-12-20 13:09:12
发布于 2021-12-20 13:09:12
5K00
代码可运行
举报
文章被收录于专栏:博客原创文章博客原创文章
运行总次数:0
代码可运行
目录遍历漏洞

原理

目录遍历又称"路径遍历",由于web服务器配置错误导致网站的目录暴露可以被随意浏览,这种被称为"目录遍历"

危害

危害在于可以浏览一些本不该给用户看到的文件内容,比如一些数据库配置文件,网站源码等...

探测方法

谷歌语法:php intitle:index of 如果出现下面这样子的👇说明存在目录遍历漏洞

web服务器配置错误

IIS: 在控制面板 -->管理工具-->IIS管理器,网站->右键->属性->主目录,然后勾选目录浏览 修复方法:当然是取消勾选目录浏览 Apache: 打开httpd.conf,搜索"<Directory />"或者更加精准搜索"Options" 下图的Options后面有一个 +Indexes 说明有目录遍历漏洞

修复方法:去除+Indexes或者改成-Indexes

经测试,小皮面板如果在配置文件中存在Indexes的话,也不会被目录遍历,会显示403!!!

Nginx: 默认不开启目录遍历,如果发现存在,在nginx.conf删减掉"autoindex on;autoinxex_exact_size on",然后重启

任意文件读取/下载

原理

由于网站有下载文件的功能的业务需求,就会开放下载,如果服务端未对用户传入的参数做一个限制或者不对传入的参数进行检查限制的话,可能会导致网站的敏感文件被下载

危害

任意文件读取/下载的危害往往大于目录遍历漏洞,任意文件读取不仅会泄露网站的结构目录,一些敏感文件还会被通过构造特殊的字符结构下载下来,比如说../或者~/导致服务器的重要文件信息泄露,比如说../etc/passwd,../etc/shodan,~/bash_history等文件,或者下载脚本配置文件,网站文件进一步审计,得到危害更大的漏洞进一步利用

如何发现?

一般文件读取或者文件下载都会跟一个参数名在后面,比如说

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1/file.php?filename=xxx.txt

上面的txt就会被下载下来,但是如果即将xxx.txt换成其他的参数呢?比如说../etc/passwd

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1/file.php?filename=../../../../etc/passwd

如果服务端没有对用户传入的数据进行过滤的话,这个文件就会被输出,比如下面这样子👇

如果回显了这样子的界面,则代表该网站存在任意文件下载和读取

代码

以下代码均存在文件读取的危险,仅作示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
$file = $_GET['filename'];
readfile($file);
?>


<?php
$file = '1.txt';
print(file_get_contents($file));
?>

<?php
$file = '1.txt';
include $file;
?>

<?php
$file = '1.txt';
require $file;
?>

绕过

信息时代1202年,各种各样的花式waf层出不穷,有些waf是会检查用户传入的参数,也就是说如果在一个布置了waf的网站中,直接访问file.php?filename=../../../etc/passwd就会被拦截

1.编码绕过,有些网站也是会将文件名转成base64或者其他编码格式再去读取,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1/file.php?filename=aW5kZXgucGhw
// 对应index.php

通过编码后进行读取文件,如果要读取其他文件,同理,先编码,后传入

2.使用url编码代替.或者/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1/file.php?filename=.%2F.%2F.%2F.%2Fetc%2Fpasswd

使用%2F代替/ 或者二次编码(%25)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1/file.php?filename=.%252F.%252F.%252F.%252Fetc%2Fpasswd
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  %25%
  2F是/
  %252F会先解开%25,解开后是%,然后在拼接2F就会变成%2F=/

3.如果对文件名有限制,可以试着用%00截断

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1/file.php?filename=../../../1.php%00.jpg

%00截断对PHP的版本有要求:PHP<5.3.4

小"姿势"

如果filename=xxx.php的话,这类的是文件包含漏洞了 如果filename=xxx.txt或者其他文件名,文件直接显示的话,就是任意文件读取漏洞了 要区分清楚!!!

防御

  1. 对传入的文件名进行判断限制过滤
  2. 合理控制目录读取的权限
  3. 采用白名单读取文件
  4. 打开php.ini文件找到open_basedir,然后去掉前面的分号(;),在等于号(open_basedir=)后面写入限制读取的范围
  5. 过滤./ ~/等字符
  6. 将要下载的文件路径预先传入数据库,然后通过相应的id值下载,但是不要"捡了芝麻丢了西瓜",别忘了防注入

常见的URL格式和参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
download.php?file=
download.php?filename=
file.php?file=
filename.php?name=
readfile.php?filename=
file.php?url=
file.php?dirname=
file.php?f=
...

value:
&dir=
&name=
&dir_name=
&filename=
&path=
&filepath=
...

有营养的文件(抄的)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Windows:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    C:\boot.ini //查看系统版本

    C:\Windows\System32\inetsrv\MetaBase.xml          //IIS配置文件

    C:\Windows\repair\sam                                          //存储系统初次安装的密码

    C:\Program Files\mysql\my.ini                               //Mysql配置

    C:\Program Files\mysql\data\mysql\user.MYD     //Mysql root

    C:\Windows\php.ini              //php配置信息

    C:\Windows\my.ini             //Mysql配置信息

    C:\Windows\win.ini             //Windows系统的一个基本系统配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  Linux:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /root/.ssh/authorized_keys

    /root/.ssh/id_rsa

    /root/.ssh/id_ras.keystore

    /root/.ssh/known_hosts             //记录每个访问计算机用户的公钥

    /etc/passwd

    /etc/shadow

    /usr/local/app/php5/lib/php.ini                //PHP配置文件

    /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参数

注:部分图片源自于网络,如有侵权,请联系删除!!!谢谢

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WEB漏洞|目录浏览(目录遍历)漏洞和任意文件读取/下载漏洞
目录浏览漏洞是由于网站存在配置缺陷,导致网站目录可以被任意浏览,这会导致网站很多隐私文件与目录泄露,比如数据库备份文件、配置文件等,攻击者利用该信息可以为进一步入侵网站做准备。
谢公子
2022/01/13
16.2K0
WEB漏洞|目录浏览(目录遍历)漏洞和任意文件读取/下载漏洞
浅谈任意文件读取下载漏洞
介绍:一些网站由于业务需求,可能提供文件查看或下载功能。如果对用户查看或下载的文件不做限制,则恶意用户能够查看或下载任意文件,可以是源代码文件、敏感文件等。
字节脉搏实验室
2020/05/12
1.7K0
浅谈任意文件读取下载漏洞
任意文件下载/读取漏洞利用
字面意思理解,就是你能够读取任何 你有权限读取到的文件,但有一个最主要的问题就是,你不知道 文件名
Elapse
2020/08/17
4.8K0
【代码审计】任意文件读取漏洞实例
大多数网站都提供读取文件功能,一般实现过程是,根据参数filename的值,获得该文件在网站上的绝对路径,读取文件。 这里,通过两个任意文件读取漏洞实例去展示漏洞原理、漏洞危害。
Bypass
2019/07/08
1.4K0
【代码审计】任意文件读取漏洞实例
一文了解文件包含漏洞
例子_GET['filename']参数开发者没有经过严格的过滤,直接带入了include的函数攻击者可以修改_GET['filename']的值,执行非预期的操作
中龙技术
2022/09/29
1.6K0
一文了解文件包含漏洞
windows文件读取 xxe_XXE漏洞「建议收藏」
XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
全栈程序员站长
2022/08/25
2.7K0
Grafana 任意文件读取漏洞
Grafana是一个跨平台、开源的数据可视化网络应用程序平台。用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告。
Ms08067安全实验室
2021/12/20
3.7K0
Grafana 任意文件读取漏洞
【代码审计】QYKCMS后台任意文件上传、任意文件读取漏洞
青云客网站管理系统(QYKCMS)是青云客开发的一款基于PHP+MySql的轻量级智能建站系统。在T00ls看到两篇QYKCMS的代码审计文章,也下载了一套回来测试,发现了两个后台漏洞,并没有跟前面的漏洞重复,分享一下思路。
Bypass
2019/07/08
1.1K0
【代码审计】QYKCMS后台任意文件上传、任意文件读取漏洞
任意文件读取与下载的原理及修复
任意文件读取下载 由于一些网站的业务需要,往往需要提供文件读取或下载的一个模块,但如果没有对读取或下载做一个白名单或者限制,可能导致恶意攻击者读取下载一些敏感信息(etc/passwd 等),对服务器做下一步的进攻与威胁。
物联网安全小编
2020/03/12
7.9K0
任意文件下载引发的思考
最近在一次渗透测试中遇到了任意文件下载漏洞,正常的利用手段是下载服务器文件,如脚本代码,服务器配置或者是系统配置等等。但是有的时候我们可能根本不知道网站所处的环境,以及网站的路径,这时候我们只能利用../来逐层猜测路径,让漏洞利用变得繁琐。笔者在对此漏洞学习回炉重造的过程中,对此漏洞进行了细致的整理,希望为大家的学习提供一些帮助,和思路。另外如果有不足之处希望大家可以进一步补充。 漏洞介绍: 一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或
ChaMd5安全团队
2018/03/29
1.5K0
任意文件下载引发的思考
PHP一些常见的漏洞梳理
以下主要是近期对php一些常见漏洞的梳理,包含php文件包含、php反序列化漏洞以及php伪协议。其中 :
天钧
2020/09/14
4.8K0
PHP一些常见的漏洞梳理
【Pikachu】File Inclusion(文件包含漏洞)
文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。
菜菜有点菜
2022/03/17
1.2K0
【Pikachu】File Inclusion(文件包含漏洞)
[批量检测工具] Grafana plugins 任意文件读取
因为网上已经有师傅写过单个poc,所以在这里直接加上以前的多线程,可以批量测试漏洞:
公众号爱国小白帽
2021/12/09
9390
[批量检测工具] Grafana plugins 任意文件读取
任意文件读取漏洞的曲折历程
这周授权测试了某系统,凭借着一个任意文件读取的漏洞,不断深挖,一波三折,历时将近24小时,也和Tide安全的小伙伴不断讨论,最终拿下目标的webshell。过程简直不要太美、太狗血,在此做个整理。
FB客服
2020/03/25
1.6K0
任意文件读取漏洞的曲折历程
任意文件包含漏洞(1)
文件包含漏洞:即file inclusion 指当服务器开启allow_url_include选项时,就可以通过PHP的某些特性函数(include(),require()和include_once(),requir_once()),去包含任意文件。此时如果对文件来源不严格过滤审查,就容易包含恶意文件。而攻击者可以通过构造这个恶意文件来达到目的。
宸寰客
2020/08/25
1.3K0
任意文件包含漏洞(1)
干货 | 一文了解文件包含漏洞
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途。
网络安全自修室
2022/03/30
2.1K0
干货 | 一文了解文件包含漏洞
【Pikachu】不安全的文件下载
由于一些网站的业务 需要往往需要提供文件读取或下载的一个模块,但如果没有对读取或下载做一个白名 单或者限制,可能导致恶意攻击者读取下载一些敏感信息(etc/passwd等),对服务器做下一步的进攻与威 胁。
菜菜有点菜
2022/03/17
6200
【Pikachu】不安全的文件下载
wordpress 任意文件下载 漏洞
WordPress 1.5.1 之前的 Zip 附件插件中的 download.php 中的目录遍历漏洞允许远程攻击者通过 za_file 参数中的 ..(点点)读取任意文件。
Khan安全团队
2021/10/17
1.3K0
CSS-T | Mysql Client 任意文件读取攻击链拓展
这应该是一个很早以前就爆出来的漏洞,而我见到的时候是在TCTF2018 final线下赛的比赛中,是被 Dragon Sector 和 Cykor 用来非预期h4x0r's club这题的一个技巧。
Seebug漏洞平台
2020/02/13
1.5K0
目录遍历漏洞
  目录遍历(路径遍历)是由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使web根目录以外的文件),甚至执行系统命令。
LuckySec
2022/11/02
2.8K0
相关推荐
WEB漏洞|目录浏览(目录遍历)漏洞和任意文件读取/下载漏洞
更多 >
LV.1
这个人很懒,什么都没有留下~
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入架构与运维学习入门群
系统架构设计入门 运维体系构建指南
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档