博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11.任意文件查看与下载漏洞
阅读量:7071 次
发布时间:2019-06-28

本文共 2381 字,大约阅读时间需要 7 分钟。

漏洞介绍

一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户

就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。

 利用条件

*存在读文件的函数

*读取文件的路径用户可控且未校验或校验不严
*输出了文件内容

 漏洞危害

下载服务器任意文件,如脚本代码,服务及系统配置文件等

可用得到的代码进一步代码审计,得到更多可利用漏洞

 任意文件读取

代码形式如下几种:

<?php
  $filename = "test.txt";
  readfile($filename); ?>
<?php
  $filename = "test.txt";
  $fp = fopen($filename,"r") or die("Unable to open file!");
  $data = fread($fp,filesize($filename));
  fclose($fp);
?>
<?php
  $filename = "test.txt";
  echo file_get_contents($filename);
?>
<?php
  $filename = $_GET['f'];
  echo file_get_contents($filename);
?>
###$filename没有经过校验,或者校验不严格,用户可控制这个变量读取任意的文件。比如:/etc/passwd,
./index.php等等

 任意文件下载

直接下载:

<a href=“http://www.xxxx.com/xxx.rar”>??</a>

用header()下载:

<?php   

  $filename = $_GET['f'];

  header('Content-Type:image/gif');
  header('Content-Disposition: attachment; filename='.$filename);
  header('Content-Length: '.filesize($filename));
  readfile($filename); ?>
###$filename没有经过校验,或者校验不严格,用户可控制这个变量读取任意的文件。比如:/etc/passwd,
./index.php等等

 漏洞利用代码

readfile.php?file=/etc/passwd

readfile.php?file=../../../../../../../../etc/passwd
readfile.php?file=../../../../../../../../etc/passwd%00

 Google search

inurl:"readfile.php?file="

inurl:"read.php?file="
inurl:"download.php?file="
inurl:"down.php?file="

 漏洞挖掘

 

可以用Google hacking或web漏洞扫描器

从链接上看,形如:
  readfile.php?file=***.txt
  download.php?file=***.rar
从参数名看,形如:
  &RealPath=
  &FilePath=
  &filepath=
  &Path=
  &path=
  &inputFile=
  &url=
  &urls=
  &Lang=
  &data=
  &readfile=
  &filep=
  &src=
  &menu=
  META-INF  
  WEB-INF

 

 敏感文件

Windows:

  C:\boot.ini
  C:\Windows\System32\inetsrv\MetaBase.xml
  C:\Windows\repair\sam //存储系统初次安装的密码
  C:\Program Files\mysql\my.ini //Mysql配置
  C:\Program Fiels\mysql\data\mysql\user.MYD //Mysql root
  C:\Windows\php.ini //php配置信息
  C:\Winsows\my.ini //mysql配置信息
Linux:
  /root/.ssh/authorized_keys
  /root/.ssh/id_rsa
  /root/.ssh/id_ras.keystore
  /root/.ssh/known_hosts
  /etc/passwd
  /etc/shadow
  /etc/my.cnf
  /etc/httpd/conf/httpd.conf
  /root/.bash_history
  /root/.mysql_hstory
  /proc/self/fd/fd[0-9]*(文件标识符)
  /proc/mounts
  /proc/config.gz

 漏洞验证

index.php?f=../../../../../../../etc/passwd

index.php?f=../index.php
index.php?f=file:///etc/passwd
注:当参数f的参数值为php文件时,若是文件被解析则是文件包含漏洞,
  若显示源码或提示下载则是文件查看与下载漏洞

 修复方案

过滤点(.)使用户在url中不能回溯上级目录

正则严格判断用户输入参数的格式
php.ini 配置open_basedir限定文件访问范围

 

转载于:https://www.cnblogs.com/Time-dog/p/5810770.html

你可能感兴趣的文章
纯 Java 开发 WebService 调用测试工具(wsCaller.jar)
查看>>
【Unity Shader】五、Shader纹理映射,及纹理的缩放和偏移
查看>>
Percona XtraBackup 实现全备&增量备份与恢复【转】
查看>>
这样做,导出Xmanager会话文件不是难事!
查看>>
PS如何批量生成缩略图(方法可以通用其他重复劳动)
查看>>
详解CSS display:inline-block的应用
查看>>
MySQL Workbench关键字转成小写设置
查看>>
[转]如何写出线程安全的类和函数
查看>>
将手机替换为*号
查看>>
加密算法(对称加密)AES、DES (非对称加密)RSA、DSA
查看>>
【Dalston】【第六章】API服务网关(Zuul) 下
查看>>
Windows上SSH服务器的配置以及客户端的连接
查看>>
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
查看>>
I.MX6 android 4.2 源码下载
查看>>
md5sum 生成 经md5加密后的字符串
查看>>
PowerShell应用之-批量执行SQL脚本
查看>>
职场加薪步步高升的五大法则
查看>>
增删主键及修改表名
查看>>
Gson库使用-排序字段(ExclusionStrategy)或者修改(FieldNamingStrategy)字段
查看>>
[医疗]DICOM VR数据类型表
查看>>