某次攻防演练中对任意文件读取漏洞的利用
字数 1738 2025-08-10 19:49:14

任意文件读取漏洞利用实战教学

漏洞概述

任意文件读取漏洞(Arbitrary File Read)是指攻击者能够读取服务器上任意文件的漏洞,通常由于应用程序未对用户输入的文件路径进行严格过滤导致。

漏洞发现

在攻防演练中,发现目标系统部署了kkfileview组件,该组件存在任意文件读取漏洞。

漏洞利用方法

基本利用方式

通过构造特殊URL路径读取服务器文件:

http://ip/getCorsFile?urlPath=file:文件路径

Linux系统关键文件路径

  1. 用户信息相关

    • /etc/passwd - 账户信息
    • /etc/shadow - 账户密码文件(加密)
    • /root/.bash_history - root用户历史命令记录
    • /root/.mysql_history - mysql历史命令记录
  2. SSH相关

    • /root/.ssh/authorized_keys - 远程登录公钥
    • /root/.ssh/id_rsa - SSH私钥
    • /root/.ssh/id_rsa.pub - SSH公钥
    • /root/.ssh/known_hosts - 访问过的主机公钥记录
  3. 配置文件

    • /etc/my.cnf - MySQL配置文件
    • /etc/httpd/conf/httpd.conf - Apache配置文件
    • /etc/redhat-release - 系统版本信息
    • /etc/orayconfig.conf - 向日葵远程控制配置文件
  4. 进程信息

    • /proc/self/cmdline - 当前进程的cmdline参数
    • /proc/pid/cmdline - 特定pid进程的完整命令行
    • /proc/self/environ - 环境变量
    • /proc/self/loginuid - 当前用户
  5. 网络信息

    • /proc/net/fib_trie - 内网IP信息
    • /proc/sched_debug - 当前运行进程及对应pid
  6. 其他有用文件

    • /var/lib/mlocate/mlocate.db - 全文件路径数据库
    • /proc/mounts - 系统挂载设备
    • /proc/config.gz - 内核配置文件

Windows系统关键文件路径

  1. 系统信息

    • C:\boot.ini - 查看系统版本
    • C:\Windows\repair\sam - 存储系统初次安装的密码
  2. 服务配置

    • C:\Windows\System32\inetsrv\MetaBase.xml - IIS配置文件
    • C:\Windows\php.ini - PHP配置信息
  3. 数据库相关

    • C:\Program Files\mysql\my.ini - MySQL配置
    • C:\Program Files\mysql\data\mysql\user.MYD - MySQL root用户信息
    • C:\Windows\my.ini - MySQL配置信息

实战案例

  1. 读取应用配置文件

    • 通过逆向找到的jar包,发现BOOT-INF\classes\application-dev.yml文件包含数据库账号密码
  2. 向日葵远程控制利用

    • 读取/etc/orayconfig.conf获取向日葵配置:
      • encry_pwd - 本机验证码
      • fastcode - 本机识别码(去掉第一个字母,只需后面数字)
    • 使用Sunflower_get_Password脚本解密(需安装unicorn库)

渗透技巧

  1. 目录遍历技巧

    • 尝试常见路径如/data//opt/等寻找有用文件
    • 查找应用部署目录下的配置文件
  2. 信息关联利用

    • 数据库密码可用于尝试其他服务
    • 内网信息可用于进一步横向移动

防御建议

  1. 严格过滤用户输入的文件路径
  2. 限制应用程序运行权限
  3. 敏感配置文件设置适当权限
  4. 定期检查系统关键文件权限
  5. 对文件读取功能进行白名单限制

工具准备

  • Sunflower_get_Password脚本(用于解密向日葵验证码)
  • 安装依赖:pip3 install unicorn

总结

任意文件读取漏洞虽然看似简单,但通过系统性地遍历关键文件路径,往往能获取大量敏感信息,为进一步渗透提供有力支持。渗透测试中应保持耐心,细致检查每一个可能的路径。

任意文件读取漏洞利用实战教学 漏洞概述 任意文件读取漏洞(Arbitrary File Read)是指攻击者能够读取服务器上任意文件的漏洞,通常由于应用程序未对用户输入的文件路径进行严格过滤导致。 漏洞发现 在攻防演练中,发现目标系统部署了kkfileview组件,该组件存在任意文件读取漏洞。 漏洞利用方法 基本利用方式 通过构造特殊URL路径读取服务器文件: Linux系统关键文件路径 用户信息相关 /etc/passwd - 账户信息 /etc/shadow - 账户密码文件(加密) /root/.bash_history - root用户历史命令记录 /root/.mysql_history - mysql历史命令记录 SSH相关 /root/.ssh/authorized_keys - 远程登录公钥 /root/.ssh/id_rsa - SSH私钥 /root/.ssh/id_rsa.pub - SSH公钥 /root/.ssh/known_hosts - 访问过的主机公钥记录 配置文件 /etc/my.cnf - MySQL配置文件 /etc/httpd/conf/httpd.conf - Apache配置文件 /etc/redhat-release - 系统版本信息 /etc/orayconfig.conf - 向日葵远程控制配置文件 进程信息 /proc/self/cmdline - 当前进程的cmdline参数 /proc/pid/cmdline - 特定pid进程的完整命令行 /proc/self/environ - 环境变量 /proc/self/loginuid - 当前用户 网络信息 /proc/net/fib_trie - 内网IP信息 /proc/sched_debug - 当前运行进程及对应pid 其他有用文件 /var/lib/mlocate/mlocate.db - 全文件路径数据库 /proc/mounts - 系统挂载设备 /proc/config.gz - 内核配置文件 Windows系统关键文件路径 系统信息 C:\boot.ini - 查看系统版本 C:\Windows\repair\sam - 存储系统初次安装的密码 服务配置 C:\Windows\System32\inetsrv\MetaBase.xml - IIS配置文件 C:\Windows\php.ini - PHP配置信息 数据库相关 C:\Program Files\mysql\my.ini - MySQL配置 C:\Program Files\mysql\data\mysql\user.MYD - MySQL root用户信息 C:\Windows\my.ini - MySQL配置信息 实战案例 读取应用配置文件 通过逆向找到的jar包,发现 BOOT-INF\classes\application-dev.yml 文件包含数据库账号密码 向日葵远程控制利用 读取 /etc/orayconfig.conf 获取向日葵配置: encry_pwd - 本机验证码 fastcode - 本机识别码(去掉第一个字母,只需后面数字) 使用 Sunflower_get_Password 脚本解密(需安装 unicorn 库) 渗透技巧 目录遍历技巧 尝试常见路径如 /data/ 、 /opt/ 等寻找有用文件 查找应用部署目录下的配置文件 信息关联利用 数据库密码可用于尝试其他服务 内网信息可用于进一步横向移动 防御建议 严格过滤用户输入的文件路径 限制应用程序运行权限 敏感配置文件设置适当权限 定期检查系统关键文件权限 对文件读取功能进行白名单限制 工具准备 Sunflower_get_Password 脚本(用于解密向日葵验证码) 安装依赖: pip3 install unicorn 总结 任意文件读取漏洞虽然看似简单,但通过系统性地遍历关键文件路径,往往能获取大量敏感信息,为进一步渗透提供有力支持。渗透测试中应保持耐心,细致检查每一个可能的路径。