哎哟喂,兄弟们,今天咱们不聊那些虚头巴脑的渗透测试理论,直接上硬菜——聊聊最近让我夜不能寐的 DCSync攻CMS 组合拳,说真的,我一开始以为这俩玩意儿是八竿子打不着的,一个在域控里翻云覆雨,一个在Web层蹦跶,结果呢?嘿,真让我给碰上了实战,那叫一个酸爽!
先说说我踩坑的经过吧,想起来都后怕。
那天下午,我正在给客户做红队评估,手里攥着个弱口令拿下的CMS后台,正愁怎么横向移动呢,CMS这玩意儿吧,说它硬,它防御跟纸糊的一样;说它软,它没事还给你整几个PHP反序列化漏洞恶心你,我当时就想,得了,先上个蚁剑,看看能不能搞到点数据库配置信息,结果你猜怎么着?我居然在CMS的备份文件里,翻到了域管的NTDS.dit备份路径!我的天,这不就等于把保险柜钥匙放门口脚垫下面嘛!
这才是关键!DCSync攻CMS并不是说CMS能直接执行DCSync,而是CMS成了那块“垫脚石”,你想啊,DCSync攻击的精髓是什么?是利用DRS(目录复制服务)协议伪造域控身份,从真正的域控那儿把密码哈希给“拉”下来,但前提是——你得有域管或者域控机器的权限啊!普通用户?门儿都没有!
重点来了,我咋用CMS撬开这扇门?靠的是“连接点”。
我通过CMS的文件上传漏洞,丢了个WebShell上去,这不算新鲜吧?但关键在于,我这个WebShell不是用来弹个CMD窗口那么LOW的,我把它当成了一个“代理跳板”,我用它去读取CMS的数据库连接配置,好家伙,这CMS居然用的服务账号是svc_cms_sync,而且这账号居然被加入了域内“Server Operators”组!这权限意味着什么?意味着它能备份域控的系统状态啊!
好了,这下链路就通了,我通过CMS这个口子,用svc_cms_sync的身份去调用系统备份,再把备份文件里的SYSTEM和SAM以及NTDS.dit给导出来,然后呢?嘿嘿,我直接在本地用secretsdump.py或者mimikatz对着这三件套一阵猛敲,这不就是妥妥的 DCSync攻CMS 最终形态——离线DCSync吗?简直不要太爽!
兄弟姐妹们,这里我必须得吐槽一句!你见过谁家把域管备份放到Web目录下的啊?这管理员心也太大了吧!我顺藤摸瓜,那叫一个畅通无阻,仿佛整个域都在向我敞开怀抱,拿到哈希后,PTH(Pass-the-Hash)一把梭,直接域控接管,整个过程不到俩小时,期间我还回头给CMS扫了一遍弱点,发现它的后台登录连个验证码都没有,这防御力度,啧啧,跟纸糊的有什么区别?
痛定思痛,说说这DCSync攻CMS的防御心得吧。
第一,CMS服务账号必须最小权限!谁再敢给Web服务搞个域管或者高权限组,那真是嫌自家网络太安宁了,第二,网络分段很重要!CMS服务器跟域控之间,能不能隔堵墙?防火墙策略能不能只允许必要的端口?第三,监控DRS协议!一旦发现异常的域控复制请求,立刻告警!别等攻击者都拿到域管哈希了,你的SOC还在看抖音呢。
说实话,写完这篇文章,我后背还是凉飕飕的,DCSync这个老牌攻击手法,配上CMS这个浑身漏洞的“漏风墙”,那真是王八看绿豆——对上眼了,你我皆凡人,可不能在安全建设上栽这种跟头,一定要把眼光放长远,别光盯着Web跑马,得想着从Web到域控这条路埋了多少雷。
哎,唠了这么多,也不知道对你们有没有启发,反正我是觉得,实战里每一分侥幸都是给攻击者递刀子,好了好了,不说了,我去给自己服务器加固一波,省得哪天被人拿DCSync攻CMS的招数给端了老窝!

对了,如果你也是搞网络安全这行的,或者想学点真东西,一个人摸索太累了,加个QQ一起交流吧:88888888(我就好这口,不喜欢热闹就别加了哈),咱们下期再聊别的实战妙招!

