SSTI——java里的ssti

 1.Velocity

SSTI——java里的ssti_第1张图片

2.FreeMarker 

SSTI——java里的ssti_第2张图片

因为从来没接触过java语言 所以对这些也是基本上一窍不通 这里只简单的提及 不做具体介绍

会找一下题来做 但是没有找到有关java ssti的题目

confusion1

看一下描述

SSTI——java里的ssti_第3张图片

打开题目

SSTI——java里的ssti_第4张图片

 没发现什么东西 但是 login register页面显示访问不成功 查看源代码找到了flag的位置

SSTI——java里的ssti_第5张图片

 根据题目描述结合图片分析这网站应该是用python编写的

蛇缠在大象身上猜测此系统使用了php+python

(php的标志是大象,Python的标志是蛇)

尝试一下ssti注入

SSTI——java里的ssti_第6张图片

发现有注入点,用tplmap自动注入一下

 SSTI——java里的ssti_第7张图片

用tplmap连接不成功 但是知道了是jinja2模板

利用payload进行注入

{{().__class__.__bases__[0].__subclasses__()[177].__init__.__globals__.__builtins__['open']('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt').read()}} 

SSTI——java里的ssti_第8张图片

发现有弹窗 尝试发现常用的class、subclasses、read都被过滤了,但是并未过滤request。

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

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

{{''[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

 得到flagSSTI——java里的ssti_第9张图片

 这道题的考点就是在 Flask 框架的全局对象request 这里 因为常见的class、subclasses、read都被过滤了

 ssti大框架就是这些 但是里面的细节还需要抠仔细 比如python的函数命令 php的函数 以及各种需要整理的payload 还有各种拓展到的知识 flask框架 python沙箱绕过 以及python的模板函数也要仔细学习

接下来会有一个整理 把ssti的内容彻底解决掉

 

 

 

 

 

 

你可能感兴趣的:(java,开发语言)