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.
This has been confirmed in version 1.2.0 of Active Calendar. Previous
versions may also be affected.
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:
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
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.
$cal = new activeCalendar();