0x00写在前面

上周参加了一个线上赛。有个Web题的WriteUp说是任意文件下载。由于之前没学过,所以就没有想到。现在学习一下

0x01为什么产生任意文件读取与下载漏洞

一些网站的业务需要,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,就能够查看或下载任意的文件,可以是源文件,敏感文件等等。

0x02任意文件读取漏洞

任意文件读取是属于文件操作漏洞的一种,一般任意文件读取漏洞可以读取配置信息甚至系统重要文件。严重的话,就可能导致SSRF,进而漫游至内网。
漏洞产生原因

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

任意文件读取

<?php
$filename=”test.txt”;
readfile($filename);
?>
<?php
$filename=”test.txt”;
echo file_get_contents($filename);
?>

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

0x03任意文件下载漏洞

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

  • 有读取文件的函数
  • 读物文件的路径用户可控,且没有经过校验,或者校验不严格
  • 输出文件内容
  • 一个正常的网站,存在一个下载文件的功能,同时还会从浏览器接收文件名字

文件下载的两种方式
1、直接下载:

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

2、增加header头

<?php
    $filename = $_GET['filename'];
    echo '<h1>开始下载文件</h1><br /><br />';
    echo file_get_contents($filename);

    header('Content-Type: imgage/jpeg');
    header('Content-Disposition: attachment; filename='.$filename);
    header('Content-Lengh: '.filesize($filename));
?>

漏洞利用方式


利用思路

  • 下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置
  • 下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前辈们的后门。
  • 下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。

尝试读取/root/.bash_history看自己是否具有root权限。
如果没有,就只能利用../来回跳转读取一些.ssh下的配置信息文件。

点击收藏 | 3 关注 | 2
  • 动动手指,沙发就是你的了!
登录 后跟帖