示例#1
0
    def test_url_is_not_404(self):
        all_urls = set()
        invalid = []

        for vuln_id in DBVuln.get_all_db_ids():
            db_vuln = DBVuln.from_id(vuln_id)

            if db_vuln.wasc:
                for wasc_id in db_vuln.wasc:
                    all_urls.add(db_vuln.get_wasc_url(wasc_id))

            if db_vuln.cwe:
                for cwe_id in db_vuln.cwe:
                    all_urls.add(db_vuln.get_cwe_url(cwe_id))

            for _, _, link in db_vuln.get_owasp_top_10_references():
                all_urls.add(link)

            for reference in db_vuln.references:
                all_urls.add(reference.url)

        session = requests.Session()
        for url in all_urls:
            if self.url_is_404(session, url):
                invalid.append(url)

        self.assertEqual(invalid, [])
示例#2
0
    def test_from_id(self):
        dbv = DBVuln.from_id(123)

        _file = os.path.join(DBVuln.DB_PATH, DBVuln.DEFAULT_LANG,
                             '123-spec-example.json')
        self.assertEqual(dbv.db_file, _file)

        expected_references = [
            Reference("http://foo.com/xss",
                      "First reference to XSS vulnerability"),
            Reference("http://asp.net/xss", "How to fix XSS vulns in ASP.NET")
        ]

        self.assertEqual(dbv.title, u'Cross-Site Scripting')
        self.assertEqual(
            dbv.description, u'A very long text explaining what a XSS'
            u' vulnerability is')
        self.assertEqual(dbv.id, MOCK_ID)
        self.assertEqual(dbv.severity, MOCK_SEVERITY)
        self.assertEqual(dbv.wasc, [u'0003'])
        self.assertEqual(dbv.tags, [u'xss', u'client side'])
        self.assertEqual(dbv.cwe, [u'0003', u'0007'])
        self.assertEqual(
            dbv.owasp_top_10,
            {
                "2010": [1],
                "2013": [2]
            },
        )
        self.assertEqual(dbv.references, expected_references)
        self.assertEqual(dbv.fix_effort, 50)
        self.assertEqual(
            dbv.fix_guidance, u'A very long text explaining how developers'
            u' should prevent\nXSS vulnerabilities.\n')
示例#3
0
    def test_from_id(self):
        dbv = DBVuln.from_id(123)

        _file = os.path.join(DBVuln.DB_PATH, '123-spec-example.json')
        self.assertEqual(dbv.db_file, _file)

        expected_references = [Reference("http://foo.com/xss",
                                         "First reference to XSS vulnerability"),
                               Reference("http://asp.net/xss",
                                         "How to fix XSS vulns in ASP.NET")]

        self.assertEqual(dbv.title, u'Cross-Site Scripting')
        self.assertEqual(dbv.description, u'A very long description for'
                                          u' Cross-Site Scripting')
        self.assertEqual(dbv.id, MOCK_ID)
        self.assertEqual(dbv.severity, MOCK_SEVERITY)
        self.assertEqual(dbv.wasc, [u'0003'])
        self.assertEqual(dbv.tags, [u'xss', u'client side'])
        self.assertEqual(dbv.cwe, [u'0003', u'0007'])
        self.assertEqual(dbv.owasp_top_10, {"2010": [1], "2013": [2]},)
        self.assertEqual(dbv.fix, {u"guidance": u"A very long text explaining"
                                                u" how to fix XSS"
                                                u" vulnerabilities",
                                   u"effort": 50})
        self.assertEqual(dbv.references, expected_references)
        self.assertEqual(dbv.fix_effort, 50)
        self.assertEqual(dbv.fix_guidance, u"A very long text explaining"
                                           u" how to fix XSS vulnerabilities")
示例#4
0
    def test_url_is_not_404(self):
        all_urls = set()
        invalid = []

        for vuln_id in DBVuln.get_all_db_ids():
            db_vuln = DBVuln.from_id(vuln_id)

            if db_vuln.wasc:
                for wasc_id in db_vuln.wasc:
                    all_urls.add(db_vuln.get_wasc_url(wasc_id))

            if db_vuln.cwe:
                for cwe_id in db_vuln.cwe:
                    all_urls.add(db_vuln.get_cwe_url(cwe_id))

            for _, _, link in db_vuln.get_owasp_top_10_references():
                all_urls.add(link)

            for reference in db_vuln.references:
                all_urls.add(reference.url)

        session = requests.Session()
        for url in all_urls:
            if self.url_is_404(session, url):
                invalid.append(url)

        self.assertEqual(invalid, [])
示例#5
0
    def test_from_file(self):
        _file = os.path.join(DBVuln.DB_PATH, '123-spec-example.json')

        dbv_1 = DBVuln.from_file(_file)
        dbv_2 = DBVuln.from_id(123)

        self.assertEqual(dbv_1, dbv_2)
        self.assertEqual(dbv_1.db_file, _file)
示例#6
0
文件: info.py 项目: woverines/w3af
    def get_vuln_info_from_db(self):
        """
        Read the vulnerability information from the vulndb
        """
        if self._vulndb is not None:
            return self._vulndb

        if self._vulndb_id is not None:
            self._vulndb = DBVuln.from_id(self._vulndb_id)
            return self._vulndb
