TWiki 6.0.1 QUERYSTRING / QUERYPARAMSTRING XSS

2014.12.19
Credit: Peter09
Risk: Low
Local: No
Remote: Yes
CWE: CWE-79


Ogólna skala CVSS: 4.3/10
Znaczenie: 2.9/10
Łatwość wykorzystania: 8.6/10
Wymagany dostęp: Zdalny
Złożoność ataku: Średnia
Autoryzacja: Nie wymagana
Wpływ na poufność: Brak
Wpływ na integralność: Częściowy
Wpływ na dostępność: Brak

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


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top