什么是文件下载漏洞
一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞
攻击者可以下载服务器的任意文件,如配置文件等等,可用得到的代码进行进一步审计,扩大攻击危害
漏洞利用条件
-
存在读取文件的函数(存在文件下载功能,从 HTTP 流中接收文件名) -
读取的文件路径可控(无校验或校验可被绕过) -
最终输出文件内容
文件下载的方式
-
前端直接指定目录下载
<a href=”http://www.a.com/xxx.php”>下载</a>
-
使用 HTTP 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));
?>
常见的敏感文件
常见的三种敏感文件利用方式为以下三种:
-
信息搜集 -
下载配置文件 -
下载源码进行审计
Windows(服务器)常见敏感文件路径:
C:boot.ini //查看系统版本
C:WindowsSystem32inetsrvMetaBase.xml //IIS配置文件
C:Windowsrepairsam //存储系统初次安装的密码
C:Program Filesmysqlmy.ini //Mysql配置
C:Program Filesmysqldatamysqluser.MYD //Mysql root
C:Windowsphp.ini //php配置信息
C:Windowsmy.ini //Mysql配置信息
C:Windowswin.ini //Windows系统的一个基本系统配置文件
Linux 常见敏感文件路径:
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd
/etc/shadow
/usr/local/app/php5/lib/php.ini //PHP配置文件
/etc/my.cnf //mysql配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数
总结
文件下载的漏洞原理和利用方式较为简单,基本还是使用../
进行目录穿越,跳出程序本身的限制目录实现来下载任意文件,其重点依然在于绕过安全检测和定位敏感信息位置,以下是个人认为学习和参考的文章
-
WEB安全梳理-文件下载 -
浅析文件读取与下载漏洞
原文始发于微信公众号(天禧信安):【Pikachu 靶场精讲】Unsafe filedownload—前置知识
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论