[SOJOBO-ADV-13-02] - MODx 2.2.10 Reflected Cross Site Scripting

I. * Information *
==================
Name : MODx 2.2.10 Reflected Cross Site Scripting
Software : MODx 2.2.10 and possibly below.
Vendor Homepage : http://modx.com/
Vulnerability Type : Reflected Cross-Site Scripting
Severity : Low (2/5)
Advisory Reference : SOJOBO-ADV-13-02 (http://www.enkomio.com/Advisories)
Credits: Sojobo dev team
Description: A Reflected Cross Site Scripting vulnerability was discovered 
during the testing of Sojobo, Static Analysis Tool.

II. * Details *
===============
A) Reflected Cross Site Scripting in findcore.php [Impact: 2/5]

In order to exploit this vulnerability the setup folder mustn't be deleted by 
the administrator during the installation process.
This precondition limit the impact of the vulnerability.

Follow a trace to reach the vulnerable code.

File: \setup\templates\findcore.php
80: <form id="corefinder" action="<?php echo $_SERVER['PHP_SELF'] ?>" 
method="post">

The variable '$_SERVER['PHP_SELF']' is considered a tainted input and can be 
manipulated in order to insert valid HTML code.

A test request is: 
/setup/templates/findcore.php/"><script>alert('XSS');</script>

B) Reflected Cross Site Scripting in xpdo.class.php [Impact: 1/5]

The log functionality of the xpdo class contains a Reflected Cross site 
scripting via the $_SERVER['PHP_SELF'] entrypoint. 
In order to exploit this vulnerability an error must occur during the 
classManager loading. This precondition limit the impact 
of the vulnerability.

Follow a trace to reach the vulnerable code.

File: \core\model\schema\build.modx.php
23: $manager= $xpdo->getManager();

File: \core\xpdo\xpdo.class.php
1848: $this->log(xPDO::LOG_LEVEL_ERROR, "Could not load xPDOManager class.");
..
1995: $this->_log($level, $msg, $target, $def, $file, $line);
..
2020: $file= (isset ($_SERVER['PHP_SELF']) || $target == 'ECHO') ? 
$_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_FILENAME'];
..
2032: $file= " @ {$file}";
..
2039: echo '<h5>[' . strftime('%Y-%m-%d %H:%M:%S') . '] (' . 
$this->_getLogLevel($level) . $def . $file . $line . ')</h5><pre>' . $msg . 
'</pre>' . "\n";
..
2042: echo '[' . strftime('%Y-%m-%d %H:%M:%S') . '] (' . 
$this->_getLogLevel($level) . $def . $file . $line . ') ' . $msg . "\n";

The variable '$_SERVER['PHP_SELF']' is considered a tainted input and can be 
manipulated in order to insert valid HTML code.

III. * Report Timeline *
========================

12 October 2013 - First contact (no timeline given)
14 October 2013 - Second contact (no timeline given)
21 October 2013 - Third contact (no response)
22 October 2013 - Advisory released

IV. * About Sojobo *
====================
Sojobo allows you to find security vulnerabilities in your PHP web application 
source code before others do.
By using the state of the art tecniques Sojobo is able to identify the most 
critical vulnerabilities in your code 
and limit the number of false positives.

Reply via email to