妄想まとめ

研究とかWebセキュとか時事ネタとか。 @kazu1130_h

Client-side HTTP parameter pollution

Burpに新しく追加されてたのさっと読んでみた。


portswigger.net


pollution=汚染 という意味らしい。
HTTPパラメータ汚染……。うーん、、、想像つかん


AppsecEU 2009のこの資料に詳しくまとまってるらしい。
https://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf


ざっくり言うと、ユーザ入力を受け取ってパラメータに吐いてる箇所に、パラメータを追加して意味を変えちゃうこと?

うちだとURLインジェクションの一部として報告することになるかな。

例えば

<form action="?mode=edit&id=<?php print h($_GET["id"]); ?>" method="POST">

みたいなフォームを吐くPHPがあったとして、ここに

?id=2%26mode%3Ddelete

みたいなパラメータをつけてアクセスさせれば、

<form action="?mode=edit&id=2&amp;mode=delete" method="POST">

になって、編集のつもりでsubmitしたのにデータが消える、みたいな罠ページが作れると。

PHPは後についたパラメータを見るのでmode=editが消される。
しかも例えばintval($_GET["id"]) でDBから何かを引っ張ってきてたりすると、正しくデータを読めちゃうしで、意外と刺さる気がする。

AppSECの資料だとクライアント側だけじゃなく、サーバ側で起こす例(backendへのhttpアクセスがある時に等)とかWAFのバイパス、Rewrite時の挙動を狙った例とかにも言及されてる。この辺はCTFでたまに見る奴や。
なんとなくPHPにおけるparam=hoge -> param[]=hogeに近い何かを感じた。


……とはいえ、なんか名前のわりにぱっとしない。(※個人の感想です)
RFなんちゃらとかCSVExcelなんちゃらとかと同じ香りが……。(※個人の感想です)
Flashだともうちょっと面白くなるかもしれない?
数日したら忘れてそうなので備忘録として。