前言
打安洵杯线下的时分有一道Python
的SSTI
模板注入的AWD
标题, 由于之前没有怎样接触过关于Python
的攻防点, 一度被他人种了Python 内存马
都还没发现, 等竞赛中缀发现修补后的标题被打进来后, 查看流量记载才认识到攻击者前面是用的Flask
内存马打的, 之前看过大约的思绪却鸽了不断没学, 这里暂且记载一下相关学问点.
概念
常用的Python
框架有Django
、Flask
, 这两者都可能存在SSTI
破绽. Python 内存马
应用Flask
框架中SSTI
注入来完成, Flask
框架中在web
应用模板渲染的过程中用到render_template_string
停止渲染, 但未对用户传输的代码停止过滤招致用户能够经过注入歹意代码来完成Python
内存马的注入.
Flask 恳求上下文管理机制
当网页恳求进入Flask
时, 会实例化一个Request Context
. 在Python
中分出了两种上下文: 恳求上下文(request context)、应用上下文(session context). 一个恳求上下文中封装了恳求的信息, 而上下文的构造是运用了一个Stack
的栈构造, 也就是说它具有一个栈所具有的全部特性. request context
实例化后会被push
到栈_request_ctx_stack
中, 基于此特性便能够经过获取栈顶元素的办法来获取当前的恳求.
破绽环境
先用Flask
编写一个SSTI-Demo
:
from flask import Flask, request, render_template_string app = Flask(__name__) @app.route('/') def hello_world(): # put application's code here person = 'knave' if request.args.get('name'): person = request.args.get('name') template = '<h1>Hi, %s.</h1>' % person return render_template_string(template) if __name__ == '__main__': app.run()
感谢您的来访,获取更多精彩文章请收藏本站。
![](https://www.gyzsq.com/wp-content/uploads/2022/07/9259adea4619.gif)
© 版权声明
本站网络名称:
孤勇者社区
本站永久网址:
https://www.gyzsq.com
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ324470778删除处理。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
喜欢就支持一下吧
相关推荐
评论 共1条
![头像](/wp-content/themes/zibll/img/avatar-default.png)
欢迎您留下宝贵的见解!
- 最新
- 最热
只看作者