Olat CMS - Persistent Cross-Site Scripting







Document Title:
Olat CMS - Persistent Calender Web Vulnerability

References (Source):

Release Date:

Vulnerability Laboratory ID (VL-ID):

Common Vulnerability Scoring System:

Product & Service Introduction:
OLAT is an open source Learning Management System offering a flexible online course system along with extensive 
features to guarantee learning and teaching independent of time and place. It has been created especially for 
public institutions such as universities, academies or colleges, however, it is also suitable for other businesses 
since OLAT can easily represent any didactic concept or be used in any kind of learning environment.

(Copy of the Vendor Homepage: http://www.olat.org/ )

Abstract Advisory Information:
The Vulnerability Laboratory Research Team discovered a persistent input validation web vulnerability in the Olat v7.8.0.1 CMS.

Vulnerability Disclosure Timeline:
2013-10-27:    Public Disclosure (Vulnerability Laboratory)

Discovery Status:

Affected Product(s):
Product: Content Management System (b20130821 N1)

Exploitation Technique:

Severity Level:

Technical Details & Description:
A persistent input validation web vulnerability is detected in the Olat Content Management System v7.8.0.1 (b20130821-N1) web-application.
The web vulnerability allows remote attackers to implement/inject own malicious script codes on application side of the online-service.

The persistent web vulnerability is located in the `Calender` module. Remote attackers are able inject malicious script codes 
via POST method request in the event name (o2cl) parameters of the calender service. The script code executes in the main calender 
index. Attacker can also share the calender event by using the public function to stream the code to all other users and administrators.

Exploitation of the persistent web vulnerability requires low user interaction and a low privileged web-application user account. 
Successful exploitation of the vulnerability can lead to persistent session hijacking (customers), account steal via persistent 
web attacks, persistent phishing or persistent module context manipulation.

Request Method(s):
				[+] [POST]

Vulnerable Module(s):
				[+] Calender

Vulnerable Parameter(s):
				[+] event name (o2cl)

Affected Module(s):
				[+] Calender Index - Event
				[+] Home Index - Events

Proof of Concept (PoC):
The persistent input validation web vulnerability can be exploited by remote attackers with low privileged application user account and 
only indirect user interaction (page visit). For demonstration or reproduce ...

Manual steps to reproduce ...
1. Install the CMS and login with your low privileged application user account
2. Open the calender, switch to event and add a new one
3. Inject your own malicious test script code to the event name & date input fields
4. Click the public event button and save the input to reload the edit site
5. The malicious test context executes in the index module of the calender
6. Click the home button and switch on the right site to the calender events
7. The malicious test code will be visible to all users in the same group or to the administrators
8. Successful reproduced ...!

PoC: Event Calender Index

<div id=``o_cal_wv_daylong`` style=``height: 20px;``><div class=``o_cal_wv_time o_cal_wv_row0`` style=``height: 100%;``></div>
<div class=``o_cal_wv_dlday o_cal_wv_row1 o_cal_wv_holiday`` style=``height: 100%;``></div><div class=``o_cal_wv_dlday o_cal_wv_row2`` 
style=``height: 100%;``></div><div class=``o_cal_wv_dlday o_cal_wv_row3`` style=``height: 100%;``></div>
<div class=``o_cal_wv_dlday o_cal_wv_row4`` style=``height: 100%;``></div><div class=``o_cal_wv_dlday o_cal_wv_row5`` 
style=``height: 100%;``><div class=``o_cal_wv_devent_wrapper``><div class=``o_cal_wv_devent o_cal_blue``>
<div class=``o_cal_wv_devent_content``><a href=``/olat/auth/1%3A3%3A1002014393%3A5%3A1%3Acmd%3Aedt%3Ap%3Aadmin_en%C2%A7myolat_
target=``oaa0`` onclick=``return o2cl();``>><[PERSISTENT INJECTED SCRIPT CODE!];@gmail.com</a><div class=``o_cal_links``></div></div>
<div class=``o_cal_wv_event_tooltip o_cal_allday``><div class=``o_cal_time``>Thursday, October 24, 2013</div>
<div class=``o_cal_wv_event_tooltip_content``>><[PERSISTENT INJECTED SCRIPT CODE!]</div>

URL: http://olat.localhost:8080/olat/dmz/1%3A2%3A1002010697%3A2%3A0%3Aofo_%3Afid/?o_winrndo=1

PoC: Dashboard - Calender

<div id=``o_c1002040024``><form method=``post`` name=``tb_ms_375920232`` action=``/olat/auth/1%3A3%3A1002040024%3A1%3A1/`` 
id=``tb_ms_375920232`` target=``oaa0`` onsubmit=``o_beforeserver();``><div class=``b_overflowscrollbox`` 
id=``b_overflowscrollbox_375920232``><table id=``b_table375920232``><tbody><tr class=`` b_first_child 
b_last_child``><td class=``b_align_normal b_first_child``><a name=``b_table``></a>All day today</td>
<td class=``b_align_normal b_last_child``><a href=``/olat/auth/1%3A3%3A1002040024%3A1%3A1%3Ar%3A0%3Ap%3Acmd.launch/`` 
onclick=``return o2cl()`` target=``oaa0``>><[PERSISTENT INJECTED SCRIPT CODE!]...</a``></td></tr></tbody></table></div>
<div class=``b_table_buttons``></div><input type=``hidden`` name=``cmd`` value=```` /><input type=``hidden`` name=``param`` value=```` /></form></div>

URL: http://olat.localhost:8080/olat/dmz/1%3A2%3A1002010697%3A2%3A0%3Aofo_%3Afid/

Solution - Fix & Patch:
The vulnerability can be patched by a secure encode and parse of the events calender name parameter.
Parse also the output section in the main home events listing (right bottom) and encode the calender index name list.

Security Risk:
The security risk of the persistent post inject web vulnerability is estimated as medium(+).

Credits & Authors:
Vulnerability Laboratory [Research Team] - Benjamin Kunz Mejri (bkm@evolution-sec.com) [www.vulnerability-lab.com]

Disclaimer & Information:
The information provided in this advisory is provided as it is without any warranty. Vulnerability Lab disclaims all warranties, 
either expressed or implied, including the warranties of merchantability and capability for a particular purpose. Vulnerability-
Lab or its suppliers are not liable in any case of damage, including direct, indirect, incidental, consequential loss of business 
profits or special damages, even if Vulnerability-Lab or its suppliers have been advised of the possibility of such damages. Some 
states do not allow the exclusion or limitation of liability for consequential or incidental damages so the foregoing limitation 
may not apply. We do not approve or encourage anybody to break any vendor licenses, policies, deface websites, hack into databases 
or trade with fraud/stolen material.

Domains:    www.vulnerability-lab.com   	- www.vuln-lab.com			       - www.evolution-sec.com
Contact:    admin@vulnerability-lab.com 	- research@vulnerability-lab.com 	       - admin@evolution-sec.com
Section:    www.vulnerability-lab.com/dev 	- forum.vulnerability-db.com 		       - magazine.vulnerability-db.com
Social:	    twitter.com/#!/vuln_lab 		- facebook.com/VulnerabilityLab 	       - youtube.com/user/vulnerability0lab
Feeds:	    vulnerability-lab.com/rss/rss.php	- vulnerability-lab.com/rss/rss_upcoming.php   - vulnerability-lab.com/rss/rss_news.php

Any modified copy or reproduction, including partially usages, of this file requires authorization from Vulnerability Laboratory. 
Permission to electronically redistribute this alert in its unmodified form is granted. All other rights, including the use of other 
media, are reserved by Vulnerability-Lab Research Team or its suppliers. All pictures, texts, advisories, source code, videos and 
other information on this website is trademark of vulnerability-lab team & the specific authors or managers. To record, list (feed), 
modify, use or edit our material contact (admin@vulnerability-lab.com or research@vulnerability-lab.com) to get a permission.

				Copyright � 2013 | Vulnerability Laboratory [Evolution Security]

DOMAIN: www.vulnerability-lab.com
CONTACT: research@vulnerability-lab.com