文件读取漏洞实战利用
字数 1323 2025-08-20 18:17:07

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

1. 漏洞概述

文件读取漏洞是一种常见的安全漏洞,攻击者通过该漏洞可以读取服务器上的敏感文件。本教学文档将详细介绍两种实战场景下的文件读取漏洞利用方法:Nginx配置文件利用和Jumpserver AccessKey利用。

2. Nginx配置文件利用

2.1 初始发现

  • 通过SSRF漏洞(CVE-2021-27905)读取/root/.bash_history文件
  • 从历史命令中发现服务器运行了Tomcat和Nginx服务

2.2 关键步骤

  1. 读取Nginx配置文件

    • 定位Nginx配置文件路径(通常为/etc/nginx/nginx.conf/etc/nginx/sites-enabled/*)
    • 获取URL路由信息,发现管理后台接口
  2. 绕过访问控制

    • 发现管理后台通过X-Forwarded-For(XFF)头进行访问控制
    • 添加XFF头字段访问管理后台
  3. 弱口令攻击

    • 使用常见弱口令组合尝试登录管理后台
    • 成功获取管理权限

3. Jumpserver AccessKey利用

3.1 信息收集

  1. 读取历史命令

    • 再次读取/root/.bash_history文件
    • 发现服务器部署了Jumpserver堡垒机
  2. 获取SSH密钥

    • 拼接路径读取/root/.ssh/目录下的公私钥文件
    • 验证authorized_keys文件确认密钥有效性

3.2 Jumpserver深入利用

  1. 读取配置文件

    • 定位Jumpserver配置文件路径/opt/jumpserver/config/config.txt
    • 获取敏感信息:
      • 数据库和Redis密码
      • SECRET_KEY和BOOTSTRAP_TOKEN
  2. 理解关键参数

    • SECRET_KEY: 用于加密解密的KEY
    • BOOTSTRAP_TOKEN: koko/lion组件向JMS注册使用的token
    • ACCESS_KEY_FILE: 默认保存路径为data/keys/.access_key
  3. API接口利用

    • 使用Python脚本构造签名请求:
    import requests, datetime, json
    from httpsig.requests_auth import HTTPSignatureAuth
    
    def get_auth(KeyID, SecretID):
        signature_headers = ['(request-target)', 'accept', 'date']
        auth = HTTPSignatureAuth(key_id=KeyID, secret=SecretID, algorithm='hmac-sha256', headers=signature_headers)
        return auth
    
    response = requests.get(url, auth=auth, headers=headers)
    
  4. 获取主机控制权

    • 通过API获取主机列表:GET /api/v1/assets/assets/?offset\=0&limit\=15&display\=1&draw\=1
    • 执行命令反弹shell:
    POST /api/v1/ops/command-executions/ HTTP/2
    Host: [target]
    Content-Type: application/x-www-form-urlencoded
    Authorization: Signature [signature]
    
    hosts=&run_as=&command=[reverse_shell_command]
    
  5. 重置管理员密码

    • 通过Jumpserver命令行工具修改管理员密码
    • 清除MFA设置(如存在):
      user.mfa_level='0'
      user.otp_secret_key=''
      

4. 防御建议

  1. 文件读取漏洞防御

    • 严格限制文件读取权限
    • 对用户输入进行严格过滤和验证
    • 避免将敏感信息存储在可被读取的位置
  2. Jumpserver安全配置

    • 定期更换SECRET_KEY和BOOTSTRAP_TOKEN
    • 限制API访问权限
    • 启用多因素认证(MFA)
  3. Nginx安全配置

    • 避免使用XFF头作为唯一访问控制机制
    • 使用强密码策略
    • 限制配置文件访问权限

5. 总结

文件读取漏洞虽然直接影响有限,但通过读取历史命令、配置文件和密钥等敏感信息,攻击者可以进一步扩大攻击范围,最终获取系统控制权。防御方应重视此类"小漏洞"可能带来的"大风险",实施纵深防御策略。

文件读取漏洞实战利用教学文档 1. 漏洞概述 文件读取漏洞是一种常见的安全漏洞,攻击者通过该漏洞可以读取服务器上的敏感文件。本教学文档将详细介绍两种实战场景下的文件读取漏洞利用方法:Nginx配置文件利用和Jumpserver AccessKey利用。 2. Nginx配置文件利用 2.1 初始发现 通过SSRF漏洞(CVE-2021-27905)读取 /root/.bash_history 文件 从历史命令中发现服务器运行了Tomcat和Nginx服务 2.2 关键步骤 读取Nginx配置文件 : 定位Nginx配置文件路径(通常为 /etc/nginx/nginx.conf 或 /etc/nginx/sites-enabled/* ) 获取URL路由信息,发现管理后台接口 绕过访问控制 : 发现管理后台通过X-Forwarded-For(XFF)头进行访问控制 添加XFF头字段访问管理后台 弱口令攻击 : 使用常见弱口令组合尝试登录管理后台 成功获取管理权限 3. Jumpserver AccessKey利用 3.1 信息收集 读取历史命令 : 再次读取 /root/.bash_history 文件 发现服务器部署了Jumpserver堡垒机 获取SSH密钥 : 拼接路径读取 /root/.ssh/ 目录下的公私钥文件 验证 authorized_keys 文件确认密钥有效性 3.2 Jumpserver深入利用 读取配置文件 : 定位Jumpserver配置文件路径 /opt/jumpserver/config/config.txt 获取敏感信息: 数据库和Redis密码 SECRET_ KEY和BOOTSTRAP_ TOKEN 理解关键参数 : SECRET_KEY : 用于加密解密的KEY BOOTSTRAP_TOKEN : koko/lion组件向JMS注册使用的token ACCESS_KEY_FILE : 默认保存路径为 data/keys/.access_key API接口利用 : 使用Python脚本构造签名请求: 获取主机控制权 : 通过API获取主机列表: GET /api/v1/assets/assets/?offset\=0&limit\=15&display\=1&draw\=1 执行命令反弹shell: 重置管理员密码 : 通过Jumpserver命令行工具修改管理员密码 清除MFA设置(如存在): 4. 防御建议 文件读取漏洞防御 : 严格限制文件读取权限 对用户输入进行严格过滤和验证 避免将敏感信息存储在可被读取的位置 Jumpserver安全配置 : 定期更换SECRET_ KEY和BOOTSTRAP_ TOKEN 限制API访问权限 启用多因素认证(MFA) Nginx安全配置 : 避免使用XFF头作为唯一访问控制机制 使用强密码策略 限制配置文件访问权限 5. 总结 文件读取漏洞虽然直接影响有限,但通过读取历史命令、配置文件和密钥等敏感信息,攻击者可以进一步扩大攻击范围,最终获取系统控制权。防御方应重视此类"小漏洞"可能带来的"大风险",实施纵深防御策略。