full-disclosure-uk January 2010 archive
Main Archive Page > Month Archives  > full-disclosure-uk archives
full-disclosure-uk: [Full-disclosure] XSS Vulnerability in Activ

[Full-disclosure] XSS Vulnerability in Active Calendar 1.2.0

From: Marty Barbella <martybarbella_at_nospam>
Date: Mon Jan 11 2010 - 19:01:50 GMT
To: full-disclosure@lists.grok.org.uk


XSS Vulnerability in Active Calendar 1.2.0

Discovered by Martin Barbella <martybarbella@gmail.com>

Description of Vulnerability:



Active Calendar is PHP Class, that generates calendars (year, month or week view) as a HTML Table (XHTML-Valid). (From: http://micronetwork.de/activecalendar/index.php)

In the functions enableYearNav, enableMonthNav, enableDayLinks, and enableDatePicker of the activeCalendar class, certain variables are assigned the value of $_SERVER['PHP_SELF'] when either no value is specified for $link, or the value of $link is false. The values of these variables are not sanitized later, resulting in several cross site scripting vulnerabilities.

Systems affected:



This has been confirmed in version 1.2.0 of Active Calendar. Previous versions may also be affected.

Impact:



When a user is tricked into clicking on a malicious link or submitting a specially crafted form, the injected code travels to the vulnerable web server, which reflects the attack back to the user's browser. The browser then executes the code because it came from a "trusted" server. (From OWASP:
http://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29)

Mitigating factors:



The vulnerabilities will only affect applications which call the four functions above with the default values, or applications which call the above functions with false passed as the value of the $link parameter.

Proof of concept:



The code segment shows a basic example of how Active Calendar could be used with a call to one of the four vulnerable functions.

<?php
require_once("activecalendar.php");
$cal = new activeCalendar();
$cal->enableDayLinks();
?>

<?php print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html>
 <head>
   <title>Active Calendar XSS Example</title>  </head>
 <body>
   <center>
     <?php print $cal->showYear(); ?>
   </center>
 </body>
</html>

If this script was located at http://site/test.php, the vulnerability could be demonstrated by viewing
http://site/test.php/"><script>document.body.innerHTML='XSS';</script>.

Workaround:



When using the activeCalendar class, explicitly pass a sanitized value for the $link parameter when calling the functions enableYearNav, enableMonthNav, enableDayLinks, and enableDatePicker.

Full-Disclosure - We believe in it.
Charter: http://lists.grok.org.uk/full-disclosure-charter.html Hosted and sponsored by Secunia - http://secunia.com/