某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

    • 实验室做题记录
    • 服务器端

    • 客户端

    • 高级主题

      • 不安全的反序列化

      • GraphQL API漏洞

      • 服务端模板注入

        • 从业者-基本的服务端模板注入
        • 从业者-基本的服务端模板注入-代码上下文
        • 从业者-借助文档信息-服务端模板注入
        • 从业者-记录在案的漏洞载荷-未知语言的服务端模板注入
        • 从业者-用户提供的对象-导致信息泄露的服务器端模板注入
          • 题目
          • 实操
            • 识别模板引擎
            • 利用-1
            • 利用-2
        • 专家-沙箱环境中的服务端模板注入
        • 专家-使用自定义漏洞载荷的服务端模板注入
      • Web缓存投毒

      • HTTP主机头攻击

      • HTTP请求走私

      • OAuth身份验证漏洞

      • JWT攻击

      • 原型链污染

  • BurpSuite及官方实验室
  • 实验室做题记录
  • 高级主题
  • 服务端模板注入
carsaid
2023-11-12
目录

从业者-用户提供的对象-导致信息泄露的服务器端模板注入

# 实验室:服务器端模板注入,通过用户提供的对象进行信息泄露

# 题目

由于对象传递到模板中的不当方式,此实验室容易受到服务端模板注入的攻击。可利用此漏洞访问敏感数据。

若要解决实验室问题,请窃取并提交框架的密钥。

你可以使用以下凭据登录到自己的帐户:

content-manager:C0nt3ntM4n4g3r
1

实验室-从业者

服务器端模板注入,通过用户提供的对象进行信息泄露 >>

- name: 实验室-从业者
  desc: 服务器端模板注入,通过用户提供的对象进行信息泄露 >>
  avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
  link: https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-with-information-disclosure-via-user-supplied-objects
  bgColor: '#001350'
  textColor: '#4cc1ff'
1
2
3
4
5
6

# 实操

点击 “ACCESS THE LAB” 进入实验室。

Not Found Image

一个购物站点。

Not Found Image

# 识别模板引擎

使用题目中提供的用户名和密码进行登录。

Not Found Image

登录之后,随便进入一个商品的详情页面,在底部可看到一个 “Edit template”(更改模板)的按钮,点击它。

Not Found Image

和前面的某些实验室一样,我们可以自己编辑和提交模板。

默认的模板中存在几个预设的表达式,它们是通过{{}}来执行的。

Not Found Image

尝试注入表达式49,但产生了错误。从错误信息中识别到关键字 “django”。

Not Found Image

这下对了,Django 框架具有自己的模板引擎。

Not Found Image

# 利用-1

我找到了一个 Github 项目,它收集了各种漏洞的攻击载荷,其中就包括 ssti:https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md (opens new window)

还有我们想要的 Django 模板注入载荷。

Not Found Image

根据文档所说,表达式49会在 django 中引发错误,这在前面已经试验过了。

Not Found Image

尝试注入以下表达式:

ih0vr{{364|add:733}}d121r
1

返回了预期的结果ih0vr1097d121r。

Not Found Image

但是文档中有关于 django 模板注入的信息很少。

根据理论学习到的内容,我尝试暴破模板的变量名称。

Not Found Image

BurpSuite 刚好有一个内置的变量名列表,可用于暴破服务端模板变量。

Not Found Image

最终,我只得到product变量,而这个变量刚好是默认模板中的预设内容。

Not Found Image

该变量中也仅包含商品信息,没有任何可用的内容。

{{ product }}
1
Not Found Image

# 利用-2

我继续翻阅 Github 中关于 django 模板注入的文档,发现一个表达式{% debug %}可用于获取环境信息。

Not Found Image

注入表达式{% debug %},成功获得环境信息。

Not Found Image

此外,你还可以注入以下表达式,然后点击 “Save”(保存)按钮。

<pre>{% debug %}</pre>
1

这将会生成一个经过格式化的列表,看起来比较顺眼。

Not Found Image

在这些环境信息中,我发现了 Jinja2 模板引擎。Django 框架虽然有自己的一套模板引擎,但经过些许配置后,它也能支持 Jinja2。而且网上有人说,Django 自带的模板引擎不好用,全部改装 Jinja2 了。

难道......

我识别到了一个变量settings,它是环境信息里 为数不多的对象。我尝试直接注入,但并没有得到什么有效信息。

Not Found Image

然后我翻阅了 Jinja2 模板注入的文档,发现一个值得注意的攻击载荷:

{{ settings.SECRET_KEY }}
1

这个变量名瞅起来咋那么眼熟?

Not Found Image

说干就干,注入这个表达式。

{{ settings.SECRET_KEY }}
1

得到一串奇奇怪怪的字符,难道是密钥?复制它。

Not Found Image

点击上方的 “Submit solution” 打开提交输入框,粘贴这串可疑字符,并点击 “确定”。

Not Found Image

密钥提交正确,实验完成。

Not Found Image
编辑 (opens new window)
从业者-记录在案的漏洞载荷-未知语言的服务端模板注入
专家-沙箱环境中的服务端模板注入

← 从业者-记录在案的漏洞载荷-未知语言的服务端模板注入 专家-沙箱环境中的服务端模板注入→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式