文件读取漏洞实战利用
字数 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 关键步骤
-
读取Nginx配置文件:
- 定位Nginx配置文件路径(通常为
/etc/nginx/nginx.conf或/etc/nginx/sites-enabled/*) - 获取URL路由信息,发现管理后台接口
- 定位Nginx配置文件路径(通常为
-
绕过访问控制:
- 发现管理后台通过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
- 定位Jumpserver配置文件路径
-
理解关键参数:
SECRET_KEY: 用于加密解密的KEYBOOTSTRAP_TOKEN: koko/lion组件向JMS注册使用的tokenACCESS_KEY_FILE: 默认保存路径为data/keys/.access_key
-
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) -
获取主机控制权:
- 通过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] - 通过API获取主机列表:
-
重置管理员密码:
- 通过Jumpserver命令行工具修改管理员密码
- 清除MFA设置(如存在):
user.mfa_level='0' user.otp_secret_key=''
4. 防御建议
-
文件读取漏洞防御:
- 严格限制文件读取权限
- 对用户输入进行严格过滤和验证
- 避免将敏感信息存储在可被读取的位置
-
Jumpserver安全配置:
- 定期更换SECRET_KEY和BOOTSTRAP_TOKEN
- 限制API访问权限
- 启用多因素认证(MFA)
-
Nginx安全配置:
- 避免使用XFF头作为唯一访问控制机制
- 使用强密码策略
- 限制配置文件访问权限
5. 总结
文件读取漏洞虽然直接影响有限,但通过读取历史命令、配置文件和密钥等敏感信息,攻击者可以进一步扩大攻击范围,最终获取系统控制权。防御方应重视此类"小漏洞"可能带来的"大风险",实施纵深防御策略。