示例#7
0
文件: info.py 项目: 0x554simon/w3af
    def get_vuln_info_from_db(self):
        """
        Read the vulnerability information from the vulndb
        """
        if self._vulndb is not None:
            return self._vulndb

        if self._vulndb_id is not None:
            self._vulndb = DBVuln.from_id(self._vulndb_id)
            return self._vulndb
示例#8
0
    def test_no_multiple_spaces(self):
        invalid = []

        for vuln_id in DBVuln.get_all_db_ids():
            db_vuln = DBVuln.from_id(vuln_id)

            if '  ' in db_vuln.fix_guidance:
                invalid.append((db_vuln.db_file, 'fix_guidance'))

            if '  ' in db_vuln.description:
                invalid.append((db_vuln.db_file, 'description'))

        self.assertEqual(invalid, [])
示例#9
0
    def test_no_multiple_spaces(self):
        invalid = []

        for vuln_id in DBVuln.get_all_db_ids():
            db_vuln = DBVuln.from_id(vuln_id)

            if '  ' in db_vuln.fix_guidance:
                invalid.append((db_vuln.db_file, 'fix_guidance'))

            if '  ' in db_vuln.description:
                invalid.append((db_vuln.db_file, 'description'))

        self.assertEqual(invalid, [])
示例#10
0
    def test_load_es_lang(self):
        language = 'es'
        _file = os.path.join(DBVuln.DB_PATH, language, '123-spec-example.json')

        dbv_1 = DBVuln.from_file(_file, language=language)
        dbv_2 = DBVuln.from_id(123, language=language)

        self.assertEqual(dbv_1, dbv_2)
        self.assertEqual(dbv_1.db_file, _file)

        dbv = dbv_1

        expected_references = [
            Reference("http://foo.es/xss",
                      "Primera referencia a una vulnerabilidad de XSS"),
            Reference("http://asp.net/xss", "Como arreglar XSS en .NET")
        ]

        self.assertEqual(dbv.title, u'Cross-Site Scripting en ES')
        self.assertEqual(dbv.description,
                         u'Un texto largo donde se explica que es un XSS')
        self.assertEqual(dbv.id, MOCK_ID)
        self.assertEqual(dbv.severity, MOCK_SEVERITY)
        self.assertEqual(dbv.wasc, [u'0003'])
        self.assertEqual(dbv.tags, [u'xss', u'client side'])
        self.assertEqual(dbv.cwe, [u'0003', u'0007'])
        self.assertEqual(
            dbv.owasp_top_10,
            {
                "2010": [1],
                "2013": [2]
            },
        )
        self.assertEqual(dbv.references, expected_references)
        self.assertEqual(dbv.fix_effort, 50)
        self.assertEqual(
            dbv.fix_guidance, u'Y otro texto largo donde se explica como'
            u' arreglar vulnerabilidades de XSS')
示例#11
0
    print i['uuid'], "-", i['id']
    url = "https://127.0.0.1:8834/scans/" + str(i['id'])
    sonuc = requests.get(url=url, headers=header, verify=False)
    print sonuc.json()
    print "zafiyetler"
    for i in sonuc.json()['vulnerabilities']:
        print i['plugin_name']
        print i
    print "===="
    for i in sonuc.json()['vulnerabilities']:
        pluginName = i['plugin_name']
        IPler = sonuc.json()['info']['targets']
        if "SQL" in pluginName:
            from vulndb import DBVuln

            veritabaniID = DBVuln.from_id(42)
            rapor = "Tanim:" + str(veritabaniID.title) + "\n"
            rapor += "IP:" + str(IPler) + "\n"
            rapor += "Aciklama" + str(veritabaniID.description) + "\n"
            dosya = open("rapor.txt", "a")
            dosya.write(rapor)
            dosya.close()
    try:
        print "Taranan IPler:", sonuc.json()['info']['targets']
        publicIP = sozluk[str(sonuc.json()['info']['targets'])]
        url = "https://api.shodan.io/shodan/host/" + str(
            publicIP) + "?key=SLs2hD4d6Si43BPpEclUdsmDbA6ZNV70"
        sonuc = requests.get(url=url, verify=False)

    except:
        pass
示例#12
0
 def test_long_lines_with_new_line(self):
     dbv = DBVuln.from_id(125)
     self.assertEqual(dbv.description, u'Start line 1\n'
                                       u' Start line 2\n')
示例#13
0
 def test_long_lines(self):
     dbv = DBVuln.from_id(124)
     self.assertEqual(dbv.description, u'A very long description for'
                                       u' Cross-Site Scripting')
示例#14
0
# Name:    VulnDB_Json_serpico
# Description: Script to Parse VulnDB to Serpico Vulnerability Findings
# Author:      SAINTz
# Twitter: @__SAINTz__
# Version:     0.1 - 17 August 2018
# License:     GNU/GPL
##

import json
from vulndb import DBVuln

DB_IDs = DBVuln.get_all_db_ids()

export_json = []
for x in DB_IDs:
    dbv = DBVuln.from_id(x)
    data_tmp = {
        "affected_hosts": "null",
        "affected_users": 10,
        "approved": "true",
        "damage": 10,
        "discoverability": 10,
        "dread_total": 0,
        "effort": "Planned",
        "exploitability": 10,
        "id": dbv.id,
        "overview": "<paragraph>" + dbv.description + "</paragraph>",
        "poc": "<paragraph></paragraph>",
        "references": dbv.references,
        "remediation": "<paragraph>" + dbv.fix_guidance + "</paragraph>",
        "reproducability": 10,