任意文件读取漏洞

2019/12/26 23:23 · 笔记 · 原创文章 · 4,640 · 0

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

漏洞介绍

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

漏洞存在的地方:

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

漏洞的危害

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

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

  1. "readfile.php?file="
  2.  
  3. "download.php?file="
  4.  
  5. "read.php?filename="
  6.  
  7. "down.php?file="

利用方式

  1. index.php?f=../../../../../../etc/passwd
  2.  
  3. index.php?f=../index.php
  4.  
  5. index.php?f=file:///etc/passwd

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

Windows系统常用系数

  1. C:\boot.ini  //查看系统版本
  2.  
  3. C:\Windows\System32\inetsrv\MetaBase.xml  //IIS配置文件
  4.  
  5. C:\Windows\repair\sam  //存储系统初次安装的密码
  6.  
  7. C:\Program Files\mysql\my.ini  //Mysql配置
  8.  
  9. C:\Program Files\mysql\data\mysql\user.MYD  //Mysql root
  10.  
  11. C:\Windows\php.ini  //php配置信息
  12.  
  13. C:\Windows\my.ini  //Mysql配置信息

Linux系统常用系数

  1. /etc/passwd
  2.  
  3. /etc/shadow
  4.  
  5. /etc/hosts
  6.  
  7. /root/.bash_history   //root的bash历史记录
  8.  
  9. /root/.ssh/authorized_keys
  10.  
  11. /root/.mysql_history  //mysql的bash历史记录
  12.  
  13. /root/.wget-hsts
  14.  
  15. /opt/nginx/conf/nginx.conf  //nginx的配置文件
  16.  
  17. /var/www/html/index.html    
  18.  
  19. /etc/my.cnf
  20.  
  21. /etc/httpd/conf/httpd.conf  //httpd的配置文件
  22.  
  23.  
  24. /proc/self/fd/fd[0-9]*(文件标识符)
  25.  
  26. /proc/mounts
  27.  
  28. /porc/config.gz
  29.  
  30. /proc/sched_debug // 提供cpu上正在运行的进程信息,可以获得进程的pid号,可以配合后面需要pid的利用
  31.  
  32. /proc/mounts // 挂载的文件系统列表
  33.  
  34. /proc/net/arp //arp表,可以获得内网其他机器的地址
  35.  
  36. /proc/net/route //路由表信息
  37.  
  38. /proc/net/tcp and /proc/net/udp // 活动连接的信息
  39.  
  40. /proc/net/fib_trie // 路由缓存
  41.  
  42. /proc/version  // 内核版本
  43.  
  44. /proc/[PID]/cmdline // 可能包含有用的路径信息
  45.  
  46. /proc/[PID]/environ //  程序运行的环境变量信息,可以用来包含getshell
  47.  
  48. /proc/[PID]/cwd     // 当前进程的工作目录
  49.  
  50. /proc/[PID]/fd/[#] // 访问file descriptors,某写情况可以读取到进程正在使用的文件,比如access.log
  51.  
  52. # ssh
  53.  
  54. /root/.ssh/id_rsa
  55.  
  56. /root/.ssh/id_rsa.pub
  57.  
  58. /root/.ssh/authorized_keys
  59.  
  60. /etc/ssh/sshd_config
  61.  
  62. /var/log/secure
  63.  
  64. /etc/sysconfig/network-scripts/ifcfg-eth0
  65.  
  66. /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

您可能感兴趣的文章

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

文件下载

上一篇:
下一篇:

 发表评论


表情