Esempio n. 1
0
    def test_get_dependencies_xml(self):
        w = DummyDaemon()

        out = (
            '<dependencies>'
            '<dependency vt_id="1.2.3.4"/><dependency vt_id="4.3.2.1"/>'
            '</dependencies>'
        )
        dep = ['1.2.3.4', '4.3.2.1']
        res = w.get_dependencies_vt_as_xml_str(
            '1.3.6.1.4.1.25623.1.0.100061', dep
        )

        self.assertEqual(res, out)
Esempio n. 2
0
    def test_build_alive_test_opt_fail_1(self):
        dummy = DummyDaemon()
        logging.Logger.debug = Mock()

        target_options_dict = {'alive_test': 'a'}
        p_handler = PreferenceHandler(
            '1234-1234', None, dummy.scan_collection, None
        )
        target_options = p_handler.build_alive_test_opt_as_prefs(
            target_options_dict
        )

        assert_called_once(logging.Logger.debug)
        self.assertEqual(len(target_options), 0)
Esempio n. 3
0
    def test_set_plugins_false(self, mock_kb):
        w = DummyDaemon()

        w.scan_collection.get_vts = Mock()
        w.scan_collection.get_vts.return_value = {}
        w.load_vts()
        temp_vts = w.vts

        p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection,
                              temp_vts)
        p.kbdb.add_scan_preferences = Mock()
        r = p.prepare_plugins_for_openvas()

        self.assertFalse(r)
Esempio n. 4
0
    def test_update_progress(self, mock_set_scan_host_progress):
        w = DummyDaemon()

        mock_set_scan_host_progress.return_value = None

        msg = '0/-1'
        target_element = w.create_xml_target()
        targets = OspRequest.process_target_element(target_element)

        w.create_scan('123-456', targets, None, [])
        w.update_progress('123-456', 'localhost', msg)

        mock_set_scan_host_progress.assert_called_with('123-456', 'localhost',
                                                       100)
Esempio n. 5
0
    def test_set_boreas_alive_test_without_settings(self, mock_kb):
        dummy = DummyDaemon()
        t_opt = {'alive_test': 16}
        dummy.scan_collection.get_target_options = MagicMock(return_value=t_opt)
        ov_setting = {}
        with patch.object(Openvas, 'get_settings', return_value=ov_setting):
            p_handler = PreferenceHandler(
                '1234-1234', mock_kb, dummy.scan_collection, None
            )
            p_handler.scan_id = '456-789'
            p_handler.kbdb.add_scan_preferences = MagicMock()
            p_handler.prepare_boreas_alive_test()

            p_handler.kbdb.add_scan_preferences.assert_not_called()
Esempio n. 6
0
    def test_get_dependencies_xml_missing_dep(self):
        w = DummyDaemon()

        out = (
            '<dependencies>'
            '<dependency vt_id="1.3.6.1.4.1.25623.1.2.3.4"/>'
            '</dependencies>'
        )
        dep = ['1.3.6.1.4.1.25623.1.2.3.4', 'file_name.nasl']
        res = w.get_dependencies_vt_as_xml_str(
            '1.3.6.1.4.1.25623.1.0.100061', dep
        )

        self.assertEqual(res, out)
    def test_calculate_vts_collection_hash_no_params(self):
        w = DummyDaemon()
        vthelper = VtHelper(w.nvti)
        hash_out = vthelper.calculate_vts_collection_hash()

        vt_hash_str = ('1.3.6.1.4.1.25623.1.0.10006115339065651Data ' +
                       'length :2Do not randomize the  order  in  which ' +
                       'ports are scannedno')

        vt_hash = sha256()
        vt_hash.update(vt_hash_str.encode('utf-8'))
        hash_test = vt_hash.hexdigest()

        self.assertEqual(hash_test, hash_out)
Esempio n. 8
0
    def test_feed_is_outdated_none(self, mock_set_params: MagicMock,
                                   mock_path_exists: MagicMock):
        w = DummyDaemon()

        w.scan_only_params['plugins_folder'] = '/foo/bar'

        # Return None
        mock_path_exists.return_value = False

        ret = w.feed_is_outdated('1234')
        self.assertIsNone(ret)

        self.assertEqual(mock_set_params.call_count, 1)
        self.assertEqual(mock_path_exists.call_count, 1)
