понедельник, 18 июля 2016 г.

Vulners. Получаем список эксплойтов

Приветствую, уважаемый читатель!

Относительно недавно узнал про публичный сервис, который агрегирует информацию об уязвимостях, багах, эксплойтах и прочем ИБ-контенте, а именно о Vulners.com. Крайне удобная и полезная фишка данного сервиса, это возможность поиска публичных эксплойтов по CVE-номеру. Мне её очень не хватало, и приходилось ручками пробегаться по exploitdb, metasploit, securityfocus и т.д. Теперь всё в прошлом, пример автоматизации ниже J  





  
Эксплойты ищутся по базам metasploit и exploitdb. В случае нахождения, выводится вся необходимая информация по эксплойту, в т.ч. можно вывести текст эксплойта. Ответ от сервера возвращается в JSON-формате и очень удобно парсится. 

Powershell версия

Param(
    [string] $cvenum  #2016-0099
 )

$TLSProtocols = [System.Net.SecurityProtocolType]'Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $TLSProtocols

$cves = (Invoke-WebRequest -Uri "https://vulners.com/api/v3/search/lucene/?query=cvelist:$cvenum%20(type:exploitdb%20OR%20type:metasploit)" -Method GET).content | ConvertFrom-Json
    foreach ($cve in $cves.data.search) {
        Write-Host "***********New***************"
        $cve._id
        $cve._source.reporter
        $cve._source.href
        $cve._source.published
        $cve._source.cvss.score
        $cve._source.cvss.vector
        $cve._source.description
}

Запуск:
PS C:\scripts> .\vulners.ps1 -cvenum 2016-0099



Python версия

#!/usr/bin/env python
import sys
import json
import urllib
import urllib2


def main():
            cvenum = sys.argv[1] #for example - CVE-2016-0099
            url = 'https://vulners.com/api/v3/search/lucene/?query=cvelist:'+cvenum+'%20(type:exploitdb%20OR%20type:metasploit)'
            req = urllib2.Request(url, None)
            response = urllib2.urlopen(req)
            resp_json = json.loads(response.read())
            for jread in resp_json['data']['search']:
                        print '************New************'
                        print jread['_id']
                        print jread['_source']['type']
                        print jread['_source']['reporter']
                        print jread['_source']['href']
                        print jread['_source']['cvss']['score']
                        print '\n\r'
  
if __name__ == '__main__':
            main()

Запуск:
python /usr/Python/http_vulners.py CVE-2016-0099




В результате получаем список эксплойтов по идентификатору уязвимости. Может кому-то пригодится.

2 комментария: