前言

据上次部门内组织的对抗赛-记一次内部红蓝对抗已经过去两届了,第四次的时候导师将靶场的网络拓扑重新设计了下,当时是以防守队的身份参与。这次有幸以靶场环境设计的角色参与,在之前原有网络拓扑的基础下重新部署了漏洞环境,便有了本文。
背景介绍:目标是拿到企业www.xxx.com的《上市商业计划书.docx》,通过OPENVPN访问。
特别提出的得分规则修改,权限的得分必须有WEBSHELL/交互式SHELL,只有一个漏洞回显不给分,更加偏向考察漏洞利用而非漏洞验证。

Author: 0ne

DMZ区


DMZ区大概有9台机器,3台入口点和官网分别用防火墙映射出去模拟互联网,4个页面分别对应xxx.com的四个子域名。

Ngnix解析漏洞

在网站目录下写了个upload.html页面,考察路径扫描,上传页面是做了白名单校验,本来是考察在有WAF情况下怎么判断黑白名单,如果一开始就上传webshell,包被阻断就不好判断是程序不允许还是WAF拦截了,会浪费些许时间。但是在实际的过程中考虑难度就未启用WAF。细心的同学可能看见Ngnix版本信息就会联想到解析漏洞,有经验的同学可能看见PHP+白名单可能也会第一时间联想到解析漏洞。
未预期的解?:上传的php代码是在菜鸟教程找的。笔者测试的时候,发现"白名单可以绕过",win环境+文件上传后未重命名。其中<>?/^*:|"等符号不允许在文件名中出现。所以有了:


1.php:.png能够落地1.php,但是文件内容为0kb,绕不过去。哈哈哈嗝,等一个师傅能落地webshellQAQ

PHPStudy后门

常规RCE漏洞+win环境+杀软的考察,留了php探针页面。一些常用的下载执行的命令无法使用会被拦截,绕过可自行测试LOLBAS。其实这个漏洞本质还是php代码执行,可以直接用file_put_contents()写入一句话:


很多同学还是用的system('echo/powershell/certutil')写入,杀软不给力PHP_CGI.exe调powershll/certutil写文件或是解码,进程链未拦截,初衷还是希望大家能代码执行的时候不调用命令执行。

Fastjson漏洞

本来想部署的靶场是shiro JRMP链+win+杀软的,奈何不懂java,鼓捣半天没弄出来

原意是想让大家修改yso实现代码执行打shiro JRMP实现内存马/下载执行【java实现】/静态资源写webshell,但卒QAQ
考察JNDI注入+win环境+杀软上线问题,比较通用的方法就是内存马/下载执行【java实现】/静态资源写webshell,需要自己动手写恶意类实现上述功能,以静态资源为例,如何拿到web路径:


其中一只攻击队同学是echo写入再certutil解码:


如果使用JAVA代码实现恶意EXE的下载执行上线,建议先判断System.getProperty("os.name")System.getProperty("os.arch")
git有很多优秀的JNDI利用工具可以使用,但是初衷还是希望自己动手实现上述场景定制的恶意类,一个包就打成功,攻击流量不要太多。

办公网


办公网大概有7台主机通过DMZ区redis打过来,其中SMB泄露的账号密码直接用impacket包横向移动的脚本利用。同事帮忙搭了log4j漏洞的环境和完善了办公网的路径分,log4j的利用和fastjson那台利用手法相似。
办公网跨域还是沿用了上次的保存的RDP连接记录。
需要提及的就是从域外如何发现域,除了网络侧netbios扫描或是88&389等常用端口的扫描【需要知道网段,很可能触发大量流量】,若工作组主机DNS服务器是域控时,可nslookup 域名根据返回DNS服务器名称判断是否有域,主机侧还可以收集的信息就是cmdkey /list |findstr Domain和mimikatz收集的凭据。

shell dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

RDP密码破解参考

域环境


域环境有8台主机,靶标在corp1.com域内,需要拿下corp1域管权限才能登录。
域内部分主机不出网,以下方便复现给VPSIP开了出网白名单,实际解决可利用beacon_bind_pipe/beacon_bind_tcp/pivot listener
利用RDP破解的dev\user02登录C06,有applocker,限制了执行的程序,于是dll上线,白+黑参考LOLBAS

dev01.dev.corp1.com-10.5.12.248,起socks4A代理域外sAMAccountName spoofing直接打,利用成功会生成一张域管访问dev01的ST,PTT利用secretsdump.py获取krbtgt:


生成黄金票据:

域内横向移动常见方法:SC, AT/SCHTASKS, PSEXEC, WMI, WINRM, DCOM.

上线dev01,CS自带的remote-exec wmi报错,psexec执行上线了但是又掉了,不稳定,还是手敲:

shell wmic /node:dev01 process call create "C:\xx\beacon.exe"

在DEV01-beacon运行mimikatz获取凭证发现corp1\jeff用户,steal jeff用户的token,再Kerberoasting,发现报错:


只好pth,模拟corp1\jeff权限:


在corp1域Kerberoasting发现SPNuser->user_S02:

execute-assembly C:\Users\Rubeus.exe kerberoast /outfile:C:\Users\jeff\tgs.txt
hashcat -m 13100 -a 0 --force tgs.txt /usr/share/wordlists/FastPwds.txt


在dev01-beacon以corp1\user_S02派生会话,发现失败,不能登录,于是在C06上派生会话,以corp1\user_S02进入corp1域内:


发现corp1\user_S02是S02的管理员:


和上线dev01一样,上线S02:


发现S02上跑着corp1域管的进程:


窃取token,corp1域管权限,成功拿下靶标S03,窃取目标文件:

题外话

溯源反制是可遇不可求的事,通过攻击流量找到人或是反制C2通常是攻击的VPS关联了自己的域名信息,或是有自己ID的payload,或是踩了蜜罐。反制可能是攻击者在不恰当的目录下开了http服务。
上次攻防对抗的时候用了UNC获取攻击者ID,还比较好使:


利用desktop.ini获取访问诱饵文件的ntlm请求,做好后压缩为www.zip,等人下载解压。

因为在/root目录下误启用python-http服务导致的反制:

点击收藏 | 1 关注 | 1
登录 后跟帖