
웹 기반 Windows 권한 상승 취약점 점검
이는 https://patchchecker.com에서 실행되는 서비스의 코드 베이스입니다. 간단히 말해, PatchChecker는 Flask에서 실행되는 웹 애플리케이션으로, Watson과 유사한 출력을 제공합니다. 그러나 PatchChecker를 사용하면 대상 머신에서 바이너리를 실행할 필요가 없습니다. 이 프로젝트에는 Microsoft 사이트의 정보를 사용하여 PatchChecker의 데이터베이스를 자동으로 업데이트하는 웹 스크래퍼도 포함되어 있습니다. 이를 통해 Windows 시스템이 패치되었는지 여부를 확인하는 CVE 찾기 문제에 대해 더 확장 가능하고 사용하기 쉬운 솔루션을 제공합니다. 또한 https://portal.msrc.microsoft.com에 항목이 있는 한 다른 CVE를 데이터 수집기 입력에 추가하고 확인할 수 있습니다. 이 데이터를 사용하여 Watson을 업데이트할 수도 있습니다.
이 프로젝트에 대한 자세한 정보는 여기에서 찾을 수 있습니다.
PatchChecker를 사용하려면 공개 호스팅 웹사이트 여기 patchchecker.com에 방문하거나, 이 리포지토리를 git clone하고, 필요한 라이브러리를 설치한 후, 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 스크래퍼로, --cve-list 인수 파일에 지정된 CVE에 대한 필요한 데이터를 얻기 위해 여러 Microsoft 사이트를 반복합니다.
예상 형식의 예는 samples 디렉토리 내의 cves.txt 파일을 참조하세요. 기본적으로 각 줄에 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