
Webbasierte Überprüfung auf Windows-Privesc-Schwachstellen
Dies ist die Codebasis für den Dienst, der unter https://patchchecker.com läuft. Kurz gesagt, PatchChecker ist eine Webanwendung (läuft auf Flask), die eine ähnliche Ausgabe wie Watson liefert. Allerdings ist es bei PatchChecker nicht erforderlich, eine Binärdatei auf dem Zielcomputer auszuführen. In diesem Projekt ist auch ein Web-Scraper enthalten, der die Datenbank für PatchChecker automatisch mit Informationen von Microsoft-Seiten aktualisiert. Dies ermöglicht eine skalierbarere und benutzerfreundlichere Lösung für das Problem, CVEs zu finden, gegen die ein Windows-System gepatcht ist (oder nicht). Darüber hinaus können beliebige andere CVEs zur Eingabe des Datensammlers hinzugefügt und überprüft werden, solange sie einen Eintrag auf https://portal.msrc.microsoft.com haben. Sie können dies auch verwenden, um die Daten für Watson zu aktualisieren.
Weitere Informationen zu diesem Projekt finden Sie hier.
Um den PatchChecker zu verwenden, können Sie entweder die öffentlich gehostete Website hier auf patchchecker.com besuchen oder dieses Repository klonen, die erforderlichen Bibliotheken installieren, sicherstellen, dass patches.db im selben Verzeichnis wie app.py ist, und dann die Anwendung mit python3 ./app.py starten.
Sobald die Anwendung gestartet ist, können Sie die enthaltene Datei "index.html" in einem Browser öffnen, um den Dienst tatsächlich zu nutzen und die Liste der Patches zu erhalten, gegen die das getestete System anfällig ist.




Alternativ können Sie einen curl-Befehl verwenden und Folgendes tun:
Anfrage:
Hinweis: Sie können jedes beliebige Trennzeichen verwenden, ich verwende hier Leerzeichen:
curl 'https://patchchecker.com/checkprivs/' --data-raw 'wmicinfo=KB1231411 KB1231441 KB1234141&build_num=17763'
Antwort:
Hinweis: Es wurden einige gefälschte KBs verwendet, daher wird es als anfällig für alles angezeigt, d.h. ich habe nichts installiert
Hinweis: Die Ausgabe ist abgeschnitten
{
"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
}
]
}
Um den Code in diesem Repository selbst auszuführen, vergessen Sie nicht, python3 -m pip install -r requirements.txt auszuführen und mit python3 zu starten. Ich habe python 3.7.3 verwendet.
Das Skript patchdata_collector.py ist der pyppeteer-Scraper, der mehrere Microsoft-Seiten durchläuft, um die gewünschten Daten für die im --cve-list-Argument angegebenen CVEs zu sammeln.
Ein Beispiel für das erwartete Format finden Sie in der Datei cves.txt im Verzeichnis samples. Im Grunde handelt es sich um eine zeilengetrennte Datei, in der jede Zeile Folgendes enthält: CVE-XXXX-XXXX|https://website.com/resource-pertaining-to-CVE,http://second_resource.com
Sie verstehen das Prinzip. Ein Beispiel für die resultierende Ausgabe finden Sie in der enthaltenen patches.db-Datei.
Der Code ist nicht perfekt, aber er sammelt die Daten und funktioniert vorerst. Als Referenz: Mit 9 CVEs sollte es etwa 11 Minuten dauern, Ihre Ergebnisse können abweichen.
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
Running time ./patchdata_collector.py --cve-list cves.txt --db antest.db --new-db yields the following output:
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