Esempio n. 9
0
    def test_get_severities_xml(self):
        w = DummyDaemon()

        out = ('<severities>'
               '<severity type="cvss_base_v2">'
               'AV:N/AC:L/Au:N/C:N/I:N/A:N'
               '</severity>'
               '</severities>')
        vt = w.VTS['1.3.6.1.4.1.25623.1.0.100061']
        severities = vt.get('severities')
        res = w.get_severities_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                             severities)

        self.assertEqual(res, out)
Esempio n. 10
0
    def test_set_ports(self, mock_kb):
        w = DummyDaemon()

        w.scan_collection.get_ports = MagicMock(return_value='80,443')

        p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None)
        p.scan_id = '456-789'
        p.kbdb.add_scan_preferences = MagicMock()
        p.prepare_ports_for_openvas()

        p.kbdb.add_scan_preferences.assert_called_with(
            p.scan_id,
            ['port_range|||80,443'],
        )
Esempio n. 11
0
    def test_set_target(self, mock_kb):
        w = DummyDaemon()

        w.scan_collection.get_host_list = MagicMock(return_value='192.168.0.1')

        p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None)
        p.scan_id = '456-789'
        p.kbdb.add_scan_preferences = MagicMock()
        p.prepare_target_for_openvas()

        p.kbdb.add_scan_preferences.assert_called_with(
            p.scan_id,
            ['TARGET|||192.168.0.1'],
        )
Esempio n. 12
0
    def test_process_vts_not_found(self, mock_kb):
        w = DummyDaemon()
        logging.Logger.warning = Mock()

        vts = {
            '1.3.6.1.4.1.25623.1.0.100065': {'3': 'new value'},
            'vt_groups': ['family=debian', 'family=general'],
        }

        p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, w.nvti)
        w.nvti.get_nvt_metadata.return_value = None
        p._process_vts(vts)

        assert_called_once(logging.Logger.warning)
Esempio n. 13
0
    def test_not_append_notus_oids(self):
        dummy = DummyDaemon()

        vts = {
            '1.3.6.1.4.1.25623.1.0.100061': {'1': 'new value'},
            'vt_groups': ['family=debian', 'family=general'],
        }

        p_handler = PreferenceHandler(
            '1234-1234', None, dummy.scan_collection, dummy.nvti, lambda _: True
        )
        re = p_handler._process_vts(vts)  # pylint: disable = protected-access

        self.assertEqual(re[0], [])
        self.assertEqual(re[1], {})
Esempio n. 14
0
    def test_set_credentials_empty(self, mock_kb):
        dummy = DummyDaemon()

        creds = {}

        dummy.scan_collection.get_credentials = MagicMock(return_value=creds)

        p_handler = PreferenceHandler(
            '1234-1234', mock_kb, dummy.scan_collection, None
        )
        p_handler.scan_id = '456-789'
        p_handler.kbdb.add_scan_preferences = MagicMock()
        ret = p_handler.prepare_credentials_for_openvas()

        self.assertTrue(ret)
Esempio n. 15
0
    def test_set_alive_no_setting(self, mock_kb):
        w = DummyDaemon()

        t_opt = {}
        w.scan_collection.get_target_options = MagicMock(return_value=t_opt)

        ov_setting = {}

        with patch.object(Openvas, 'get_settings', return_value=ov_setting):
            p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None)
            p.scan_id = '456-789'
            p.kbdb.add_scan_preferences = MagicMock()
            p.prepare_alive_test_option_for_openvas()

            p.kbdb.add_scan_preferences.assert_not_called()
Esempio n. 16
0
    def test_set_reverse_lookup_opt(self, mock_kb):
        w = DummyDaemon()

        t_opt = {'reverse_lookup_only': 1}
        w.scan_collection.get_target_options = MagicMock(return_value=t_opt)

        p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None)
        p.scan_id = '456-789'
        p.kbdb.add_scan_preferences = MagicMock()
        p.prepare_reverse_lookup_opt_for_openvas()

        p.kbdb.add_scan_preferences.assert_called_with(
            p.scan_id,
            ['reverse_lookup_only|||yes', 'reverse_lookup_unify|||no',],
        )
Esempio n. 17
0
    def test_set_host_options(self, mock_kb):
        w = DummyDaemon()

        exc = '192.168.0.1'

        w.scan_collection.get_exclude_hosts = MagicMock(return_value=exc)

        p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None)
        p.scan_id = '456-789'
        p.kbdb.add_scan_preferences = MagicMock()
        p.prepare_host_options_for_openvas()

        p.kbdb.add_scan_preferences.assert_called_with(
            p.scan_id, ['exclude_hosts|||192.168.0.1'],
        )
