TWiki 6.0.1 QUERYSTRING / QUERYPARAMSTRING XSS

2014-12-19T00:00:00
ID PACKETSTORM:129654
Type packetstorm
Reporter Onur YILMAZ
Modified 2014-12-19T00:00:00

Description

                                        
                                            `This is an advisory for TWiki Administrators: The TWiki Variables QUERYSTRING and QUERYPARAMSTRING may expose a cross-site scripting vulnerability.  
  
TWiki ( http://twiki.org ) is an Open Source Enterprise Wiki and Web Application Platform used by millions of people.  
  
* Vulnerable Software Version  
* Attack Vectors  
* Impact  
* Severity Level  
* MITRE Name for this Vulnerability  
* Details  
* Countermeasures  
* Hotfix for TWiki Production Release  
* Verify Hotfix  
* Authors and Credits  
* Action Plan with Timeline  
* External Links  
* Feedback  
  
---++ Vulnerable Software Version  
  
* TWiki-6.0.1 [2]  
  
---++ Attack Vectors  
  
Attack can be done by viewing wiki pages or by logging in by issuing HTTP GET requests towards the TWiki server (usually port 80/TCP).  
  
---++ Impact  
  
Specially crafted parameters open up XSS (Cross-Site Scripting) attacks.  
  
---++ Severity Level  
  
The TWiki SecurityTeam triaged this issue as documented in TWikiSecurityAlertProcess and assigned the following severity level:  
  
* Severity 3 issue: TWiki content or browser is compromised.   
  
---++ MITRE Name for this Vulnerability  
  
The Common Vulnerabilities and Exposures project has assigned the name CVE-2014-9325 [7] to this vulnerability.   
  
---++ Details  
  
A malicious person can use specially crafted URL parameters to TWiki scripts that execute arbitrary JavaScript code in the browser. Examples:  
  
Specially crafted parameter to the view script of TWiki:  
  
GET /do/view/Main/TWikiPreferences?'"--></style></script><script>alert('CVE-2014-9325 vulnerable')</script>  
  
TWiki decodes the URL parameters and pops up a !JavaScript alert box showing "CVE-2014-9325 vulnerable!"  
  
---++ Countermeasures  
  
* Apply hotfix (see patch below).  
* Use the web server software to restrict access to the web pages served by TWiki.  
  
---++ Hotfix for TWiki Production Release  
  
No TWiki patch release will be done to address this issue. Instead, apply the patches to the two files below.  
  
---+++ Patch lib/TWiki.pm  
  
Affected file: =twiki/lib/TWiki.pm=  
  
=======( 8>< CUT )===============================================  
--- TWiki.pm (revision 28488)  
+++ TWiki.pm (working copy)  
@@ -4803,7 +4803,10 @@  
  
sub QUERYSTRING {  
my $this = shift;  
- return $this->{request}->queryString();  
+ my $qs = $this->{request}->queryString();  
+ # Item7595: Sanitize QUERYSTRING  
+ $qs =~ s/(['\/<>])/'%'.sprintf('%02x', ord($1))/ge;  
+ return $qs;  
}  
  
sub QUERYPARAMS {  
=======( 8>< CUT )===============================================  
  
The patch might be managed in the e-mail. Get this patch from http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item7595 [8]  
  
---+++ Patch lib/TWiki/UI/View.pm  
  
Affected file: =twiki/lib/TWiki/UI/View.pm=  
  
=======( 8>< CUT )===============================================  
--- TWiki/UI/View.pm (revision 28488)  
+++ TWiki/UI/View.pm (working copy)  
@@ -349,8 +349,14 @@  
next if ($name eq 'topic');  
push @qparams, $name => $query->param($name);  
}  
- $tmpl =~ s/%QUERYPARAMSTRING%/TWiki::_make_params(1,@qparams)/geo;  
  
+ if ( $tmpl =~ /%QUERYPARAMSTRING%/ ) {  
+ my $qs = TWiki::_make_params( 1, @qparams );  
+ # Item7595: Sanitize QUERYPARAMSTRING  
+ $qs =~ s/(['\/<>])/'%'.sprintf('%02x', ord($1))/ge;  
+ $tmpl =~ s/%QUERYPARAMSTRING%/$qs/go;  
+ }  
+  
# extract header and footer from the template, if there is a  
# %TEXT% tag marking the split point. The topic text is inserted  
# in place of the %TEXT% tag. The text before this tag is inserted  
=======( 8>< CUT )===============================================  
  
__Notes:__  
  
* Learn how to apply patches: http://twiki.org/cgi-bin/view/Codev/HowToApplyPatch  
* This issue is tracked at: http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item7595  
  
---++ Verify Hotfix  
  
To verify the patch add the following parameter to any TWiki topic:  
  
?'"--></style></script><script>alert('CVE-2014-9325 vulnerable')</script>  
  
The site is vulnerable if a dialog box is shown with text "CVE-2014-9325 vulnerable!"   
  
---++ Authors and Credits  
  
* Credit to Robert Abela ( robert[at]netsparker.com) and Onur Yilmaz (onur[at]netsparker.com) for disclosing the issue to thetwiki-security@lists.sourceforge.net mailing list.  
* Peter Thoeny for verifying the issue, creating a fix, and creating the patch and advisory.  
  
---++ Action Plan with Timeline  
  
* 2014-12-09 - Robert Abela of Netsparker (https://www.netsparker.com/) discloses issue to TWikiSecurityMailingList  
* 2014-12-09 - developer verifies issue - Peter Thoeny  
* 2014-12-09 - developer fixes code - Peter Thoeny  
* 2014-12-15 - security team creates advisory with hotfix - Peter Thoeny  
* 2014-12-16 - send alert to TWikiAnnounceMailingList [5] and TWikiDevMailingList [6] - Peter Thoeny  
* 2014-12-18 - publish advisory in Codev web and update all related topics - Peter Thoeny  
* 2014-12-18 - issue a public security advisory to fulldisclosure[at]seclists.org, cert[at]cert.org, vuln[at]secunia.com, bugs[at]securitytracker.com, submissions[at]packetstormsecurity.org - Peter Thoeny  
  
---++ External Links  
  
[1]: http://twiki.org/cgi-bin/view/Codev/TWikiSecurityAlertProcess  
[2]: http://twiki.org/cgi-bin/view/Codev/TWikiRelease06x00x01  
[3]: http://twiki.org/cgi-bin/view/Codev/SecurityAlert-CVE-2014-9325 (will be created on 2014-12-18)  
[4]: http://twiki.org/cgi-bin/view/Codev/TWikiSecurityMailingList  
[5]: http://twiki.org/cgi-bin/view/Codev/TWikiAnnounceMailingList  
[6]: http://twiki.org/cgi-bin/view/Codev/TWikiDevMailingList  
[7]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9325 - CVE on MITRE.org  
[8]: http://develop.twiki.org/~twiki4/cgi-bin/view/Bugs/Item7595  
  
---++ Feedback  
  
Please provide feedback at the security alert topic, http://twiki.org/cgi-bin/view/Codev/SecurityAlert-CVE-2014-9325  
  
-- Peter Thoeny - 2014-12-18  
  
  
--  
> Peter Thoeny - Peter09[at]Thoeny.org  
> http://bit.ly/MrTWiki - consulting on enterprise collaboration  
> http://TWiki.org - is your team already TWiki enabled?  
> Knowledge cannot be managed, it can be discovered and shared  
> This e-mail is: (_) private (_) ask first (x) public  
`