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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
browser-pwn — 브라우저 익스플로잇을 대상으로 하는 업데이트된 리소스 모음입니다. | Kitploit
도구/GitHubGitHub/m1ghtym0/browser-pwn
ExploitationFuzzingCTFPapers & ResearchLearning & EducationCurated ResourcesBinary Exploitation
GitHubm1ghtym0/browser-pwn

browser-pwn

브라우저 익스플로잇을 대상으로 하는 업데이트된 리소스 모음입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Browser-Pwn

브라우저 세계는 4개의 주요 플레이어가 지배하고 있습니다:

  • Chromium/Chrome (Blink 엔진)
  • Firefox (Gecko 엔진)
  • Safari (WebKit 엔진)
  • Edge (Blink 엔진 (구 EdgeHTML 엔진)

다음 내용은 두 부분으로 나뉩니다:

  • 아키텍처와 구현을 이해하고 소스에서 빌드하는 데 도움이 되는 정보
  • 계산기 실행 기능을 찾는 데 도움이 되는 정보

목차

  1. 엔진
    • 개요
    • Chromium
    • Firefox
    • Safari
    • Edge
  2. 익스플로잇
    • 개요
    • Chromium
    • Firefox
    • Safari
    • Edge
  3. 도구
  4. JavaScript 문서

엔진

엔진 개요

  • JavaScript 엔진 기초: 좋은 것, 나쁜 것, 그리고 추한 것
  • JavaScript 엔진 기초: Shapes와 인라인 캐시
  • JavaScript 엔진 - 대체 어떻게 작동하는가 (영상)

소스 탐색

물론 소스를 탐색할 때 자신이 선호하는 설정을 사용할 수 있습니다. 하지만 이 저장소들은 비교적 크기가 크며, 저는 제게 맞는 설정을 찾을 때까지 몇 가지 다른 설정을 시도해 보았습니다. 따라서 아직 좋은 설정이 없다면, 도움이 될 만한 제 경험 몇 가지를 소개합니다:

  • CTags (+Vim): 참조 및 호출 추적에 잘 작동합니다. 이러한 순수한 설정으로 대규모 소스 트리를 탐색하는 데 익숙하다면 좋은 선택이 될 수 있습니다. 물론 단점은 요즘 대부분의 대형 IDE가 제공하는 기능이 없다는 점입니다.
  • CLion: 저는 많은 코딩 활동에 JetBrain 제품을 사용하지만, CLion은 특히 참조 추적에서 잘 작동하지 않았습니다. 물론 이는 설정 문제 때문일 수도 있습니다.
  • Eclipse: 한동안 사용하지 않았지만, 좋은 옵션으로 판명되었습니다. 안타깝게도 인덱서가 코드를 처리하는 데 많은 리소스를 소모합니다.
    • 여기에 Chromium 프로젝트에 대한 설정 설명이 있으며, 다른 프로젝트에서도 비슷하게 작동합니다.
  • ccls+VSCode: 지금까지 저에게 가장 좋은 옵션입니다. ccls는 저장소 인덱싱이 매우 빠르고 VSCode에서 훌륭하게 작동합니다. 다른 편집기 및 IDE와도 결합할 수 있습니다. https://github.com/MaskRay/ccls/wiki/Editor-Configuration 참조

Chromium (Blink)

프로젝트 | GitHub

기사:

  • Chromium이란 무엇인가? (DE)

Blink의 JavaScript 엔진은 V8입니다.

V8

프로젝트 | GitHub | 소스 | 빌드 방법

빌드 (Ubuntu 18.04):

root@kitploit:~
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=$PATH:./depot_tools
$ gclient
$ mkdir ./v8 && cd ./v8
$ fetch v8 && cd v8
$ git pull
$ gclient sync
$ ./build/install-build-deps.sh
$ tools/dev/gm.py x64.release
$ out/x64.release/d8

유용한 플래그:

  • --print-opt-code: 최적화 컴파일러가 생성한 코드
  • --print-byte-code: 인터프리터가 생성한 바이트코드
  • --trace-ic: 호출 지점이 만나는 다양한 객체 타입
  • --trace-opt 및 --trace-deopt: 어떤 함수가 (역)최적화되는지
  • --trace-turbo: Turbolizer 시각화를 위한 TurboFan 추적

기사:

  • V8 둘러보기

JIT 컴파일러: TurboFan

문서 | 블로그

V8은 Turbolizer라는 TurboFan용 시각화 도구를 제공합니다.

기사:

  • TurboFan 소개
Turbolizer 사용법:
  1. --trace-turbo 플래그로 v8 실행: d8 --trace-turbo foo.js
  2. json 파일 생성 (예: turbo-foo-0.json)
  3. v8/tools/turbolizer로 이동하여 README.md에 설명된 대로 npm으로 설치
  4. 디렉터리 서빙 (예: python -m SimpleHTTPServer 8000)
  5. localhost:8000으로 접속하여 turbo-foo-0.json 열기

Firefox (Gecko)

프로젝트 | GitHub

Gecko의 JavaScript 엔진은 Spidermonkey입니다.

Spidermonkey

프로젝트 | 소스 | 빌드 방법

소스
  • builtin

빌드 (Ubuntu 18.04):

root@kitploit:~
$ wget -O bootstrap.py https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py && python bootstrap.py
$ git clone https://github.com/mozilla/gecko-dev.git && cd gecko-dev
$ cd js/src
$ autoconf2.13

# This name should end with "_DBG.OBJ" to make the version control system ignore it.
$ mkdir build_DBG.OBJ
$ cd build_DBG.OBJ
$ ../configure --enable-debug --disable-optimize
# Use "mozmake" on Windows
$ make -j 6
$ js/src/js

JIT 컴파일러: IonMonkey

프로젝트

Spidermonkey는 IonGraph라는 IonMonkey용 시각화 도구를 제공합니다.

소스
  • jit

Safari (Webkit)

프로젝트 | GitHub

Webkit의 JavaScript 엔진은 JavaScriptCore (JSC)입니다.

JavaScriptCore

프로젝트 | 위키 | 소스

기사:

  • http://www.filpizlo.com/papers.html
소스
  • 런타임: Source/JavaScriptCore/runtime

빌드 (Ubuntu 18.04):

root@kitploit:~
# sudo apt install libicu-dev python ruby bison flex cmake build-essential ninja-build git gperf
$ git clone git://git.webkit.org/WebKit.git && cd WebKit
$ Tools/gtk/install-dependencies
$ Tools/Scripts/build-webkit --jsc-only --debug
$ cd WebKitBuild/Release
$ LD_LIBRARY_PATH=./lib bin/jsc

JIT 컴파일러: LLInt + Baseline JIT + DFG JIT + FTL JIT

WebKit은 오버헤드 성능 비용과 성능 이점 간의 트레이드오프를 나타내는 4계층 JIT 컴파일러 시스템을 갖추고 있습니다.

기사:

  • WebKit의 JavaScript JIT 최적화 소개
  • B3 JIT 컴파일러 소개
소스
  • LLInt (저수준 인터프리터)
  • Baseline JIT
  • DFG JIT (데이터 흐름 그래프 JIT)
  • FTL JIT (광속보다 빠른 JIT 컴파일러)

Edge (Blink/EdgeHTML)

프로젝트 | GitHub

Edge가 렌더링 엔진으로 Blink 및 Chromium 프로젝트로 전환한 이후, Edge는 V8을 사용하고 있습니다. 원래 Edge는 ChakraCore JavaScript 엔진을 사용하는 EdgeHTML이라는 자체 렌더링 엔진을 보유하고 있었습니다.

ChakraCore

GitHub | 빌드 방법

문서

  • 아키텍처 개요

소스

  • 런타임: Types
  • 런타임: Language

빌드 (Ubuntu 18.04):

root@kitploit:~
# To build ChakraCore on Linux: (requires Clang 3.7+ and Python 2)
$ apt-get install -y git build-essential cmake clang libicu-dev libunwind8-dev
$ git clone https://github.com/Microsoft/ChakraCore && cd ChakraCore
$ ./build.sh --cc=/usr/bin/clang-3.9 --cxx=/usr/bin/clang++-3.9 --arch=amd64 --debug
$ out/Debug/ch

익스플로잇

익스플로잇 개요

  • Saelo: JavaScript 엔진 공격
  • Awesome-Browser-Exploitation
  • WebKit 애플리케이션 공격 (슬라이드)
  • Saelo: 클라이언트 측 JIT 컴파일러 공격 - BlackHat 2018
    • 영상
    • 슬라이드
  • j0nathanj: 제로에서 제로데이까지 (Chakra 제로데이 찾기)
    • 영상 슬라이드
  • Saelo: Fuzzili - JavaScript 엔진용 (가이드) 퍼징
    • 영상
    • 슬라이드

Chromium 공격

기사

  • 경계 검사 제거를 통한 TurboFan 익스플로잇
  • saelo: JavaScript JIT 엔진의 논리 버그 익스플로잇
    • Phrack 기사
    • 41con 19' 슬라이드

CTF 챌린지

  • 34c3: v9
    • 소스
    • WriteUp (익스플로잇 스크립트)
  • 35c3: Krautflare
    • 파일
    • WriteUp
    • WriteUp
  • CSAW-Finals-2018: ES1337
    • 파일+WriteUp
  • Plaid CTF 2018: 주사위 굴리기
    • 파일
    • WriteUp
    • WriteUp
  • Google CTF 결승전 2018: Just In Time
    • 파일+WriteUp
    • 슬라이드
    • WriteUp
  • *CTF 2019: oob-v8
    • 파일
    • WriteUp
    • WriteUp
    • WriteUp
  • RealWorldCTF 예선 2019: accessible
    • 파일
    • WriteUp

실전

  • Mobile Pwn2Own 2013 - Android의 Chrome
  • https://halbecaf.com/2017/05/24/exploiting-a-v8-oob-write/
  • niklasb: Chrome IPC 익스플로잇
    • 영상
    • 슬라이드
  • CVE-2019-5782 Write-Up
  • CVE-2019-5790
  • CVE-2019-5786 Chrome 원격 코드 실행 취약점 분석

하드닝 및 완화

  • 힙 하드닝

Firefox 공격

기사

  • Spidermonkey 가지고 놀기
  • OR'LYEH? Firefox 위에 드리운 그림자
  • IonMonkey로의 여정: CVE-2019-9810 근본 원인 분석

CTF 챌린지

  • 33c3: Feuerfuchs
    • 소스
    • WriteUp
    • WriteUp+빌드
  • Blaze 2018: blazefox
    • 소스
    • WriteUp
    • WriteUp (익스플로잇 스크립트)
    • WriteUp (익스플로잇 스크립트)
    • 빌드+WriteUp
  • 35c3 FunFox
    • 소스

실전

  • Spidermonkey 익스플로잇 소개
    • 기사
  • Spidermonkey의 use-after-free (베타 53)
    • 기사
    • 발표
    • 슬라이드
  • https://saelo.github.io/posts/firefox-script-loader-overflow.html
  • Spidermonkey의 use-after-free (64.0a1)
    • 기사
  • CVE-2019-11707 타입 혼동
    • WriteUp
    • 보고서
  • CVE-2019-11708 & CVE-2019-9810
    • WriteUp

Safari 공격

CTF 챌린지

  • RealWorldCTF 2018: 초보자를 위한 엔진
    • 파일
  • 35c3: WebKid
    • 소스
    • WriteUp

실전

  • http://www.phrack.org/papers/attacking_javascript_engines.html
    • 소스
    • WriteUp+빌드
  • WebKit 퍼징 및 CVE-2019-8375 분석
  • CVE-2017-2446 WriteUp
  • https://saelo.github.io/posts/jsc-typedarray.slice-infoleak.html
  • https://github.com/saelo/pwn2own2018/tree/master/stage0
  • https://github.com/LinusHenze/WebKit-RegEx-Exploit
  • https://github.com/W00dL3cs/exploit_playground/tree/master/JavaScriptCore

하드닝 및 완화

  • 힙 하드닝
  • CagedPtr 소스 및 ArrayBuffer 예제

Edge

기사

  • bkth: Chakra 버그 이야기
  • bkth: JavaScript 컴파일러를 통한 Edge 공격
    • 영상
    • 슬라이드

CTF 챌린지

  • Plaid 2017: chakrazy
    • WriteUp
  • N1CTF 2018: Chakra
    • 파일
  • RealWorldCTF 예선 2019: Appetizer
    • 파일
  • Trend Micro CTF 2019: ChakraCore 400
    • WriteUp
    • WriteUp
    • 익스플로잇

실전

  • bkth, S0rryMyBad: JIT이 아닌 버그, JIT 익스플로잇

도구

라이브러리:

  • pwnjs (브라우저 익스플로잇을 위한 JavaScript 라이브러리)

유틸리티

  • int64.js
  • utils.js

디버깅

  • shadow jemalloc 힙 익스플로잇 프레임워크 (Firefox에서 사용하는 힙 할당자)

JavaScript (ECMAScript) 문서

  • 타입과 값
  • 객체
  • 객체 속성
도구 다운로드