免责声明:文章来源于真实渗透测试,已获得授权,且关键信息已经打码处理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。
一、信息收集
1.站点是一个正常的80端口开放的http服务使用nginx进行搭建,对其目录进行了扫描,没有得到什么能利用的信息
2.类似的站点通常会开放22或3389来进行远程维护,通过扫描端口发现了一些意外收获
该服务器开放了大量的端口,其中不止有3306、6379这种数据库服务端口、3389远程rdp端口、还存在大量http服务端口,注意到其中存在8848,可能存在nacos系统
3.通过测试大部分开放HTTP服务的端口下都没有网站,不过也是有收获,加上刚开始看到的主站共有四个登录框,其中Seata分布式事务服务系统存在弱口令,直接就登陆进去了
Seata-Server:seata/seata
可惜登录进去后什么信息也没有,之前没了解过这个系统搜索了一下,好像没有什么能利用的
4.还有另外两个站点,对象存储系统和一个类似令牌存储的站点,尝试弱口令均没有成功
minio服务器:minioadmin/minioadmin
4.之前说发现了开放了8848端口的,使用字典进行扫描,果然发现存在nacos系统,并且通过字典扫描目录未授权获取了nacos的密码
未授权访问地址:
/nacos/v1/auth/users?pageNo=1&pageSize=1
可获取已经注册过的账号和加密后的密码
二、实战环节
1.直接利用nacos漏洞扫描工具进行漏洞扫描,发现其版本为2.0.3且存在多个版本漏洞
漏洞名称: Nacos token.secret.key默认配置(QVD-2023-6271)
漏洞描述: 开源服务管理平台 Nacos 中存在身份认证绕过漏洞,在默认配置下未对 token.secret.key 进行修改,导致远程攻击者可以绕过密钥认证进入后台,造成系统受控等后果。漏洞影响版本: 0.1.0 <= Nacos <= 2.2.0
漏洞名称: Nacos User-Agent权限绕过(CVE-2021-29441)
漏洞描述: 该漏洞发生在nacos在进行认证授权操作时,会判断请求的user-agent是否为”Nacos-Server”,如果是的话则不进行任何认证。开发者原意是用来处理一些服务端对服务端的请求。但是由于配置的过于简单,并且将协商好的user-agent设置为Nacos-Server,直接硬编码在了代码里,导致了漏洞的出现。
漏洞影响版本: Nacos <= 2.0.0-ALPHA.1
漏洞名称: Nacos Derby SQL注入漏洞 (CNVD-2020-67618)
漏洞描述: config server中有个接口,没有做任何的鉴权,即可执行sql语句,可以泄漏全部数据
漏洞影响版本: 与Nacos版本无关,看是否使用了内置的Derby数据库
漏洞修复方案: 对接口接口鉴权, 修改 nacos的application.properties配置文件nacos.core.auth.enabled=true,开启服务身份识别功能
2.利用权限绕过漏洞创建test用户登录nacos系统,查看系统配置(注意退出后清除该用户)
3.两个反序列化漏洞都需要手动测试,在测试后竟然发现该服务器存在Nacos Jraft Hessian反序列化漏洞,注入内存马后执行命令直接回显了Administrator权限
漏洞名称: Nacos Jraft Hessian反序列化漏洞(QVD-2023-13065)
漏洞描述: nacos默认的7848端口是用来处理集群模式下raft协议的通信,该端口的服务在处理部分jraft请求的时候使用hessian传输协议进行反序列化过滤不严,导致RCE
漏洞影响版本: 1.4.0 <= Nacos < 1.4.6 和 2.0.0 <= Nacos < 2.2.3
4.直接上webshell管理工具(我比较习惯用哥斯拉)利用注入的内存马进行上线
注意需要设置请求头,哥斯拉的设置为:
x-client-data: godzilla
Referer: https://www.google.com/
成功上线,利用命令查看服务进程,分析后发现好像只有windows自带的杀软
tasklist /svc 查看所有正在运行的进程及其服务信息
5.上线fscan对内网服务进行扫描,扫描后发现内网只有服务器一个地址,但是扫描出来了redis未授权访问
6.还是老套路,直接注入suo5内存马,做正向代理,访问redis数据库
成功连接redis服务器,其中存放着主站的账号,密码,ID等信息(经过测试后发现mysql数据库已经不再使用了,无法渗透)
6.到了这个时候其实已经拿下这个站点了,获得了所有的信息,但是想到最初扫描的端口目的就是为了拿到远程连接,而且已经获得了管理员用户权限完全可以创建一个新用户进行远程RDP登录,但是想尝试一下能不能获取管理员用户的密码,随即上传mimikatz尝试获取系统中账户的密码
通过命令查看当前服务器用户账户信息,发现服务器中存在多个用户
net users 列出所有用户账户
mimikazt使用命令读取密码信息,获取Administrator等多个用户密码
mimikatz.exe "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::sam" exit
privilege::debug
:提升进程的权限到DEBUG
级别,这通常是为了获取对系统进程更多的控制权,包括读取其他进程的内存空间。
token::elevate
:提升当前访问令牌的权限,这通常用于绕过用户账户控制 (UAC) 或获取更高权限的操作。
sekurlsa::logonpasswords
:尝试从本地安全机构子系统服务 (LSASS) 进程中提取当前登录用户的密码信息。
lsadump::sam
:从本地 SAM (Security Account Manager) 数据库中转储用户账户信息,包括密码哈希。
exit
:退出 Mimikatz。webshell并不能做到真正的交互式回显,所以需要连起来一行执行命令(mimikatz是提供这种执行命令的方法,同样也能交互式输出)
7.利用Administrator用户账户/密码成功登录菠菜网站服务器
三、总结
成功拿下了菠菜网站的服务器,进行了远程桌面连接,通过最后登录和公网IP的查找也发现该服务器是一台云主机
感觉这次渗透一切都太顺利,服务器完全不设防,历史漏洞也没有修复,没什么技术含量,主要是对各种工具的使用,各位大佬当爽文看就行,希望以后大家做渗透测试的时候也都能碰到这样的站点