module
Pallete Projects Werkzeug Debugger Remote Code Execution
Disclosed | Created |
---|---|
06/28/2015 | 05/30/2018 |
Disclosed
06/28/2015
Created
05/30/2018
Description
This module will exploit the Werkzeug debug console to put down a Python shell. Werkzeug is included with Flask, but not enabled by default. It is also included in other projects, for example the RunServerPlus extension for Django. It may also be used alone.
The documentation states the following: "The debugger must never be used on production machines. We cannot stress this enough. Do not enable the debugger in production." Of course this doesn't prevent developers from mistakenly enabling it in production!
Tested against the following Werkzeug versions:
- 3.0.3 on Debian 12, Windows 11 and macOS 14.6
- 1.1.4 on Debian 12
- 1.0.1 on Debian 12
- 0.11.5 on Debian 12
- 0.10 on Debian 12
The documentation states the following: "The debugger must never be used on production machines. We cannot stress this enough. Do not enable the debugger in production." Of course this doesn't prevent developers from mistakenly enabling it in production!
Tested against the following Werkzeug versions:
- 3.0.3 on Debian 12, Windows 11 and macOS 14.6
- 1.1.4 on Debian 12
- 1.0.1 on Debian 12
- 0.11.5 on Debian 12
- 0.10 on Debian 12
Authors
h00die Graeme Robinson /@GraSec>
Platform
Python
Architectures
python
References
Module Options
To display the available options, load the module within the Metasploit console and run the commands ‘show options’ or ‘show advanced’:
msf > use exploit/multi/http/werkzeug_debug_rce msf /(e) > show actions ...actions... msf /(e) > set ACTION < action-name > msf /(e) > show options ...show and set options... msf /(e) > run

NEW
Explore Exposure Command
Confidently identify and prioritize exposures from endpoint to cloud with full attack surface visibility and threat-aware risk context.