任意文件读取漏洞

2019/12/26 23:23 · 笔记 ·  原创文章 · 673阅读 · 0评论

以前判断是否有任意文件读取的时候都是../../../../../etc/passwd判断一下就完事了,今天看了关于任意文件读取的文章,受益匪浅。

漏洞介绍

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

漏洞存在的地方:

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

漏洞的危害

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

常见的存在任意文件读取漏洞的URL:

"readfile.php?file="
 
"download.php?file="
 
"read.php?filename="
 
"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使用效果与效率最高。

111.jpeg

您可能感兴趣的文章

本文地址:https://www.ouyangxiaoze.com/2019/12/531.html
版权声明:本文为原创文章,版权归 欧阳小泽 所有,欢迎分享本文,转载请保留出处!

文件下载

boke112导航_独立博客导航平台

上一篇:
下一篇:

 发表评论


表情