记录渗透靶场实战【网络安全】
第一次写靶场实战的文章,有不足之处还请多多指教。本次实战的靶场是红日安全 vulnstack 系列的第二个靶场。
靶场地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/
环境搭建
网络环境
网卡配置
只需要在 VM 上选择对应网卡即可,不需要在靶机中进行配置。
DC
WEB
PC
开启靶场
进入C:\Oracle\Middleware\user_projects\domains\base_domain
目录下,双击 startWebLogic 开启服务。
外网渗透
我们已知当前 Web 服务器的公网 IP 为 192.168.111.80,对 Web 服务器进行端口扫描,以期发现是否有可以利用的端口服务,从而突破边界。
端口扫描
【一>所有资源获取<一】1、200 多本网络安全系列电子书(该有的都有了)2、全套工具包(最全中文版,想用哪个用哪个)3、100 份 src 源码技术文档(项目学习不停,实践得真知)4、网络安全基础入门、Linux、web 安全、攻防方面的视频(2021 最新版)5、网络安全学习路线(告别不入流的学习)6、ctf 夺旗赛解析(题目解析实战操作)
漏洞探测
通过端口扫描我们发现 Web 服务器开启了 80、7001 等端口,其他端口如 445、1433、3389 等也可以使用一些 RCE 漏洞或弱口令直接进入 Web 服务器。这里我们先访问 Web 服务,发现 80 端口页面是空白的,在 7001 端口我们发现 Web 服务器开启了 Weblogic,尝试使用 WeblogicScan 脚本探测漏洞:
漏洞利用
通过脚本探测发现存在 CVE-2019-2725,我们可以使用网上的 exp,这里我们使用 msf 自带的漏洞利用模块:
这里还需要在 advanced 选项中对 payload 进行简单的编码:
成功返回 meterpreter。
这里我们做编码的目的是为了绕过 360,网上也有一些其它免杀的方式,大家可以自行学习,这里使用的 msf 的自免杀,使用 x64/zutto_dekiru 编码绕过。
权限提升
在我们成功返回 shell 后,发现我们当前是普通用户权限,如果要完全控制这台机器,需要进一步提权。
切换目录到 C:\Users\de1ay 下,使用 meterpreter 上传 Sherlock 脚本:
[图片上传中...(image-d1bca3-1636183507751-34)]
进入 shell 模式,使用 Sherlock 脚本探测可用于本地提权的漏洞:
这里我们通过 Sherlock 脚本发现存在 MS15-051 相关漏洞,使用 msf 自带的利用模块提权:
提权成功:
至此,我们已经成功拿下了边界服务器的控制权,可以进一步深入内网了。
内网渗透
在进入内网后,我们要明确自己的目标,由于该靶场没有 flag 需要获取,所以我们的目标就是拿下整个域的控制权,明确了目标后,我们就可以针对目标进行信息收集了。
信息收集
通过查询主机信息和网络信息,我们发现该服务器主机名为 WEB,处于域环境,并且有两张网卡,其内网网段为 10.10.10.0/24,主 DNS 服务器 IP 为 10.10.10.10,在域环境中,域控制器往往同时作为 DNS 服务器,由此判断,我们要找的域控制器 IP 很可能就是 10.10.10.10。
通过查询用户信息,我们获取了域成员信息,并可基本做出判断域控制器的主机名为 DC。
通过对 DC 使用 ping 命令,我们发现其 IP 为 10.10.10.10,由此我们最终做出判断该域环境中的域控制器主机名为 DC,内网 ip 地址为:10.10.10.10,并且我们目前控制的这台 Web 服务器可以访问域控制器。
这里我们通过 ping PC 发现 PC 机的 ip 为 10.10.10.201,但是没有返回数据,说明此处防火墙禁止了 ICMP 协议,在后面对 PC 机进行内网渗透时可以考虑其它协议。
至此,我们已经初步完成了内网信息收集:
设置代理
在对内网进行了初步的信息收集后,我们要开始攻击内网主机了,但是内网中的机器和我们的攻击机并不处于同一网络当中,所以要通过 Web 服务器建立代理,这里有很多内网穿透工具可以使用,如 ew、frp、chisel 等,我这里直接使用 msf 建立路由,并开启 socks 代理。
这样,我们就可以使用 msf 以及设置了代理的其它工具攻击内网中的主机了。
在信息收集时,我们使用了 ping 命令简单探测了一下内网连通性,发现 PC 机无法 ping 通,这可能是防火墙阻止了 ICMP 协议,这里我们通过代理使用 nc 命令探测,发现可以连通,说明防火墙并没有阻止 TCP 协议的流量。
发现防火墙并没有拦截 TCP 流量后,我们就可以使用 TCP 协议进行数据传输了。
横向移动
先扫一下端口。
发现两台机器都开起了 445 端口,探测以下是否存在永恒之蓝漏洞:
发现两台主机都存在该漏洞,尝试使用 msf 内置的漏洞利用模块:
域控制器执行成功,域内成员机 PC 执行失败:
至此,我们已成功获得域控制器权限。
域内成员机 PC 我们没有通过永恒之蓝漏洞拿下来,这里采用其它方法,首先我们在之前的 Web 服务器上加载 kiwi,提取服务器上储存的密码:
我们成功提取到了两个账号的明文密码,但是这里没有域管理员的账号密码。
这里我们使用 smart_hashdump 模块提取域控中的哈希:
成功提取到了域内成员的 hash 值,并且我们发现域管理员的 hash 和其它域成员的 hash 相同,这说明域管理员使用了和域成员相同的密码(该靶场存在密码复用,如果密码不相同,我们可以通过哈希传递进行横向移动),这样我们可以就获得了域管理员的账号密码。
我们先使用 msf 生成一个木马:
然后,将该木马上传到已经被我们控制的 web 服务器上:
进入 shell,与 PC 主机建立 IPC$连接:
将上传的木马复制到 PC 机 C 盘目录下:
通过端口扫描我们发现 PC 开启了 3389 端口:
在 msf 上开启监听:
连接 PC 机的远程桌面,使用域管理员账号登录 PC,上线 msf:
到此,我们已经控制了域内全部主机。
权限维持
在获取了域内全部主机权限后,我们进一步来做权限维持,权限维持的方法很多,这里我们演示两种方式,使用黄金票据来实现域控制器的权限维持,使用粘滞键后门实现 PC 机的权限维持。
域控制器权限维持
在之前的信息收集过程中,我们已经成功获取到了 krbtgt 的 hash 值:
因为 PC 机的 session 没有进行提权,并且是域成员账号,可以帮助我们获取域的 SID,所以我们切换到 PC 机的 session,获取域 SID:
上传 mimikatz 到 PC 机,进入 PC 的 shell 模式,发现当前用户为普通域成员,无法访问域控制器目录。
使用 mimikatz 生成黄金票据并注入内存:
成功注入内存,我们尝试访问域控制器 C 盘:
发现在将票据注入内存后,可以成功访问域控制器目录,说明黄金票据有效。还有其它域控制器权限维持的方式,这里不进行具体演示了。
粘滞键后门
在 PC 机上使用粘滞键后门前,需要先进行提权。这里同样上传 Sherlock 脚本进行探测利用:
提权成功。
使用 msf 中的后渗透模块添加粘滞键后门:
痕迹清除
删除之前上传的 mimikatz 和 Sherlock 脚本。
结语
关于免杀,我使用的全部是 msf 的编码自免杀,64 位使用的是 x64/zutto_dekiru,32 位使用的是 x86/shikata_ga_nai,360 都没有拦截。虽然靶机中有 360,但是我直接上传的 mimikatz 也没有被杀,所以我有些怀疑是 360 的版本比较低,除了 web 服务器上传的第一个 payload,其它都进行了编码处理,而第一个也确实没有执行成功,这说明 360 至少对第一个 payload 是拦截了的。
本次靶场练习到这里就全部结束了,在权限维持和免杀等方面仍然有很多需要学习的地方,这个靶场总体上比较简单,在横向移动和权限维持等方面还有很多方法可以尝试,由于本人深度沉迷 msf,所以这篇文章中的整个渗透过程都是基于 msf 进行的,大家也可以多多尝试其它工具和方法,比如 CS、Empire 等等。
评论