Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2019-11708 — 전체 익스플로잇 체인 (CVE-2019-11708 & CVE-2019-9810) — Windows 64비트의 Firefox 대상. | Kitploit
도구/GitHubGitHub/0vercl0k/cve-2019-11708
ExploitationWeb Application ExploitationPayload DevelopmentArchived
GitHub0vercl0k/cve-2019-11708

CVE-2019-11708

전체 익스플로잇 체인 (CVE-2019-11708 & CVE-2019-9810) — Windows 64비트의 Firefox 대상.

저장소 보기
624786년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2019-11708 및 CVE-2019-9810을 위한 전체 체인 익스플로잇

이것은 Windows 64비트에서 Firefox를 대상으로 하는 전체 브라우저 손상 익스플로잇 체인(CVE-2019-11708 및 CVE-2019-9810)입니다. CVE-2019-9810을 사용하여 콘텐츠 프로세스와 부모 프로세스 모두에서 코드 실행을 얻고, CVE-2019-11708을 사용하여 부모 프로세스를 속여 임의의 URL로 이동하게 합니다.

bigint

저는 과거에 A journey into IonMonkey: root-causing CVE-2019-9810 기사와 관련 github 저장소에서 CVE-2019-9810의 근본 원인과 익스플로잇에 대해 다룬 바 있습니다.

CVE-2019-11708은 게시판 mfsa2019-19를 통해 수정되었으며 Mozilla 버그 트래커에서 Bug 1559858로 할당되었습니다. 다음은 문제 요약입니다:

root@kitploit:~
자식 프로세스와 부모 프로세스 간의 Prompt:Open IPC 메시지와 함께 전달된 매개변수의 불충분한 검증으로 인해
샌드박스가 적용되지 않은 부모 프로세스가 손상된 자식 프로세스가 선택한 웹 콘텐츠를 열 수 있습니다.
추가 취약점과 결합되면 사용자 컴퓨터에서 임의의 코드를 실행할 수 있습니다.

문제를 해결한 커밋은 여기에서 찾을 수 있습니다: Prompter.jsm에서 프롬프트 열기 호출 정리.

문제 개요

문제에 대한 전체 분석과 익스플로잇에 사용된 기술은 doar-e.github.io에 곧 게재될 기사에서 설명됩니다.

구성

익스플로잇은 Windows 19H2 64비트에서 테스트되었으며 Firefox의 맞춤 빌드를 대상으로 하므로 다른 환경에서 작동하게 하려면 약간의 작업이 필요하더라도 놀라지 마세요 :). 하지만 컴파일 없이 익스플로잇을 실행해보고 싶다면 release/firefox-68.0a1.en-US.win64.7z에 업로드한 패키지 브라우저를 준비했습니다. 여기에는 js.exe 셸과 js.exe, firefox.exe, xul.dll의 private 심볼 정보도 포함되어 있습니다.

익스플로잇은 Firefox에서 BigInt 지원이 활성화되어 있다고 가정합니다. 이는 about:config에서 javascript.options.bigint를 전환하여 설정할 수 있습니다.

bigint

익스플로잇 프로세스는 데이터 손상을 사용하여 권한 있는 JS 실행(일명 God Mode)을 얻습니다. 이는 Jüri Aedla가 Pwn2Own2014에서 사용한 기술의 구현이며, 제가 CVE-2019-9810을 익스플로잇했던 방식과는 매우 다릅니다(그리고 훨씬 더 편리합니다). 이는 익스플로잇 체인 동안 제어 흐름이 하이재킹되지 않음을 의미합니다.

  1. 익스플로잇은 CVE-2019-9810을 사용하여 God Mode 데이터 손상을 수행하고 현재 페이지를 새로고침합니다.
  2. 권한 있는 JS를 실행할 수 있게 되면 현재 프레임 메시지 관리자를 찾고 CVE-2019-11708을 트리거합니다.
  3. 이제 부모 프로세스가 임의의 페이지를 방문했으므로 CVE-2019-9810을 다시 익스플로잇하여 그곳에서도 권한 있는 JS 실행을 얻습니다.
  4. 이 시점에서 전체 브라우저(샌드박스 포함)가 손상됩니다. 첫 번째 단계는 payload/에서 찾을 수 있는 slimeshady.exe라는 로컬 페이로드를 다운로드하여 드롭하는 것입니다. 이 페이로드는 GDI를 사용하여 바탕화면에 여러 개의 애니메이션 Slime shady 스프라이트를 그립니다. 익스플로잇은 또한 모든 탭에 프레임 스크립트(권한 있는 JS)를 드롭하고 주입하여 전체 탐색을 백도어 처리합니다(이미 생성된 탭과 새로 생성된 탭 모두). 탭 백도어는 효과 면에서 CVE-2019-9810/payload와 유사하지만(모든 탭에 임의의 JS 주입), 이번에는 해키하고 더러운 훅 대신 Firefox 기능(Services.mm.loadFrameScript)을 사용하여 구현되었습니다.

실제로는 위에서 설명하지 않은 더 미묘한 세부 사항들이 많이 있습니다. 따라서 관심이 있다면 진실을 찾아 소스 코드 / 향후 기사를 읽어보시기 바랍니다 :).

2020년 6월 13일 업데이트: @rtfingc / 이슈 #1에 따르면, Mozilla는 2020년 2월 10일 커밋(Bug 1602485)으로 이 익스플로잇에서 제시된 데이터 손상을 완화했습니다.

페이로드 빌드

페이로드를 빌드하려면 VS 2017 x64 프롬프트에서 nmake를 실행하기만 하면 됩니다.

root@kitploit:~
CVE-2019-11708\payload>nmake

Microsoft (R) Program Maintenance Utility Version 14.16.27034.0
Copyright (C) Microsoft Corporation.  All rights reserved.

        taskkill /f /im payload.exe
ERROR: The process "payload.exe" not found.
        if not exist .\bin mkdir bin
        python src\genheaders.py sprites
        cl /O1 /nologo /ZI /W3 /D_AMD64_ /DWIN_X64 /sdl /Febin\payload.exe src\payload.cc /link /nologo /debug:full user32.lib
payload.cc
        del *.obj *.pdb *.idb
        if exist .\bin del bin\*.exp bin\*.ilk bin\*.lib
        start .\bin\payload.exe

이렇게 하면 payload\bin 디렉토리 안에 payload.exe / payload.pdb 파일이 생성됩니다.

Firefox 빌드

저는 다음 리비전 ID와 동기화된 로컬 Windows 빌드에 대해 이 익스플로잇을 작성했습니다: 2abb636ad481768b7c88619080cf224b2c266b2d (직접 빌드하고 싶지 않다면 제 빌드를 여기에 업로드했습니다: release/firefox-68.0a1.en-US.win64.7z):

root@kitploit:~
$ hg --debug id -i
2abb636ad481768b7c88619080cf224b2c266b2d

그리고 다음 mozconfig 파일을 사용했습니다:

root@kitploit:~
. "$topsrcdir/browser/config/mozconfigs/win64/common-win64"

ac_add_options --disable-crashreporter
ac_add_options --enable-debug-symbols

. "$topsrcdir/build/mozconfig.clang-cl"
. "$topsrcdir/build/mozconfig.lld-link"

# .mozbuild에 있는 clang 버전 사용
CLANG_LIB_DIR="$(cd ~/.mozbuild/clang/lib/clang/*/lib/windows && pwd)"
export LIB=$LIB:$CLANG_LIB_DIR

ac_add_options --enable-js-shell
ac_add_options --enable-jitspew
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff64
도구 다운로드