姿势
题目描述:tornado框架
前期准备:先了解一下tornado框架是什么
Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架
简单说一下其框架漏洞的利用:
传入某文件的路径为“/Users/python/tornado-file-read/static/”
经过python中os.path.abspath函数处理
变成了“/Users/python/tornado-file-read/static”
所以:
如果有一个文件是“/Users/python/tornado-file-read/static.db”,
或一个目录是“/Users/python/tornado-file-read/static_private/”,
它们均以“/Users/python/tornado-file-read/static”开头
虽然这些文件并不在static这个目录下,但我们仍然可以读取到它们
综上所述,os.path.abspath函数会造成一个文件读取漏洞,使我们读取到了本不应该被读取的某些文件。
接着我们看题目:
hints.txt内容为:先md5加密filename,再结合cookie_secret进行md5加密
那就先加密filename,得到结果如下:
如何得到cookie_secret呢?
当我们修改filehash产生error的时候,会看到tornado的msg漏洞,利用方式如下:
/error?msg=命令
而题目涉及到render
tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{ {}}进行传递变量和执行简单的表达式。
所以我们可以利用 tornado render 结合msg 执行命令
Payload:
/error?msg={
{handler.settings}}
将得到的cookie_secret同加密的内容一同进行加密
filename加密后的内容如下:
3bf9f6cf685a6dd8defadabfb41a03a1
cookie_secret字段如下:
220bd4fa-8376-49f5-b16d-102c412c4f2c
一同加密
220bd4fa-8376-49f5-b16d-102c412c4f2c3bf9f6cf685a6dd8defadabfb41a03a1
得到
9d9f51561ce3a7548084351bf4cf57e4
加密的结果有什么用呢?
这里有个filehash,将加密结果赋值给它
/file?filename=/fllllllllllllag&filehash=9d9f51561ce3a7548084351bf4cf57e4
即可得到flag
总结
以上为[CTF/网络安全] 攻防世界 easytornado 解题详析[护网杯 2018 easy_tornado],考察模板注入。
我是秋说,我们下次见。