HTB UNIV CTF 24 Armaxix靶场漏洞链:命令注入与账户接管实战

news/2025/9/19 19:17:15/文章来源:https://www.cnblogs.com/qife122/p/19101527

HTB UNIV CTF 24 (Armaxix - WEB) 漏洞分析

作者:ABDELKARIM MOUCHQUELITA
4 分钟阅读 · 2024年12月18日

在本篇技术报告中,我们将探索一个实验环境而非聚焦漏洞赏金中的新漏洞。虽然CTF挑战教会我们很多知识,但它们通常与现实场景有所不同。然而,提取其中重要的经验教训至关重要。

在本实验中,我们通过链式利用两个漏洞实现了命令注入。环境配置包括源代码访问权限和两个独立主机:

  • 83.136.254.158:45660 → 这是Armaxis。虽然不确定其主要用途,但包含通过管理员向用户发送项目的功能,类似于报告发送系统
  • 83.136.254.158:33602 → 这似乎是一个邮件服务,类似于Gmail

在检查源代码之前,我测试了所有能想到的方法:JWT操纵、身份验证绕过和SQL注入。然而,这些方法均未奏效。

随后我重点关注密码重置功能,在此发现通过操纵密码重置请求可实现账户接管漏洞。

以下是密码重置请求体:

{"token": "f35137e53d9d900a8435a9734a79165d","newPassword": "f35137e53d9d900a8435a9734a79165d", "email": "test@email.htb"
}

请求体采用JSON格式。要实现账户接管(ATO),我们只需要一个有效的token。这可以通过重置密码页面为目标账户test@email.htb请求密码重置来获取,随后token将被发送到邮件服务主机。

之后,我将收到该token。

在深入分析源代码后,我发现了邮箱admin@armaxis.htb。

接下来,我将获取有效token,操纵请求,并将测试邮箱替换为管理员邮箱。

以下是操纵后的请求体:

{"token": "获取的有效token","newPassword": "新密码","email": "admin@armaxis.htb"
}

成功!现在我们获得了管理员权限,可以访问一些有趣的功能进行探索和测试。

"dispatch weapon"页面包含一个表单,其中"note (MarkDown)"部分最为有趣。我随后返回源代码,发现名为markdown.js的文件,其中包含Markdown处理器。其中包含一个URL处理器,当在Markdown中提供URL时会执行curl请求:

const fileContent = execSync(`curl -s ${url}`);

要实现命令注入,我们只需要在URL末尾添加分号来分隔命令。

