Rapid7 Vulnerability & Exploit Database

Pallete Projects Werkzeug Debugger Remote Code Execution

Back to Search

Pallete Projects Werkzeug Debugger Remote Code Execution

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

Author(s)

  • h00die <mike@shorebreaksecurity.com>
  • Graeme Robinson <metasploit <Graeme Robinson <metasploit@grobinson.me>/@GraSec>

Platform

Python

Architectures

python

Development

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 exploit(werkzeug_debug_rce) > show targets
    ...targets...
msf exploit(werkzeug_debug_rce) > set TARGET < target-id >
msf exploit(werkzeug_debug_rce) > show options
    ...show and set options...
msf exploit(werkzeug_debug_rce) > exploit

Time is precious, so I don’t want to do something manually that I can automate. Leveraging the Metasploit Framework when automating any task keeps us from having to re-create the wheel as we can use the existing libraries and focus our efforts where it matters.

– Jim O’Gorman | President, Offensive Security

;