Esempio n. 18
0
    def test_get_feed_info_none(
        self, mock_set_params: MagicMock, mock_path_exists: MagicMock
    ):
        w = DummyDaemon()

        w.scan_only_params['plugins_folder'] = '/foo/bar'

        # Return None
        mock_path_exists.return_value = False

        ret = w.get_feed_info()
        self.assertEqual(ret, {})

        self.assertEqual(mock_set_params.call_count, 1)
        self.assertEqual(mock_path_exists.call_count, 1)
Esempio n. 19
0
    def test_set_host_options_none(self, mock_kb):
        dummy = DummyDaemon()

        exc = ''

        dummy.scan_collection.get_exclude_hosts = MagicMock(return_value=exc)

        p_handler = PreferenceHandler(
            '1234-1234', mock_kb, dummy.scan_collection, None
        )
        p_handler.scan_id = '456-789'
        p_handler.kbdb.add_scan_preferences = MagicMock()
        p_handler.prepare_host_options_for_openvas()

        p_handler.kbdb.add_scan_preferences.assert_not_called()
Esempio n. 20
0
    def test_build_alive_test_opt(self):
        w = DummyDaemon()

        alive_test_out = {
            "1.3.6.1.4.1.25623.1.0.100315:1:checkbox:Do a TCP ping": "no",
            "1.3.6.1.4.1.25623.1.0.100315:2:checkbox:TCP ping tries also TCP-SYN ping": "no",
            "1.3.6.1.4.1.25623.1.0.100315:7:checkbox:TCP ping tries only TCP-SYN ping": "no",
            "1.3.6.1.4.1.25623.1.0.100315:3:checkbox:Do an ICMP ping": "yes",
            "1.3.6.1.4.1.25623.1.0.100315:4:checkbox:Use ARP": "no",
            "1.3.6.1.4.1.25623.1.0.100315:5:checkbox:Mark unrechable Hosts as dead (not scanning)": "yes",
        }

        target_options_dict = {'alive_test': '2'}
        p = PreferenceHandler('1234-1234', None, w.scan_collection, None)
        ret = p.build_alive_test_opt_as_prefs(target_options_dict)

        self.assertEqual(ret, alive_test_out)

        # alive test was supplied via sepertae xml element
        w = DummyDaemon()
        target_options_dict = {'alive_test_methods': '1', 'icmp': '1'}
        p = PreferenceHandler('1234-1234', None, w.scan_collection, None)
        ret = p.build_alive_test_opt_as_prefs(target_options_dict)
        self.assertEqual(ret, alive_test_out)
Esempio n. 21
0
    def test_process_vts_bad_param_id(self):
        dummy = DummyDaemon()

        vts = {
            '1.3.6.1.4.1.25623.1.0.100061': {'3': 'new value'},
            'vt_groups': ['family=debian', 'family=general'],
        }

        p_handler = PreferenceHandler(
            '1234-1234', None, dummy.scan_collection, dummy.nvti
        )

        ret = p_handler._process_vts(vts)  # pylint: disable = protected-access

        self.assertFalse(ret[1])
Esempio n. 22
0
    def test_get_openvas_result_dead_hosts(self, MockDBClass):
        w = DummyDaemon()
        target_element = w.create_xml_target()
        targets = OspRequest.process_target_element(target_element)
        w.create_scan('123-456', targets, None, [])

        results = ["DEADHOST||| ||| ||| |||4", None]
        mock_db = MockDBClass.return_value
        mock_db.get_result.side_effect = results
        w.scan_collection.set_amount_dead_hosts = MagicMock()

        w.report_openvas_results(mock_db, '123-456', 'localhost')
        w.scan_collection.set_amount_dead_hosts.assert_called_with(
            '123-456', total_dead=4,
        )
Esempio n. 23
0
    def test_set_host_options_none(self, mock_kb):
        w = DummyDaemon()

        exc = ''
        fin = []

        w.scan_collection.get_exclude_hosts = MagicMock(return_value=exc)
        w.scan_collection.get_hosts_finished = MagicMock(return_value=fin)

        p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None)
        p._openvas_scan_id = '456-789'
        p.kbdb.add_scan_preferences = MagicMock()
        p.prepare_host_options_for_openvas()

        p.kbdb.add_scan_preferences.assert_not_called()
