不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

任意文件读取漏洞

漏洞介绍

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

漏洞存在的地方:

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

漏洞的危害

通过任意文件下载,可以下载服务器的任意文件,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使用效果与效率最高。

赞(0)
未经允许不得转载:seo优化_前端开发_渗透技术 » 任意文件读取漏洞