English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JavaScript注入攻撃とは何ですか?
1、JavaScript注入とは、ブラウザのアドレスバーにjsコードを入力して、ページのjs変数やページタグの内容を変更するものです。
JavaScript注入を使用すると、ユーザーはページを閉じたり保存したりすることなく、アドレスバーで内容を変更できます。コマンドの構文は以下の通りです:
javascript:alert(#command#)
例えば、http://www.example.comサイトにalert警告ボックスが表示された場合、まずアドレスバーにURLを入力し、ページの読み込みが完了するまで待ち、URLを削除し次に以下のように入力します:
javascript:alert("Hello World")
新しいURLとして使用すると、「Hello World」警告ボックスが弹出されます。この技術を使用することで、ウェブページのあらゆる内容を変更することができます。例えば、画像を変更することができます。あるウェブサイトのロゴ画像があると仮定して、ページのソースコードを確認して以下のHTMLコードを見つけます:
<IMG Name="hi" SRC="hello.gif">
画像は「hi」と名付けられ、ソースファイルは「hello.gif」です。それを私たちのサイト(http:)に保存したいと思っています。//www.mysite.com)の「bye.jpeg」ファイルを使用します。したがって、画像の完全なURLはhttp:です。//www.mysite.com/bye.jpeg、JavaScript注入を使用して、アドレスバーに次のように入力するだけで済みます:
javascript:alert(document.hi.src="http://www.mysite.com/bye.jpeg")
「http:」の弹出が表示されます//www.mysite.com/bye.jpeg”警告が表示され、その後画像が変更されます。ただし、これらの変更は一時的なものであり、ページをリフレッシュしたり、再びアクセスすると変更は消失します。なぜなら、変更はPC上で行われただけではなく、ウェブサーバー上でも行われていないからです。
同じ方法で、変数の値を確認したり変更したりできます。例えば、以下のようなコードを見つけます:
<SCRIPT LANGUAGE="JavaScript"> var a="test" </SCRIPT>
これは変数aの値が「test」であることを意味します。現在、以下のように入力します:
javascript:alert(a)
次にその値を「hello」に変更します:
javascript:alert(a="hello")
JavaScriptインジェクションは通常、フォーム属性の変更に使用されます。以下のようなコードがあります:
<form name="format" action="send.php" method="post"> <input type="hidden" name="mail" value="[email protected]"> <input type="text" name="name"> <input type="submit" value="submit"></form>
フォームを私たちのメールアドレスに送信するようにしたい場合、以下のコマンドを使用できます:
javascript:alert(document.format.mail.value="[email protected]")
これらのコマンドの階層関係に注意していただければと思います:
左から右に順に説明します:
1最左端はdocumentです。
2次に変更したいオブジェクト名(例:document.hi.src)またはそのオブジェクト(例:document.format.mail.value)を指定します。
3最後に変更したい属性(例:ソースパスdocument.hi.src、または変数値document.format.mail.value)を指定します。
4ピリオド"."で区切ります。
5属性値を変更する場合、等号"="と新しい属性値を使用します。
*注:新しい属性値が文字列の場合(例:document.format.mail.value="[email protected]")、ダブルクォートで括ります。
変数の値として使用する場合、ダブルクォート""を使用する必要はありません。例えば、変数bの値を変数aに割り当てる場合、javascript:alert(a=b)と入力できます。
ただし、ページのほとんどのタグには名前がありません。例えば:
<form action="send.php" method="post"> <input type="hidden" name="mail" value="[email protected]"> <input type="text" name="name"> <input type="submit" value="submit"></form>
このコードでは、フォーム名がありませんが、上記の情報を総合して、このコマンドを使用できます:
javascript:alert(document. .mail.value="[email protected]")
この場合、フォームのインデックスを計算し、見つける必要があります。以下はその例です:
<form action="send.php" method="post"> <input type="text" name="name"> <input type="submit" value="submit"> </form> <form action="send.php" method="post"> <input type="hidden" name="mail" value="[email protected]"> <input type="text" name="name"> <input type="submit" value="submit"> </form> <form action="send.php" method="post"> <input type="text" name="name"> <input type="submit" value="submit"> </form>
このコードでは、3フォームがありますが、私たちは2番目のフォームに興味がありますので、私たちが望むフォームのインデックスは2。忘れないでください、私たちは1から始める場合、例えば1,2,3,4...javascriptは0から始まるので、例えば0、1,2,3...実際のフォームのインデックスは1、2、通常は見つけたフォームのインデックスを1減じます。このインデックスを使ってコマンドを完成させます:
javascript:alert(document.forms[1].mail.value="[email protected]")
これで名前のない画像やリンクを変更することができます。"forms"を好きなタグの種類に置き換えることができます。画像の場合は、
javascript:alert(document.images[3].src="#the url of the picture you want#")
リンクの場合は、
javascript:alert(document.links[0].href="#the url you want#")
最後に、この技術を使ってcookiesを編集することができます。以下のコマンドはtriviasecurity.netのDr_aMadoが書いたもので、私は少し修正しました。ユーザーが編集する前に表示するようにしました:
javascript:alert(window.c=function a(n,v,nv){c=document.cookie;c=c.substring(c.indexOf(n)+n.length,c.length); c=c.substring(1, ( (c.indexOf(";")>-1) ? c.indexOf(";") : c.length));nc=unescape(c).replace(v,nv); document.cookie=n+"="+escape(nc);return unescape(document.cookie);}); alert('cookieは: "'+document.cookie+"'');alert(c(prompt("cookieの名前:",""), prompt("この値を変更する:",""),prompt("この値で:","")))
//あなたが手動で cookie を変更したい場合は、以下のコマンドを使用できます:
javascript:alert(document.cookie)
これは現在の cookie を表示します。仮に「userid=」1「userid=」に変更したい場合は、以下のコマンドを使用できます:2
javascript:alert(document.cookie="userid=2
最後に強調したいのは、すべての変更はクライアント側に限られています。これは、ウェブページをあなたの PC に保存してそれを変更するのと同じです。それでも、このテクニックを使用して、ページ(例えば cookies)をだますか、セキュリティ検証を迂回することができます。例えば、一部のウェブページはユーザーがデータを送信する場所を検出します。http: から送信された場合、//www.test.com/form.php が http: にデータを送信します。//www.test.com/check.php、check.php はデータが http: から来たかを検出するかもしれません。 //www.test.com/form.php 上のフォーム。それに加えて、ページに自分の JavaScript コードを入力する予定がある場合は、このようなテクニックを使用することで、画像を変更しながら変更を維持することができます!
これでこの記事のすべての内容が終わります。皆様の学習に役立つことを願っています。また、ナイアラベンチャー教程を多くのサポートをお願いします。