在8月25日的安恒杯月赛题出现了一道flask debug配合任意文件读取的题,当时没有搞出来,作为萌新没见过这种题目,所以赛后经过讲解,自己本地复现了一波,收益良多。
此漏洞主要是利用Flask在debug会生成一个pin码。
E:\\1待处理\\123\\flaskfuxianaaa\\venv\\Scripts\\python.exe -m flask run
* Serving Flask app "app.py" (lazy loading)
* Environment: development
* Debug mode: on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 229-992-815
* Running on <http://127.0.0.1:5000/> (Press CTRL+C to quit)
image.png
问题出在这个pin码的生成,在同一台机子上多次启动同一个Flask应用时,会发现这个pin码是固定的。 # 0x02 —————————————————————————- 漏洞测试环境: windows python3.6
Flask 1.0.2
现在来分析pin码是如何生成的,本人是用pycharm单步debug,下面只给出重要代码段。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hellso World!'
if __name__ == '__main__':
app.run()
跟进app.run函数。
跟进run_simple函数
跟进DebuggedApplication类