Flask开启Debug模式
- [1. 漏洞原理](#1. 漏洞原理)
- [2. 漏洞危害](#2. 漏洞危害)
- [3. 漏洞修复](#3. 漏洞修复)
1. 漏洞原理
在 Flask 中:
python
app.run(debug=True)
# 或
FLASK_ENV=development
FLASK_DEBUG=1
会启用 Werkzeug Debugger,其核心功能是:自动重载代码,显示完整异常堆栈,并且会提供一个交互式 Python 控制台(Console)
一般来讲,在生产环境中,一旦可被访问,等同于远程代码执行(RCE)
想要弹出debug页面,需要网站本身抛出一个未被捕获的异常,高版本的 Flask 有一个 PIN 来保护 Console 页面,防止任意代码执行,但是这个 PIN 生成的算法相对固定,可以被破解
2. 漏洞危害
Console 可能导致RCE,即使无法实现RCE,也会导致信息泄漏:
- 服务器绝对路径
- 环境变量
- 数据库连接字符串
- API Key / Token
- Flask SECRET_KEY
- 等等
漏洞实际的危害根据可利用的程度来定
3. 漏洞修复
禁用 debug 模式:
python
app.run(debug=False)
或者:
bash
export FLASK_ENV=production