任意文件读取漏洞

漏洞介绍

很多网站由于业务需求,往往需要提供文件(附件)下载的功能块,但是如果对下载的文件没有做限制,直接通过绝对路径对其文件进行下载,那么,恶意用户就可以利用这种方式下载服务器的敏感文件,对服务器进行进一步的威胁和攻击。

漏洞存在的地方:

系统中存在文件(附件/文档/图片等等资源)下载的地方。

漏洞的危害

通过任意文件下载,可以下载服务器的任意文件,web业务的代码,服务器和系统的具体配置信息,也可以下载数据库的配置信息,以及对内网的信息探测等等

Google Hacking

inurl:"readfile.php?file="

inurl:"download.php?file="

inurl:"read.php?filename="

inurl:"down.php?file="

与文件包含漏洞的区别

index.php?f=../../../../../../etc/passwd

index.php?f=../index.php

index.php?f=file:///etc/passwd

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

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配置信息

Linux系统常用系数

/etc/passwd

/etc/shadow

/etc/hosts

/root/.bash_history   //root的bash历史记录

/root/.ssh/authorized_keys

/root/.mysql_history  //mysql的bash历史记录

/root/.wget-hsts

/opt/nginx/conf/nginx.conf  //nginx的配置文件

/var/www/html/index.html    

/etc/my.cnf

/etc/httpd/conf/httpd.conf  //httpd的配置文件


/proc/self/fd/fd[0-9]*(文件标识符)

/proc/mounts

/porc/config.gz

/proc/sched_debug // 提供cpu上正在运行的进程信息,可以获得进程的pid号,可以配合后面需要pid的利用

/proc/mounts // 挂载的文件系统列表

/proc/net/arp //arp表,可以获得内网其他机器的地址

/proc/net/route //路由表信息

/proc/net/tcp and /proc/net/udp // 活动连接的信息

/proc/net/fib_trie // 路由缓存

/proc/version  // 内核版本

/proc/[PID]/cmdline // 可能包含有用的路径信息

/proc/[PID]/environ //  程序运行的环境变量信息,可以用来包含getshell

/proc/[PID]/cwd     // 当前进程的工作目录

/proc/[PID]/fd/[#] // 访问file descriptors,某写情况可以读取到进程正在使用的文件,比如access.log

# ssh

/root/.ssh/id_rsa

/root/.ssh/id_rsa.pub

/root/.ssh/authorized_keys

/etc/ssh/sshd_config

/var/log/secure

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/syscomfig/network-scripts/ifcfg-eth1

该漏洞不像其他漏洞那样有通用的利用方法和相关工具,本漏洞的利用过程与具体的网站架构关系很大,需要了解常见的网站的架构,如网站的配置文件位置等信息。

1.jsp站点

尝试下载tomcat-users.xml文件,里面保存了管理Tomcat的账号密码,该文件在:Tomcat安装目录/conf/tomcat-users.xml,下载该文件之后,就能获取管理员账号密码,然后登陆管理后台,部署带有木马文件的war包。

2.aspx站点

aspx站点一般后台都是SQL Server数据库,因此利用该漏洞的最简单的方法是下载网站根目录下的web.config文件,该文件中一般含有数据库的用户名和密码。

3.asp站点

一般的asp站点都是Access数据库,而Access数据库可以直接下载,因此利用该漏洞比较简便的方法就是直接下载Access数据库,找到管理员密码登陆后台,利用后台的上传功能,上传shell。首先目的是找到数据库文件名以及存放的路径。找到网站与数据库操作的动态页面,动态页面中一般使用include包含连接数据库的配置文件。一般网站的管理后台页面会包含这个信息,所以可以使用任意文件下载漏洞下载管理后台页面,例如admin.asp/mamage.asp等。在这些文件中一般会写有数据库文件的路径以及文件名。直接下载数据库文件可能下载不了,因为管理员一般会做限制,禁止直接下载mdb文件,可以使用任意文件下载漏洞来下载数据库文件。

4.php站点

php一般是使用MySQL数据库, 一般MySQL数据库禁止远程连接,但是可以使用phpMyAdmin进行管理。同意,尝试下载数据库连接文件,conf/config.php等等,获取数据库账户密码之后,如果是root权限,在知道网站绝对路径的情况下,尝试直接写入一句话木马。

修复思路

1.php.ini 配置 open_basedir

2.用户输入配置白名单

3.不允许包含 ../

本人心得

1.一定要确认是否具有root权限,这个很重要,不然很多文件还是因为权限问题没法被读取,/root/目录下的都没法读取

2.要是没遇到root权限的漏洞,也不用直接放弃,可以换用其他姿势,选用代码审计的方法,主要查看数据库的配置文件,今天我遇到的一个就是没有root权限的漏洞,直接代码审计查看是否有其他漏洞,或者查找数据库的配置文件。

3,找到数据库的配置文件后如果是mysql,配置的是localhost,那可以查看是否含有phpmyadmin软件,要是没有推荐继续代码审计,可能会比较耗时间,不过肯定会有所收获。

4.配合burp使用效果与效率最高。

参考:http://wp.blkstone.me/2018/06/abusing-arbitrary-file-read/#7

https://blog.csdn.net/wutianxu123/article/details/82634949

https://blog.csdn.net/weixin_39997829/article/details/79633454

https://masterxsec.github.io/2017/05/20/%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD%E6%BC%8F%E6%B4%9E/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注