Ejemplo n.º 1
0
    def test_parse_param(self, mock_subproc, mock_nvti, mock_db):

        mock_subproc.check_output.return_value = (
            'non_simult_ports = 22\nplugins_folder = /foo/bar'.encode())
        w = DummyDaemon(mock_nvti, mock_db)
        w.parse_param()
        self.assertEqual(mock_subproc.check_output.call_count, 1)
        self.assertEqual(OSPD_PARAMS, OSPD_PARAMS_OUT)
        self.assertEqual(w.scan_only_params.get('plugins_folder'), '/foo/bar')
Ejemplo n.º 2
0
    def test_get_insight_xml(self, mock_nvti, mock_db):
        w = DummyDaemon(mock_nvti, mock_db)
        out = '<insight>some insight</insight>'
        vt = w.VT['1.3.6.1.4.1.25623.1.0.100061']
        insight = vt.get('insight')
        res = w.get_insight_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                          insight)

        self.assertEqual(res, out)
Ejemplo n.º 3
0
    def test_get_severities_xml_failed(self):
        w = DummyDaemon()
        logging.Logger.warning = Mock()

        sever = {'severity_base_vector': u"\u0006"}
        w.get_severities_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                       severities=sever)

        assert_called_once(logging.Logger.warning)
Ejemplo n.º 4
0
    def test_get_dependencies_xml_failed(self):
        w = DummyDaemon()
        logging.Logger.error = Mock()

        dep = [u"\u0006"]
        w.get_dependencies_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                         vt_dependencies=dep)

        assert_called_once(logging.Logger.error)
Ejemplo n.º 5
0
 def test_get_severities_xml_failed(self, mock_nvti, mock_db):
     w = DummyDaemon(mock_nvti, mock_db)
     vt = w.VT['1.3.6.1.4.1.25623.1.0.100061']
     sever = {'severity_base_vector': u"\u0006"}
     logging.Logger.warning = Mock()
     w.get_severities_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                    severities=sever)
     if hasattr(Mock, 'assert_called_once'):
         logging.Logger.warning.assert_called_once()
Ejemplo n.º 6
0
    def test_get_mtime_xml_failed(self):
        w = DummyDaemon()
        logging.Logger.warning = Mock()

        mtime = u'\u0006'
        w.get_modification_time_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                              mtime)

        assert_called_once(logging.Logger.warning)
Ejemplo n.º 7
0
    def test_get_summary_xml(self, mock_nvti, mock_db):
        w = DummyDaemon(mock_nvti, mock_db)
        out = '<summary>some summary</summary>'
        vt = w.VT['1.3.6.1.4.1.25623.1.0.100061']
        summary = vt.get('summary')
        res = w.get_summary_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                          summary)

        self.assertEqual(res, out)
Ejemplo n.º 8
0
    def test_get_affected_xml_failed(self):
        w = DummyDaemon()
        logging.Logger.warning = Mock()

        affected = u"\u0006" + "affected"
        w.get_affected_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                     affected=affected)

        assert_called_once(logging.Logger.warning)
Ejemplo n.º 9
0
    def test_get_mtime_xml(self, mock_nvti, mock_db):
        w = DummyDaemon(mock_nvti, mock_db)
        out = '<modification_time>1533906565</modification_time>'
        vt = w.VT['1.3.6.1.4.1.25623.1.0.100061']
        mtime = vt.get('modification_time')
        res = w.get_modification_time_vt_as_xml_str(
            '1.3.6.1.4.1.25623.1.0.100061', mtime)

        self.assertEqual(res, out)
Ejemplo n.º 10
0
 def test_get_mtime_xml_failed(self, mock_nvti, mock_db):
     w = DummyDaemon(mock_nvti, mock_db)
     vt = w.VT['1.3.6.1.4.1.25623.1.0.100061']
     mtime = u'\u0006'
     logging.Logger.warning = Mock()
     w.get_modification_time_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                           mtime)
     if hasattr(Mock, 'assert_called_once'):
         logging.Logger.warning.assert_called_once()
Ejemplo n.º 11
0
    def test_get_ctime_xml(self, mock_nvti, mock_db):
        w = DummyDaemon(mock_nvti, mock_db)
        out = '<creation_time>1237458156</creation_time>'
        vt = w.VT['1.3.6.1.4.1.25623.1.0.100061']
        ctime = vt.get('creation_time')
        res = w.get_creation_time_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                                ctime)

        self.assertEqual(res, out)
