easytornado(Tornado框架+SSTI)

打开/flag.txt后发现这样的页面,在url中看到了传递的两个参数,一个是文件路径,一个是加密后的一串数值。

 

打开/welcome.txt发现了render的提示字样,而render是一个渲染函数,结合框架Tornado,我们大体可以猜测出来,应该是SSTI注入漏洞。

在/hints.txt中我们发现了md5(cookie_secret+md5(filename)),给我的直觉是参数filehash的值。但是我们不知道cookie_secret的数值是多少,接着往下去找SSTI的注入点。

通过测试我们发现了如下页面,很清楚的看到传递的参数msg的数值被回显在了页面当中,我们猜测这里的msg就是我们的SSTI注入点,下面进行测试。

经过测试后发现确实是我们的SSTI注入点如下图。你要问我为什么测试datetime,emmm我只是百度到了这个框架的这个然后就试了一下,你也可以用数值啥的测试。

 

 经过大量测试以后发现该题目过滤了数不清的payload,导致我们无法按照平常的思路去解题,所以我们要想其他的办法去获取cookie_secret的数值。

 然后我就去githhub下载了Tornada的源码,(因为我不太想读文档,看的头昏脑胀),然后全局搜索cookie_secret得到如下结果

 

 然后,经过我的测试,我发现如下这个对象让我得到了cookie_secret的数值

 

 当然,我看别的师傅们是这样写道的:

通过模板注入如何拿到tornado中的cookie,用的就是handler.settings对象
handler 指向RequestHandler
而RequestHandler.settings又指向self.application.settings
所以handler.settings就指向RequestHandler.application.settings了!

总而言之呢,以后再遇到这个框架你就记住handler.settings能够获取配置信息就ok啦!

再往下呢,就是简单的得到filehash=md5(cookie_secret+md5(filename))咯 你可以选择在线网站,也可以锻炼自己动手写python脚本留着以后用。附上我的如下脚本。

import hashlib
def encode_md5(str):
  return hashlib.md5(str.encode("utf-8")).hexdigest()
str = '/fllllllllllllag'
print(encode_md5('a3d92ee7-cf16-4ffe-a32b-8bbc6207e776' + encode_md5(str)))

 

总结:

1.Tornado框架知识点,学会去找源码或者看文档

2.SSTI

 

posted @ 2022-09-29 22:53  hithub  阅读(311)  评论(0编辑  收藏  举报