zoukankan      html  css  js  c++  java
  • 1.3 任意文件查看与下载漏洞

    任意文件查看与下载漏洞

    漏洞介绍

    一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件
    不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞

    利用条件

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

    漏洞危害

    下载服务器任意文件,如脚本代码、服务及系统配置文件等
    可用得到的代码进一步代码审计,得到更多可利用漏洞

    任意文件读取

    代码形式可如下几种:
    <?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);
     
        echo $data;
    ?>
     
    <?php
        $filename = "test.txt";
        echo file_get_contents($filename);
    ?>

     

    任意文件下载

    直接下载:
    <a href="http://www.xx.com/a.zip">Download</a>
    用header()下载:
    <?php
        $filename = "uploads/201607141437284653.jpg";
     
        header('Content-Type: imgage/jpeg');
        header('Content-Disposition: attachment; filename='.$filename);
        header('Content-Lengh: '.filesize($filename));
    ?>

    漏洞利用代码

    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?filename="
    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=
        • &dis=
        • &data=
        • &readfile=
        • &filep=
        • &src=
        • &menu=
        • META-INF
        • WEB-INF

    敏感文件如下

    Windows:
     
       C:oot.ini  //查看系统版本
       C:WindowsSystem32inetsrvMetaBase.xml  //IIS配置文件
       C:Windows epairsam  //存储系统初次安装的密码
       C:Program Filesmysqlmy.ini  //Mysql配置
       C:Program Filesmysqldatamysqluser.MYD  //Mysql root
       C:Windowsphp.ini  //php配置信息
       C:Windowsmy.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_history
       /proc/self/fd/fd[0-9]*(文件标识符)
       /proc/mounts
       /porc/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限定文件访问范围
     
  • 相关阅读:
    窗口显示于parent控件上
    DELPHI SOCKET 通信编程要点小结
    dxBarManagerToDxNavBar方法
    DLL直接返回对象
    海量数据库的查询优化及分页算法方案
    excel怎么只打印某页?excel怎么只打印某几页
    HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析
    excel中如何设置只打印第一页
    Navicat Premium 常用功能讲解
    laravel查询构造器DB还是ORM,这两者有什么区别,各该用在什么场景中
  • 原文地址:https://www.cnblogs.com/bmjoker/p/8970022.html
Copyright © 2011-2022 走看看