Ejemplo n.º 12
0
 def test_get_dependencies_xml_failed(self, mock_nvti, mock_db):
     w = DummyDaemon(mock_nvti, mock_db)
     vt = w.VT['1.3.6.1.4.1.25623.1.0.100061']
     dep = [u"\u0006"]
     logging.Logger.error = Mock()
     w.get_dependencies_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                      vt_dependencies=dep)
     if hasattr(Mock, 'assert_called_once'):
         logging.Logger.error.assert_called_once()
Ejemplo n.º 13
0
    def test_get_dependencies_xml(self, mock_nvti, mock_db):
        w = DummyDaemon(mock_nvti, mock_db)
        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)
Ejemplo n.º 14
0
    def test_get_impact_xml(self):
        w = DummyDaemon()

        out = '<impact>some impact</impact>'
        vt = w.VTS['1.3.6.1.4.1.25623.1.0.100061']
        impact = vt.get('impact')
        res = w.get_impact_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061', impact)

        self.assertEqual(res, out)
Ejemplo n.º 15
0
    def test_get_custom_xml_failed(self):
        w = DummyDaemon()
        logging.Logger.warning = Mock()

        custom = {'a': u"\u0006"}
        w.get_custom_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                   custom=custom)

        assert_called_once(logging.Logger.warning)
Ejemplo n.º 16
0
    def test_get_detection_xml_failed(self):
        w = DummyDaemon()
        logging.Logger.warning = Mock()

        detection = u'\u0006'
        w.get_detection_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                      detection)

        assert_called_once(logging.Logger.warning)
Ejemplo n.º 17
0
    def test_feed_is_healthy_true(self):
        w = DummyDaemon()

        w.nvti.get_nvt_count.return_value = 2
        w.nvti.get_nvt_files_count.return_value = 2
        w.vts = ["a", "b"]

        ret = w.feed_is_healthy()
        self.assertTrue(ret)
Ejemplo n.º 18
0
    def test_get_refs_xml(self):
        w = DummyDaemon()

        out = '<refs><ref type="url" id="http://www.mantisbt.org/"/></refs>'
        vt = w.VTS['1.3.6.1.4.1.25623.1.0.100061']
        refs = vt.get('vt_refs')
        res = w.get_refs_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061', refs)

        self.assertEqual(res, out)
Ejemplo n.º 19
0
    def test_get_detection_xml(self, mock_nvti, mock_db):
        w = DummyDaemon(mock_nvti, mock_db)
        out = '<detection qod_type="remote_banner"/>'
        vt = w.VT['1.3.6.1.4.1.25623.1.0.100061']
        detection_type = vt.get('qod_type')

        res = w.get_detection_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                            qod_type=detection_type)

        self.assertEqual(res, out)
Ejemplo n.º 20
0
    def test_build_alive_test_opt_fail_1(self):
        w = DummyDaemon()
        logging.Logger.debug = Mock()

        target_options_dict = {'alive_test': 'a'}

        target_options = w.build_alive_test_opt_as_prefs(target_options_dict)

        assert_called_once(logging.Logger.debug)
        self.assertEqual(len(target_options), 0)
Ejemplo n.º 21
0
    def test_get_affected_xml(self):
        w = DummyDaemon()
        out = '<affected>some affection</affected>'
        vt = w.VTS['1.3.6.1.4.1.25623.1.0.100061']
        affected = vt.get('affected')

        res = w.get_affected_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                           affected=affected)

        self.assertEqual(res, out)
