任意文件下载漏洞

任意文件下载漏洞

一、任意文件下载漏洞概要

由于业务需求,网站提供文件查看或下载功能,如果对用户查看或下载的文件不做限制,则恶意用户能够查看或下载任意文件,可以是源代码、敏感文件等。攻击者可以读取下载服务器中的配置文件、敏感文件等,会提供攻击者更多可用信息,提高被入侵的风险。

二、任意文件下载漏洞利用条件

  • 存在读文件的函数

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

  • 输出了文件内容

三、任意文件下载漏洞案例

1、PHP源码中的问题

1
2
3
4
5
6
7
8
<?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));
?>

2、超链接

网站URL中存在下载参数,并且未进行过滤../../字符,且输出了文件内容。

从链接上看,形如:

  • download.php?path=

  • download.php?file=

  • down.php?file=

  • data.php?file=

  • readfile.php?file=

  • read.php?filename=

利用Hacker语法查找相关url链接:inurl:"readfile.php?file="

3、数据包参数

从数据包里的参数名看,形如:

  • FilePath=
  • fifilepath=
  • path=
  • inputFile=
  • url=
  • data=
  • readfifile=
  • src=

4、Nginx目录遍历

漏洞简介:
和Apache目录遍历一样属于配置错误,可导致源码泄露与目录遍历
漏洞复现:
访问test目录
img
核心配置:
修改/usr/local/nginx/conf/nginx.conf,在如下图位置添加autoindex on,默认是没有这一行的
img
然后访问test目录,成功实现目录遍历
img
修复方法:
autoindex on改为autoindex off

5、Nginx目录穿越

漏洞简介:
Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞
配置不当:
在如下配置中设置目录别名时/test配置为/home/的别名,那么当我们访问/test../时,nginx实际处理的路径时/home/../,从而实现了穿越目录
img
漏洞复现:
img
修复方法:
Nginx配置文件中的/test改为/test/(闭合)

四、任意文件下载漏洞的利用

常规思路

1、下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置

2、下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前人后门。

3、下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。

不同操作系统的思路

1、Windows

C:\boot.ini//查看系统版本
C:\Windows\repair\sam//存储系统初次安装的密码
C:\Program Files\mysqlmy.ini//Mysql配置
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini//Mysql配置信息
C:\Windows\System32\inetsrvMetaBase.xml//1S配置文件
C:\VProgram Files\mysqNdata\mysql\user.MYD//Mysql root
C:\Windows\win.ini//Windows系统的一个基本系统配置文件

2、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//mysql配置文件
/etc/httpd/conf/httpd.conf//apache配置文件
/root/.bash_history//用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/porc/config.gz//内核配置文件

附加:Linux下root可以下载/var/lib/mlocate/mlocate.db数据库,通过 locate mlocate.db root命令可以获得所有root的文件列表。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器