任意文件下载漏洞知识点

Posted 水中煮鱼冒气

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了任意文件下载漏洞知识点相关的知识,希望对你有一定的参考价值。

资料下载

点击 下载

https://download.csdn.net/download/qq_41901122/18467497

任意文件下载

漏洞描述

文件下载处由于未对下载路径进行过滤,利用路径回溯符…/跳出程序本身的限制目录实现来下载任意文件,如下载系统密码文件等!

利用条件

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

漏洞危害

  • 可以下载服务器的任意文件,web业务的代码,服务器和系统的具体配置信息,也可以下载数据库的配置信息,以及对内网的信息探测等等。
  • 可用得到的代码进一步代码审计,得到更多可利用漏洞
  • 任意文件下载漏洞的利用主要是为了信息收集,我们通过对服务器配置文件的下载,获取到大量的配置信息、源码,从而根据获取的信息来进一步挖掘服务器漏洞从而入侵。

漏洞发现

  • 网站URL中存在下载参数,并且未进行过滤…/…/…/字符,且输出了文件内容
链接上
download.php?path=
download.php?file=
down.php?file=
data.php?file=
readfile.php?file=
read.php?filename=
参数上
&RealPath=
&FilePath=
&filepath=
&Filepath=
&Path=
&path=
&inputFile=
&Inputfile=
&url=
&urls=
&Lang=
&dis=
&data=
&Data=
&readfile=
&filep=
&src=
&menu=
META-INF
WEB-INF
案例
  • 任意文件下载漏洞,正常的利用手段是下载服务器文件,如脚本代码,服务器配置或者是系统配置等等。
  • 但是有的时候我们可能根本不知道网站所处的环境,以及网站的路径,这时候我们只能利用./ …/来逐层猜测路径,让漏洞利用变得繁琐
  • 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(如…/…/…/etc/passwd),则很有可能会直接将该指定的文件下载下来。从而导致后台敏感信息(密码文件、源代码等)被下载。
index.php?f=../../../../../../etc/passwd
index.php?f=../index.php
index.php?f=file:///etc/passwd
readfile.php?file=/etc/passwd
readfile.php?file=../../../../../../../../etc/passwd
readfile.php?file=../../../../../../../../etc/passwd%00(00截断)

注:

  • 当参数f的参数值为php文件时,若是文件被解析则是文件包含漏洞
  • 显示源代码,则是文件查看漏洞
  • 提示下载,则是文件下载漏洞

漏洞利用

利用原理
  • (信息收集信息>猜路径 >>下载配置文件/代码文件 >> 利用服务器软件漏洞> shell> 提权)
  • 任意文件下载漏洞的利用主要是为了信息收集,我们通过对服务器配置文件的下载,获取到大量的配置信息、源码,从而根据获取的信息来进一步挖掘服务器漏洞从而入侵。
  • 下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置
  • 下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前辈们的后门。
  • 下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器
windows路径
C:\\boot.ini //查看系统版本
C:\\Windows\\System32\\inetsrv\\MetaBase.xml //IIS配置文件
C:\\Windows\\repair\\sam //存储系统初次安装的密码                   C:\\Program Files\\mysql\\my.ini //Mysql配置                     C:\\Program Files\\mysql\\data\\mysql\\user.MYD //Mysql root
C:\\Windows\\php.ini   //php配置信息
C:\\Windows\\my.ini    //Mysql配置信息
C:\\Windows\\win.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参数

修复建议

  • 对下载路径进行过滤,如下载前对传入的参数进行过滤,并且对下载文件类型进行检查,是否是允许下载的类型

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

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

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

摘抄


很多语言都是假的,

只有一起经历过的才是真的。

– 柴静 《看见》


以上是关于任意文件下载漏洞知识点的主要内容,如果未能解决你的问题,请参考以下文章

WordPress删除任意文件/执行任意代码安全漏洞临时修复方法

FFmpeg本地任意文件读取漏洞 / FFmpeg Local arbitrary file read vulnerability

代码审计之Finecms任意文件下载漏洞

如何查找网站漏洞文件任意查看漏洞详情与利用

超级cms2.39-任意代码执行漏洞

代码审计两个任意文件读取漏洞实例