質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1484閲覧

ハッキング体験アプリ作成 CSRF

kazoogon

総合スコア281

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

3クリップ

投稿2017/06/18 01:32

ハッキング体験アプリ作成しており(公開はしません)、CSRF部分を今しています。
手順はindex.phpでsessionID発行させてユーザーをログイン状態にする

change_pwd.phpでパスワード変更処理

confirm_.phpでユーザーに変更したパスワードの確認

この後に「今あなた(攻撃者)がオーナーのサイトattacker.phpのコードを書き込み、ユーザーがこのサイトにアクセスしたら自動的にパスワードが変わるようにコードを書いてみよ」という課題を与えます。
ここでブラウザ上でテキストエディタを表示させて、attacker.phpの内容をかけるようにしようか迷っていますが、何かもっと簡単な方法はないかと思い質問させていただきました。この「パスワードを勝手に変えてしまう」という課題自体を変えてしまってもかまいません。よろしくお願いします。

index.php

<?php session_start(); $id = "yourname"; $_SESSION['id'] = $id; ?> <!DOCTYPE html> <html> <meta charset="utf-8"> <head> <title>CSRF</title> </head> <body> <h1>クロスサイト・リクエストフォージュエリ</h1> <h2> このページに入るとあなたは今<?php echo htmlspecialchars($id,ENT_QUOTES,'utf-8'); ?>というidでログイン状態となりました。 ではパスワードを変更してみましょう。 </h2> <a href="change_pwd.php">パスワード変更</a> </body>

change_pwd.php

<?php session_start(); ?> <!DOCTYPE html> <html> <meta charset="utf-8"> <head> <title>CSRF</title> </head> <body> <form action="confirm_pwd.php" method="POST"> 新パスワード<input name="password" type="password"> <input type="submit" value="パスワード変更"> </form> </body>

confirm_pwd.php

<?php session_start(); $id = $_SESSION['id']; $password = $_POST['password']; ?> <!DOCTYPE html> <html> <meta charset="utf-8"> <head> <title>CSRF</title> </head> <body> <?php echo htmlspecialchars($id,ENT_QUOTES,'utf-8'); ?> さんのパスワードを <?php echo htmlspecialchars($password,ENT_QUOTES,'utf-8'); ?> に変更しました </body>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

アタッカーとしての攻撃をさせたいのか、CSRF対策をしないと脆弱性がありますよという体験をさせたいのか
定まっていない気がします。

CSRFを体験させるだけなら、attacker.php を踏んだ時点で、パスワード変更させてしまう作りでよいと思います。

  • 手順としては、IDとPWを体験者が発行
  • 正規のID、PWでログインできることの確認。PWが違うとログインできないことを確認
  • attacker.phpへのリンク表示と、PWが変わることを明示して、リンクをクリックしてもらう
  • attacker.phpでは、confirm_pwd.php へ送信した内容と元のPWでアクセスできないことを表示
  • 体験者は元のPWと変更されてPWでログイン失敗、ログイン成功を確認しPWが変更されたことを確認

で、よいかと。
ちょっと気になったのが・・・

「今あなた(攻撃者)がオーナーのサイトattacker.phpのコードを書き込み

オーナーのサイトというのは、index.phpが置いてあるターゲットサイトと別ですよね?
もし同じであったら、クロスサイトでなくただのPW変更機能の別名つくるだけなので・・・

投稿2017/06/18 04:29

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momon-ga

2017/06/18 05:08

あ、攻撃者としてコードをかかせたいと書いてありましたね。 攻撃をする側の体験なのか・・・てっきり脆弱性の体験かと勘違いしてました。 体験アプリの仕様がわからないと難しいなぁ・・・make_attackee.php用意すれば良いってこと?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問