Author: Gerendi Sandor Attila
Original Advisory: http://gsasec.blogspot.com/2009/05/claroline-v1811-cross-site-scripting.html
Date: May 05, 2009
Package: Claroline (1.8.11)
Product Homepage: http://www.claroline.net/
Versions Affected: v.1.8.11 (Other versions may also be affected)
Severity: Medium
Input passed to the 'Referer' header parameter when posting to '/claroline/linker/notfound.php' is not sanitized before it is returned to the user. This can be exploited to execute arbitrary HTML and script code in a user's browser session in context of an affected site.
Example:
GET /claroline_1_8_11/claroline/linker/notfound.php HTTP/1.0
Accept: */*
Referer: "><script>alert(123)</script><a href="
There are a couple of ways to inject arbitrary text (java script in our case) in the referer header parameter. One of the ways is using a rewrite rule on the remote attacker server. Example .htaccess file:
RewriteEngine on
RewriteRule ^referer/.*$ test.php [L]
Where the test.php file will be the container of the /claroline_1_8_11/claroline/linker/notfound.php link.
Now a request like: http://remoteatackersite/referer/?"><script>alert(123)</script><a%20href="
will return a page from wich if we call /claroline_1_8_11/claroline/linker/notfound.php we trigger the XSS.
Note: For the first request browsers like IE are required (which does not automatically httpencode the get params)
Status:
1. Contacted the author at: May 05, 2009 via http://forum.claroline.net/.
2. The author promptly (same day) fixed the problem, read at: http://forum.claroline.net/viewtopic.php?f=69&t=16193&p=42102#p42099