Esempio n. 24
0
    def test_get_custom_xml(self):
        out = ('<custom>'
               '<required_ports>Services/www, 80</required_ports>'
               '<category>3</category>'
               '<excluded_keys>Settings/disable_cgi_scanning</excluded_keys>'
               '<family>Product detection</family>'
               '<filename>mantis_detect.nasl</filename>'
               '<timeout>0</timeout>'
               '</custom>')
        w = DummyDaemon()

        vt = w.VTS['1.3.6.1.4.1.25623.1.0.100061']
        res = w.get_custom_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                         vt.get('custom'))
        self.assertEqual(len(res), len(out))
Esempio n. 25
0
    def test_process_vts_bad_param_id(self):
        w = DummyDaemon()

        vts = {
            '1.3.6.1.4.1.25623.1.0.100061': {
                '3': 'new value'
            },
            'vt_groups': ['family=debian', 'family=general'],
        }

        p = PreferenceHandler('1234-1234', None, w.scan_collection, w.nvti)

        ret = p._process_vts(vts)

        self.assertFalse(ret[1])
Esempio n. 26
0
    def test_get_params_xml_failed(self):
        w = DummyDaemon()
        logging.Logger.warning = Mock()

        params = {
            '1': {
                'id': '1',
                'type': 'entry',
                'default': u'\u0006',
                'name': 'dns-fuzz.timelimit',
                'description': 'Description',
            }
        }
        w.get_params_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061', params)

        assert_called_once(logging.Logger.warning)
    def test_result_without_vt_oid(self, mock_add_scan_alarm_to_list,
                                   MockDBClass):
        w = DummyDaemon()
        logging.Logger.warning = Mock()

        target_element = w.create_xml_target()
        targets = OspRequest.process_target_element(target_element)
        w.create_scan('123-456', targets, None, [])
        w.scan_collection.scans_table['123-456']['results'] = list()
        results = ["ALARM||| ||| ||| ||| |||some alarm|||path", None]
        MockDBClass.get_result.return_value = results
        mock_add_scan_alarm_to_list.return_value = None

        w.report_openvas_results(MockDBClass, '123-456')

        assert_called_once(logging.Logger.warning)
    def test_get_severities_xml(self):
        w = DummyDaemon()

        out = ('<severities>'
               '<severity type="cvss_base_v2">'
               '<value>AV:N/AC:L/Au:N/C:N/I:N/A:N</value>'
               '<origin>Greenbone</origin>'
               '<date>1237458156</date>'
               '</severity>'
               '</severities>')
        vt = w.VTS['1.3.6.1.4.1.25623.1.0.100061']
        severities = vt.get('severities')
        res = w.get_severities_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                             severities)

        self.assertEqual(res, out)
Esempio n. 29
0
    def test_build_alive_test_opt(self):
        w = DummyDaemon()

        alive_test_out = [
            "1.3.6.1.4.1.25623.1.0.100315:1:checkbox:Do a TCP ping|||no",
            "1.3.6.1.4.1.25623.1.0.100315:2:checkbox:TCP ping tries also TCP-SYN ping|||no",
            "1.3.6.1.4.1.25623.1.0.100315:7:checkbox:TCP ping tries only TCP-SYN ping|||no",
            "1.3.6.1.4.1.25623.1.0.100315:3:checkbox:Do an ICMP ping|||yes",
            "1.3.6.1.4.1.25623.1.0.100315:4:checkbox:Use ARP|||no",
            "1.3.6.1.4.1.25623.1.0.100315:5:checkbox:Mark unrechable Hosts as dead (not scanning)|||yes",
        ]
        target_options_dict = {'alive_test': '2'}
        p = PreferenceHandler('1234-1234', None, w.scan_collection, None)
        ret = p.build_alive_test_opt_as_prefs(target_options_dict)

        self.assertEqual(ret, alive_test_out)
Esempio n. 30
0
    def test_prepare_alive_test_no_enum_no_alive_test(self, mock_kb):
        w = DummyDaemon()

        t_opt = {'alive_test_methods': '1', 'icmp': '0'}
        w.scan_collection.get_target_options = MagicMock(return_value=t_opt)

        ov_setting = {'some_setting': 1}

        with patch.object(Openvas, 'get_settings', return_value=ov_setting):
            p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None)
            p._nvts_params = {}
            p.scan_id = '456-789'
            p.kbdb.add_scan_preferences = MagicMock()
            p.prepare_alive_test_option_for_openvas()

            p.kbdb.add_scan_preferences.assert_not_called()