7、任意文件读取与下载

7 任意文件读取与下载

7.1 概念

      对用户查看或下载的文件不做限制,就能够查看或下载任意的文件,可能是源代码文件、敏感文件等。

7.2 产生原因与危害

产生原因

      ·存读取文件的函数

      ·读取文件的路径用户可控,且未校验或校验不严

      ·输出了文件内容

漏洞危害

      ·下载服务器任意文件。包含脚本代码、系统敏感文件;

·可配合其他类型漏洞进一步攻击

·进一步代码审计,查找更多可利用代码

任意文件读取

<?php            

$filename=”test.txt”;

readfile($filename);

?>

<?php

$filename=”test.txt”;

Echo fiile_get_contents($filename);

?>

文件读取函数:readfile()、file_get_contents()、fopen()中,$filename没有经过校验或者校验不合格,用户可控制变量读取任意文件,如/etc/passwd、./index.php。

文件下载方式

      ·直接下载

      ·<a href=”http://www.a.com/ccc.rar”>下载</a>

在上述代码中,$filename 没有经过校验,或者校验不合格,用户可以控制这个变量读取

任意的文件,比如/etc/passwd、../index.php等等。这样就造成了任意文件下载漏洞

7.3 挖掘与验证

漏洞挖掘

      1.web漏洞扫描器(awvs、appscan、openvas、nessus)

      2.手动挖掘从连接和参数名查看

连接:readfile.php?file=**.txt、download.php?file=**.rar

参数名:&readpath=、&filepath=、&path=、&inputfile=、&url=、&data=、&readfile=、&menu=、META-INF= 、WEB-INF

漏洞验证

      • Index.php?f=../../../../../../../../etc/passwd

• Index.php?f=../index.php

• Index.php?f=file:///etc/passwd

参数f的参数值为PHP文件时:

      1.文件被解析,则是文件包含漏洞

      2.显示源代码,则是文件查看漏洞

      3.提示下载,则是文件下载漏洞

7.4 漏洞修复方案

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

• 正则严格判断用户输入的参数

• Php.ini配置open_basedir限定文件访问范围

原文地址:https://www.cnblogs.com/guike/p/11188529.html