Client-side HTTP parameter pollution
Burpに新しく追加されてたのさっと読んでみた。
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&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だともうちょっと面白くなるかもしれない?
数日したら忘れてそうなので備忘録として。