
Веб-проверка уязвимостей повышения привилегий в Windows
Это кодовая база сервиса, работающего на: https://patchchecker.com. Короче говоря, PatchChecker — это веб-приложение (работающее на Flask), которое предоставляет вывод, аналогичный Watson. Однако использование PatchChecker не требует выполнения бинарного файла на целевой машине. В этот проект также включен веб-скрапер, который будет автоматически обновлять базу данных для PatchChecker, используя информацию с сайтов Microsoft. Это позволяет получить более масштабируемое и простое в использовании решение для поиска CVE, от которых система Windows защищена (или не защищена) с помощью патчей. Кроме того, любые другие CVE можно добавить во входные данные сборщика и проверять, если они есть на https://portal.msrc.microsoft.com. Вы также можете использовать это для получения данных для обновления Watson.
Дополнительную информацию об этом проекте можно найти здесь.
Чтобы использовать PatchChecker, вы можете либо перейти на публично размещенный сайт здесь на patchchecker.com, либо клонировать этот репозиторий через git, установить необходимые библиотеки, убедиться, что файл patches.db находится в той же директории, что и app.py, а затем запустить приложение с помощью python3 ./app.py.
После запуска приложения вы можете открыть файл "index.html" в браузере, чтобы фактически использовать сервис и получить список патчей, к которым тестируемая система уязвима.




Кроме того, вы можете использовать команду curl и сделать что-то вроде этого:
Запрос:
примечание: вы можете использовать любой разделитель, я использую пробелы:
curl 'https://patchchecker.com/checkprivs/' --data-raw 'wmicinfo=KB1231411 KB1231441 KB1234141&build_num=17763'
Ответ:
примечание: использованы некоторые поддельные KB, поэтому показана уязвимость ко всему, т.е. ничего не установлено
примечание: вывод обрезан
{
"total_vuln": 9,
"kbs_parsed": [
"KB1231411",
"KB1231441",
"KB1234141"
],
"total_kbs_parsed": 3,
"build": "17763",
"results": [
{
"refs": [
"https://exploit-db.com/exploits/46718",
"https://decoder.cloud/2019/04/29/combinig-luafv-postluafvpostreadwrite-race-condition-pe-with-diaghub-collector-exploit-from-standard-user-to-system/"
],
"name": "CVE-2019-0836",
"vulnerable": true
}
]
}
Чтобы запустить код из этого репозитория самостоятельно, не забудьте выполнить: python3 -m pip install -r requirements.txt и запустить с помощью python3. Для справки: я использовал python 3.7.3.
Скрипт patchdata_collector.py — это скрапер на pyppeteer, который обходит несколько сайтов Microsoft для получения необходимых данных по CVE, указанным в файле аргумента --cve-list.
Пример ожидаемого формата можно найти в файле cves.txt в каталоге samples. В основном это файл, разделенный строками, где каждая строка содержит следующее: CVE-XXXX-XXXX|https://website.com/resource-pertaining-to-CVE,http://second_resource.com
Вы поняли идею. Пример результирующего вывода можно найти в файле patches.db, включенном в проект.
Код не идеален, но он получает данные и пока работает. Для справки: с 9 CVE выполнение должно занять около 11 минут, результаты могут отличаться.
usage: patchdata_collector.py [-h] --cve-list CVE_LIST [--db DB] [--new-db] [-v]
[-vv] [--no-headless] [--json JSON]
optional arguments:
-h, --help show this help message and exit
--cve-list CVE_LIST line and pipe separated list containing CVEs and
related-URLs with information example: CVE-2020-1048|https://github.com/ionescu007/faxhell,https://github.com/ionescu007/PrintDemon
--db DB sqlite database filename
--new-db erases old database (if exists)
-v set output to debug (verbose)
-vv set output to annoying
--no-headless run browser with headless mode disabled
--json JSON json format output, argument should be json filename
Запуск time ./patchdata_collector.py --cve-list cves.txt --db antest.db --new-db приводит к следующему выводу:
2020-06-05 20:38:49.292 | INFO | __main__:main:181 - Loaded 10 CVEs
2020-06-05 20:38:49.430 | INFO | __main__:parsekb:33 - Parsing KBs for: CVE-2019-0836
2020-06-05 20:40:27.183 | INFO | __main__:parsekb:33 - Parsing KBs for: CVE-2019-1064
2020-06-05 20:41:07.158 | INFO | __main__:parsekb:33 - Parsing KBs for: CVE-2019-0841
2020-06-05 20:41:31.675 | INFO | __main__:parsekb:33 - Parsing KBs for: CVE-2019-1130
2020-06-05 20:42:58.527 | INFO | __main__:parsekb:33 - Parsing KBs for: CVE-2019-1253
2020-06-05 20:43:25.069 | INFO | __main__:parsekb:33 - Parsing KBs for: CVE-2019-1315
2020-06-05 20:44:57.974 | INFO | __main__:parsekb:33 - Parsing KBs for: CVE-2019-1385
2020-06-05 20:45:22.026 | INFO | __main__:parsekb:33 - Parsing KBs for: CVE-2019-1388
2020-06-05 20:46:48.407 | INFO | __main__:parsekb:33 - Parsing KBs for: CVE-2019-1405
2020-06-05 20:48:07.026 | INFO | __main__:parsekb:33 - Parsing KBs for: CVE-2020-1048
finished
real 11m27.793s
user 1m21.632s
sys 0m14.559s