当然,我最初尝试使用普通URL(http://...),但没有成功。于是我研究了Markdown中URL的处理方式,发现有两种格式:用于常规URL和<!URL>用于自动链接。

最终payload格式为:<!http://example.com;id>

现在,当管理员查看包含我们payload的note时,服务器将执行我们的命令。

经验总结:在测试功能时,始终检查源代码。如果发现命令执行函数,尝试使用分号、管道符或反引号进行注入。对于XML解析器,尝试XXE等技术。

希望本文能帮助您理解一些知识盲区。下次,Inshallah(如蒙主佑),我们将处理一个关键漏洞!
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

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

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

相关文章

【c++进阶系列】:万字详解AVL树(附源码实现) - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【JAVA接口自动化】JAVA如何读取Yaml文档

【JAVA接口自动化】JAVA如何读取Yaml文档pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

完整教程:uni-app 常用钩子函数:从场景到实战,掌握开发核心

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

PyTorch Weight Decay 技术指南

Weight Decay(权重衰减)是深度学习中重要的正则化技术,通过在训练过程中对模型权重施加惩罚,防止过拟合,提升模型泛化能力。PyTorch Weight Decay 技术指南 目录摘要 概念与理论2.1 核心概念 2.2 与 L2 正则化的关…

AUTOSAR进阶图解==>AUTOSAR_SWS_PDURouter - 实践

AUTOSAR进阶图解==>AUTOSAR_SWS_PDURouter - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

getDefaultMidwayLoggerConfig报错;解决方法。

getDefaultMidwayLoggerConfig报错;解决方法。 解决方案:配置环境变量:MIDWAY_LOGGER_WRITEABLE_DIR源码是:getDefaultMidwayLoggerConfig(appInfo) { var _a; const isDevelopment = (0, util_1.isDevelopmentEn…

js获取浏览器语言,以及调用谷歌翻译api翻译成相应的内容

翻译接口:https://translate.googleapis.com/translate_a/single?client=gtx&sl=(翻译前的语言)&tl=(翻译后的语言)&dt=t&q=(需要翻译的内容)调用案例: https://translate.googleapis.com/tr…

总结RocketMQ中的常见问题

总结RocketMQ中的常见问题 一、MQ 如何保证消息不丢失 1. 丢消息的关键环节跨网络环节:消息链路中1(生产者→Broker)、2(Broker 主→从)、4(Broker→消费者) 三个场景,因网络不稳定性可能导致请求丢失。 本地缓…

The 2025 ICPC Asia EC Regionals Online Contest (II)

疑似第一场没题解?那先写第二场了。 大家打得很棒,状态起来了!继续保持。 B. Rectangular Wooden Block给定 \(L\times W\times H\) 的长方体,每个 \(1\times 1\times 1\) 的小立方体有价值 \(V(i,j,k)\),选择其中…

Python实现Elman RNN与混合RNN神经网络对航空客运量、啤酒产量、电力产量时间序列数据预测可视化对比

全文链接:https://tecdat.cn/?p=43924原文出处:拓端数据部落公众号视频出处:拓端抖音号@拓端tecdat一、引言 作为长期深耕时间序列预测领域的数据科学家,我们在项目中频繁发现一个共性痛点:多数团队在选择循环神…

4G/Wi-Fi/以太网三网合一,智能融合通信实战案例集

聚焦通信技术落地痛点,4G/Wi-Fi/以太网智能多网融合方案,通过动态负载均衡与故障自愈机制,构建高可用通信链路。实战场景覆盖远程监控、智能交通等领域,技术细节与实施步骤全解析。 本文以Air8000开发板WebSocket应…

关于介绍自己的第一篇随笔

你好啊,我是张家瑞,一名普通平凡的学生。 仔细想来我的兴趣爱好也没什么特别的,也同他人一样爱打打游戏听听音乐,非常喜欢格斗游戏和卡牌游戏,若有喜欢街霸,罪恶装备,游戏王的同学可以找我打(开个玩笑),稍微…

深入解析:N32G43x Flash 驱动移植与封装实践

深入解析:N32G43x Flash 驱动移植与封装实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

Backblaze上如何传大文件

问题 创建好一个存储桶后,直接点击上传文件即可。但是当文件很大时将会显示:第一次通过以下步骤解决 第一步:准备工作 1.安装命令行工具 (B2 CLI) pip install --upgrade b2检验安装是否成功(可选) b2 version显示:…

解题报告-老逗找基友 (friends)

老逗找基友 (friends) 题目背景 吴老逗有 \(n\) 个基友,位于平面直角坐标系的整点上。每个基友已与其最近的基友(如有多个则取编号最小)建立了双向心灵感应。但这样形成的网络可能不连通,因此吴老逗可以使用爱之魔…

Python_occ 学习记录 | 细观建模(1) - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:uv:用 Rust 重写的极速 Python 包管理器

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Caused by: java.lang.ClassNotFoundException: org.apache.rocketmq.remoting.common.RemotingUtil

前言 启动报错,打包可以,启动报错; 针对这个问题 可以看下.ClassNotFoundException和NoClassDefFoundError:有啥区别先 org.springframework.beans.factory.BeanCreationException: Error creating bean with name …

VAE In JAX【个人记录向】

和上一篇 SAC In JAX 一样,我们用 JAX 实现 VAE,配置一样,只需要安装符合版本的 torchvision 即可,实现中提供了 tensorboard 记录以及最后的可视化展示,测试集即为最经典的 MNIST,代码如下: import jax import…