Йо) В общем в очередной раз когда у меня вытекли глаза от CVEDetails и его интерфейса родилась идея запилить свою базу данных уязвимостей и прочего секьюрити-стафа. Собственно, что мы небольшой командой и сделали. Получился Vulners.com. Весь движок написан на Python, в качестве базы MongoDB + Elasticsearch. Монга только для роботов-сборщиков информации, эластик только для фронтэнда. Ну посколько эластика для нас в новинку, то поиск хоть и работает весьма прикольно, но порой абсолютно непредсказуемо. Как и поиск кросс-референсов. Но обычно выдает именно то, что нужно. Собственно, чего там интересного и как искать. В данный момент в базе лежат security-advisory всех основных вендоров ОС, все CVE, весь ExploitDB, Metasploit, публичные репорты с HackerOne, VulnerabilityLab, публичные темы с Rdot, уязвимости софтов вроде OpenSSL и Mozilla и всякая мелочь. Основным удобством является lucene строка поиска с возможностью использовать dork-и. К сожалению, help мы все еще не родили и информацию приходится передавать первым бета-тестерам лично. Вот пару примеров dork-ов: type:hackerone team.name:yahoo - получим все уязвимости на H1, которые есть у Yahoo type:hackerone sql injection - так все упоминания SQLi, которые были в репортах type:exploitdb "windows 10" - эксплойты с эксплойтДБ с упоминанием Win10 reporter.username:isox - все репорты от указанного %username% typepenssl heartbleed - ищем только по репортам OpenSSL type:cve cvss.score:[8 TO 10] - совмещенный критерий. Ищем CVE с CVSS score 8 до 10 Ну собственно главный их минус, это не очевидно что является ключами дорков и какой синтаксис. Пока мы не родили suggest (надеюсь, на следующей неделе, с релизом 2 все будет), единственный вариант - смотреть исходный текст страницы, там будет data и исходным видом элемента. Любые имена ключей в json можно использовать как дорк. Мелкая полезная фишка - когда ты открываешь элемент. Например CVE-2010-3881, то внизу страницы будут автоматически подтянутые референсы. От самых релевантных к наиболее "похожим" с точки зрения шайтан-алгоритма. К примеру тут он сразу предлагает патчи для Ubuntu. То есть, когда есть актуальная связь через CVE-id, то все работает красиво. Подтянутся и эксплойты, и метасплойт-модули и все остальное. Вот такая вот поделка, надеюсь вам пригодится в быту. Стараемся ее делать лучше по мере получения отзывов. Рады любым фидбекам и фича-реквестам.
Фильтр по дате будет уже не следующей неделе. Я там маленько лоханулся в mapping-е эластики и сделал published: ключ строкой. Что бы поправить надо мигрировать индекс, а это не так просто и быстро. Про сортировку понял: Сортировка по дате. А что есть актуальность?
Идея хорошая, спасибо Собственно как некий тестер выступлю, по интерфейсу, так и было задумано, как у меня на скрине? Я про расположение нижнего окна, по отношению к краю экрана. http://pastenow.ru/HTNM
Спасибо за тесты. Нам очень не хватает живых примеров) Нет, оно должно было быть в левой колонке. При таком отображении "референсы" по разным типам бюллетений выстраиваются в блоки по типу с сортированнымм по релевантности title. То есть, этот блок должен был быть крайним слева. Можно данные браузера, что бы воспроизвести?
На самом деле так изначально и задумывалось, но думаю мы будем пересматривать некоторые аспекты дизайна
Для поиска: GET /api/v0/search/type:cve HTTP/1.1 ---> Строку поиска пихаем после /search/ Host: vulners.com Отдает json: {"results":[список dict-ов элементо]} Для листинга: GET /api/v0/hackerone/ HTTP/1.1 ---> После /v0/ пихаем тип элемента Host: vulners.com Отдает json: {"count":123, "results":["123","123"]} В results список id, которые можно потом вынуть вот так: GET /api/v0/hackerone/52181 HTTP/1.1 Host: vulners.com Отдаст json: {"results":{элемент из базы}} Пример для ExploitDB: GET /api/v0/exploitdb/ HTTP/1.1 Host: vulners.com {"count": 35429, "results": ["EDB-ID:11226", "EDB-ID:11264", "EDB-ID:11257", "EDB-ID:11233", "EDB-ID:11240", "EDB-ID:11271", "EDB-ID:11288", "EDB-ID:11238", "EDB-ID:11245", "EDB-ID:11276", "EDB-ID:11408", "EDB-ID:11357", "EDB-ID:11364", "EDB-ID:11369", "EDB-ID:11376", "EDB-ID:11403", "EDB-ID:11383", "EDB-ID:11395", "EDB-ID:11410", "EDB-ID:11352", "EDB-ID:11281", "EDB-ID:11293", "EDB-ID:11298", "EDB-ID:11301", "EDB-ID:11286", "EDB-ID:11325", "EDB-ID:11318", "EDB-ID:11306", "EDB-ID:11320", "EDB-ID:11262", "EDB-ID:11228".......]} GET /api/v0/exploitdb/EDB-ID:11272 HTTP/1.1 Host: vulners.com {"results": {"description": "CamShot v1.2 SEH Overwrite Exploit. Remote exploit for windows platform", "cvss": {"score": 0.0, "vector": "NONE"}, "sourceB64": "b'IyBDYW1TaG90IFNFSCBvdmVyd3JpdGUgYnkgdGVjbmlrDQoNCmltcG9ydCBzb2NrZXQsIHN5cw0KDQppZiBsZW4oc3lzLmFyZ3YpIT0yOg0KICAgIHByaW50ICJVc2FnZTogY2Ftc2hvdC5weSA8dGFyZ2V0PiINCiAgICBleGl0KCkNCg0KcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkNCnMuY29ubmVjdCgoc3lzLmFyZ3ZbMV0sODApKQ0KDQpwcmludCAiU2VuZGluZyBFeHBsb2l0IHRvOiIgKyBzeXMuYXJndlsxXQ0KDQojIEdFVCByZXF1ZXN0ICsgb3ZlcmZsb3cgc3RyaW5nDQpyZXF1ZXN0ICA9IkdFVCAvIg0KcmVxdWVzdCArPSJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiDQojIHNob3J0IGp1bXAgb3ZlciBTRSBIYW5kbGVyIEFkZHIgb3ZlcndyaXRlDQpyZXF1ZXN0ICs9Ilx4OTBceDkwXHhFQlx4MDciDQojIG92ZXJ3cml0ZSBTRUggdG8gcG9pbnQgdG8gbWZjNDAuZGxsIChubyBTYWZlU2VoKSBKTVAgW0VCUC00XQ0KcmVxdWVzdCArPSJceDlBXHhGN1x4QTlceDYxIg0KIyBOT1AncyBJIGhhdmVuJ3QgY2xlYW5lZCB1cDsgU1VCIEVCUCwtNTA4OyBYQ0hHIEVCUCxFRFg7ICh0byBzZXR1cCBCYXNlIEFkZHIgZm9yIEFMUEhBMyBlbmNvZGVkIHNoZWxsY29kZSkNCnJlcXVlc3QgKz0iXHg5MFx4OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4OTBceDkwXHg5MFx4ODFceEVEXHhGOFx4RkFceEZGXHhGRlx4OTBceDkwXHg4N1x4RUEiIA0KDQojIEFMUEhBMyBlbmNvZGVkIChsb3dlcmNhc2UgYXNjaWkgd2l0aCBFRFggYmFzZSkgTWV0YXNwbG9pdCBzaGVsbGNvZGUgKEV4ZWMgY2FsYy5leGUpDQpyZXF1ZXN0ICs9ImozMTRkMzRkanEzNGRqazM0ZDE0MjFyMTFyN2ozMTRkMzRkajIzNGRrbXI1MDJkcjVvMGQyNXVzejg1NTYxazIwMjEzbzgzMDYwNDk5OTEzbzI2NTZlMzI3ZTc5bGQxMzAzbDJrODhnbmQweDN4bXhsazg1NmM3Y240MGswNDlrbGU2NTcwb2IweGtrOWQzOTAxb2s1ZDNkbng1YzBlbXhuODMxbzU3Y294Nng1ZDRiNWRuZzZma2czMjI1MzJsOTExbDRvZjRrOGszeDg5bGRtYzE1MXhqOTUzbmZreDZmMzMzYzE5bDBtZTY0NWcxMjU0b2ttZWw1MDUwMjNjbzMwZW84N2ZtMTc4amczMG04bjJsMTRnNGM4ZWwzNDI5OTdiNXg5eG4wNDk4NDV4b2s0NDE1NTAzZzNnbjQxZm1kbGI2Zm5rNjI5Y2prazJqNTk4NzhuMjNlNDEzODgxbmI5YzFmbWUyNDFnbDFueDBlNzExMzY5bmU5MGoxM2UwYjEyMGRrZTU4MWQ0MjEyMWNvMDdjODNrMmxlbGU0eDVrM2Q3Z284NGQ5YzAxNXgwMzhkMzJsNW8zNmcwODhjMGI5MzAyMjlqOW9lN3gzMzJiamc4ZjM4MjVuazQyMjA4MTg4OGNseDlnMGszY2w1ajhrZjcxMzkxOTciDQoNCg0KcmVxdWVzdCArPSIgSFRUUC8xLjFcclxuIg0KcmVxdWVzdCArPSJIT1NUOiAxMjcuMC4wLjFcclxuXHJcbiINCg0Kcy5zZW5kKHJlcXVlc3QpDQoNCnByaW50ICJEb25lLiINCg0Kcy5jbG9zZSgpDQo='", "cvelist": [], "type": "exploitdb", "lastseen": "2015-08-08T02:59:56", "author": "tecnik", "title": "CamShot 1.2 - SEH Overwrite Exploit", "href": "https://www.exploit-db.com/exploits/11272/", "id": "EDB-ID:11272", "published": "2010-01-27"}}
Все возможные значения type можно вынуть вот так: GET /api/v0/suggest/distinct/type HTTP/1.1 ---> Здесь можно еще попихать другие имена полей после /disctict/{field_name} и получить примеры Host: vulners.com {"results": ["cve", "exploitdb", "debian", "metasploit", "ubuntu", "centos", "suse", "hackerone", "mozilla", "rdot", "vulnerlab", "opera", "openssl"]}
Возможно источники стоит отдельно как то выводить при поиске с возможностью выбора, типа какого нибудь выпадающего списка. Под кнопкой Next светится rd_arrow_right)
Мы хотим сделать авто-подскази в духе Гугла. Что бы он подсказывал возможные dork-и и их значения. Ну и help-пейдж. А как было бы удобно?
Перегружать интерфейс страшно...Пояснишь как было бы вкусно для тебя?) (https://moqups.com/ - крутая штука)
и ещё с кнопкой hack которая всё сама делает за тебя. находит уязвимость заливает шел и даёт сылку на шел.