[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



[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.