1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

HTTP request smugglingってなんぞ

Last updated at Posted at 2021-11-20

BurpのScan実行結果に「HTTP request smuggling」なる脆弱性が存在した。初耳なので調べるナッシー!

概要

PHPの一部バージョンでApacheとの接続にApache2hanlerを用いている場合に存在する脆弱性

リクエストヘッダに特定のヘッダを付与すると、レスポンスボディにリクエストボディの文字列が付与されてしまう脆弱性
リクエストボディにscriptタグを記載することで標的に任意のjsを実行させることができる。

脆弱性番号: CVE-2018-17082

詳細

リクエストヘッダに「Transfer-Encoding: chunked」と「Content-Length:${任意の数字}」を付与すると、レスポンスボディにリクエストボディの内容が反射されてしまう。

このリクエストボディにscriptタグを用いてjavascriptを記載することで、任意のjavascriptを標的に実行させることができる。

Transfer-Encoding: chunkedとは?

HTTPでデータのサイズがわからない場合にチャンクとして分割して送ることを示す

Content-Lengthとは?

ボディのバイト長

攻撃手法

この脆弱性がどうやって攻撃に利用されるかよくわからないッシー!
ユーザーが自分でリクエストヘッダを弄る状況が考えられないし、他者にヘッダを強制されるとは思えない

攻撃原理

リクエストボディに相反するTransfer-Encoding: chunkedとContent-Lengthを同時に指定すると、RFCでは「Transfer-Encoding」を優先する事になっているが、実装ミスでそうでないためこの脆弱性が産まれた

ソースコードベースの解説

該当issueを見つけたけど理解不能ナッシー!

対策

主にphpのアップデート

参考リンク

徳丸さんの動画がすごいわかりやすかったナッシー!

https://yamory.io/blog/about-http-request-smuggling/
https://www.youtube.com/watch?v=VUBR1rVAquw
https://wa3.i-3-i.info/word16371.html

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?