Ejemplo n.º 22
0
    def test_get_severities_xml(self, mock_nvti, mock_db):
        w = DummyDaemon(mock_nvti, mock_db)
        out = ('<severities><severity type="cvss_base_v2">'
               'AV:N/AC:L/Au:N/C:N/I:N/A:N</severity></severities>')
        vt = w.VT['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)
Ejemplo n.º 23
0
    def test_build_credentials(self):
        w = DummyDaemon()

        cred_out = [
            '1.3.6.1.4.1.25623.1.0.105058:1:entry:ESXi login name:|||username',
            '1.3.6.1.4.1.25623.1.0.105058:2:password:ESXi login password:|||pass',
            'auth_port_ssh|||22',
            '1.3.6.1.4.1.25623.1.0.103591:1:entry:SSH login name:|||username',
            '1.3.6.1.4.1.25623.1.0.103591:2:password:SSH key passphrase:|||pass',
            '1.3.6.1.4.1.25623.1.0.103591:4:file:SSH private key:|||',
            '1.3.6.1.4.1.25623.1.0.90023:1:entry:SMB login:|||username',
            '1.3.6.1.4.1.25623.1.0.90023:2:password]:SMB password :|||pass',
            '1.3.6.1.4.1.25623.1.0.105076:1:password:SNMP Community:some comunity',
            '1.3.6.1.4.1.25623.1.0.105076:2:entry:SNMPv3 Username:username',
            '1.3.6.1.4.1.25623.1.0.105076:3:password:SNMPv3 Password:pass',
            '1.3.6.1.4.1.25623.1.0.105076:4:radio:SNMPv3 Authentication Algorithm:some auth algo',
            '1.3.6.1.4.1.25623.1.0.105076:5:password:SNMPv3 Privacy Password:privacy pass',
            '1.3.6.1.4.1.25623.1.0.105076:6:radio:SNMPv3 Privacy Algorithm:privacy algo',
        ]
        cred_dict = {
            'ssh': {
                'type': 'ssh',
                'port': '22',
                'username': '******',
                'password': '******',
            },
            'smb': {
                'type': 'smb',
                'username': '******',
                'password': '******'
            },
            'esxi': {
                'type': 'esxi',
                'username': '******',
                'password': '******',
            },
            'snmp': {
                'type': 'snmp',
                'username': '******',
                'password': '******',
                'community': 'some comunity',
                'auth_algorithm': 'some auth algo',
                'privacy_password': '******',
                'privacy_algorithm': 'privacy algo',
            },
        }

        ret = w.build_credentials_as_prefs(cred_dict)

        self.assertEqual(len(ret), len(cred_out))
        self.assertIn('auth_port_ssh|||22', cred_out)
        self.assertIn(
            '1.3.6.1.4.1.25623.1.0.90023:1:entry:SMB login:|||username',
            cred_out,
        )
Ejemplo n.º 24
0
 def test_process_vts_bad_param_id(self, mock_nvti, mock_db):
     vts = {
         '1.3.6.1.4.1.25623.1.0.100061': {
             '3': 'new value'
         },
         'vt_groups': ['family=debian', 'family=general'],
     }
     w = DummyDaemon(mock_nvti, mock_db)
     w.load_vts()
     ret = w.process_vts(vts)
     self.assertFalse(ret[1])
Ejemplo n.º 25
0
    def test_get_solution_xml(self, mock_nvti, mock_db):
        w = DummyDaemon(mock_nvti, mock_db)
        out = '<solution type="WillNotFix">some solution</solution>'
        vt = w.VT['1.3.6.1.4.1.25623.1.0.100061']
        solution = vt.get('solution')
        solution_type = vt.get('solution_type')

        res = w.get_solution_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061',
                                           solution, solution_type)

        self.assertEqual(res, out)
Ejemplo n.º 26
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)
Ejemplo n.º 27
0
    def test_get_severity_score_v2(self):
        w = DummyDaemon()
        vtaux = {
            'severities': {
                'severity_type': 'cvss_base_v2',
                'severity_base_vector': 'AV:N/AC:L/Au:N/C:P/I:N/A:N',
            }
        }

        a = w.get_severity_score(vtaux)
        self.assertEqual(w.get_severity_score(vtaux), 5.0)
Ejemplo n.º 28
0
    def test_set_params_from_openvas_settings(self, mock_openvas: Openvas):
        mock_openvas.get_settings.return_value = {
            'non_simult_ports': '22',
            'plugins_folder': '/foo/bar',
        }
        w = DummyDaemon()
        w.set_params_from_openvas_settings()

        self.assertEqual(mock_openvas.get_settings.call_count, 1)
        self.assertEqual(OSPD_PARAMS, OSPD_PARAMS_OUT)
        self.assertEqual(w.scan_only_params.get('plugins_folder'), '/foo/bar')
Ejemplo n.º 29
0
 def test_feed_is_outdated_true(self, mock_nvti, mock_db):
     w = DummyDaemon(mock_nvti, mock_db)
     # Mock parse_param, because feed_is_oudated() will call it.
     with patch.object(w, 'parse_param', return_value=None):
         with patch.object(Path, 'exists', return_value=True):
             read_data = 'PLUGIN_SET = "1235";'
             with patch("builtins.open",
                        return_value=io.StringIO(read_data)):
                 # Return True
                 w.scan_only_params['plugins_folder'] = '/foo/bar'
                 ret = w.feed_is_outdated('1234')
                 self.assertTrue(ret)
Ejemplo n.º 30
0
    def test_get_severity_score_v3(self):
        w = DummyDaemon()
        vtaux = {
            'severities': {
                'severity_type':
                'cvss_base_v3',
                'severity_base_vector':
                'CVSS:3.0/AV:L/AC:H/PR:H/UI:R/S:U/C:N/I:L/A:L',
            }
        }

        self.assertEqual(w.get_severity_score(vtaux), 2.9)