Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
browser-pwn — ブラウザエクスプロイトを対象としたリソースの更新コレクション。 | Kitploit
ツール/GitHubGitHub/m1ghtym0/browser-pwn
エクスプロイトファジングCTF論文と研究学習と教育厳選リソースバイナリエクスプロイト
GitHubm1ghtym0/browser-pwn

browser-pwn

ブラウザエクスプロイトを対象としたリソースの更新コレクション。

リポジトリを見る
8321145年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

ブラウザPwn

ブラウザの世界は、次の4つの主要プレイヤーによって支配されています:

  • Chromium/Chrome (Blink-Engine)
  • Firefox (Gecko-Engine)
  • Safari (WebKit-Engine)
  • Edge (Blink-Engine (旧 EdgeHTML-Engine)

以下は2つのパートに分かれています:

  • それらのアーキテクチャと実装を理解し、ソースからビルドする方法に役立つ情報
  • 計算機(calc)を起動させる機能を見つけるのに役立つ情報

目次

  1. エンジン
    • 概要
    • Chromium
    • Firefox
    • Safari
    • Edge
  2. エクスプロイト
    • 概要
    • Chromium
    • Firefox
    • Safari
    • Edge
  3. ツール
  4. JavaScript ドキュメント

エンジン

エンジン概要

  • JavaScriptエンジンの基礎:良いもの、悪いもの、そして醜いもの
  • JavaScriptエンジンの基礎:シェイプとインラインキャッシュ
  • JavaScriptエンジン - どうやって動いているのか (動画)

ソースの閲覧

もちろん、ソースを閲覧するにはお気に入りのセットアップを使うことができます。しかし、これらのリポジトリは比較的大きく、私自身も自分に合うセットアップを見つけるまでいくつか試してみました。まだ良いセットアップをお持ちでないなら、ここに参考になる私の経験をいくつか紹介します:

  • CTags (+Vim): 参照や呼び出しの追跡に適しています。このようなプリミティブなセットアップで大規模なソースツリーをナビゲートすることに慣れているなら、良い選択肢になるでしょう。 欠点は、もちろん近年の主要IDEが備えている機能が欠けていることです。
  • CLion: 私はコーディングの多くの場面でJetBrains製品を使っていますが、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はTurboFan用の可視化ツールとして Turbolizer を提供しています。

記事:

  • TurboFan入門
Turbolizerの使い方:
  1. --trace-turbo を指定してv8を実行: d8 --trace-turbo foo.js
  2. turbo-foo-0.json などの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はIonMonkey用の可視化ツールとして IonGraph を提供しています。

ソース
  • jit

Safari (Webkit)

プロジェクト | GitHub

WebkitのJavaScriptエンジンはJavaScriptCore (JSC)です。

JavaScriptCore

プロジェクト | Wiki | ソース

記事:

  • 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 (Low Level Interpreter)
  • Baseline JIT
  • DFG JIT (Data Flow Graph JIT)
  • FTL JIT (Faster Than Light Just In Time compiler)

Edge (Blink/EdgeHTML)

プロジェクト | GitHub

EdgeはレンダリングエンジンとしてBlinkとChromiumプロジェクトに切り替えたため、現在はv8を使用しています。もともとEdgeにはEdgeHTMLと呼ばれる独自のレンダリングエンジンがあり、それはChakraCore JavaScriptエンジンを採用していました。

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 Pwn

記事

  • 境界チェック除去によるTurboFanのエクスプロイト
  • saelo: JavaScript JITエンジンにおけるロジックバグの悪用
    • Phrack記事
    • 41con 19' スライド

CTFチャレンジ

  • 34c3: v9
    • ソース
    • WriteUp (エクスプロイトスクリプト)
  • 35c3: Krautflare
    • ファイル
    • WriteUp
    • WriteUp
  • CSAW-Finals-2018: ES1337
    • ファイル+WriteUp
  • Plaid CTF 2018: Roll a dice
    • ファイル
    • WriteUp
    • WriteUp
  • Google CTF Finals 2018: Just In Time
    • ファイル+WriteUp
    • スライド
    • WriteUp
  • *CTF 2019: oob-v8
    • ファイル
    • WriteUp
    • WriteUp
    • WriteUp
  • RealWorldCTF Quals 2019: accessible
    • ファイル
    • WriteUp

実世界

  • MobilePwn2Own 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 Pwn

記事

  • 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 (Beta 53)
    • 記事
    • 講演
    • スライド
  • https://saelo.github.io/posts/firefox-script-loader-overflow.html
  • SpiderMonkeyのUse-after-free (64.0a1)
    • 記事
  • CVE-2019-11707 Type Confusion
    • WriteUp
    • レポート
  • CVE-2019-11708 & CVE-2019-9810
    • WriteUp

Safari Pwn

CTFチャレンジ

  • RealWorldCTF 2018: Engine for Neophytes
    • ファイル
  • 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 Quals 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) ドキュメント

  • 型と値
  • オブジェクト
  • オブジェクトのプロパティ
ツールをダウンロード