ページリクエストの脆弱性と攻撃についての理解を求めます

このQ&Aのポイント
  • 最近、私のホームページであり得ない値でのリクエストが頻繁に発生しています。この脆弱性について調査し、攻撃の可能性を検証したいと考えています。
  • 脆弱なページからのアクセスと思われるリクエストが多くありますが、具体的な攻撃手法は不明です。アクセス元のIPアドレスやリクエストURIもばらばらで、正規のページパスとは全く関係がありません。
  • このような状況から、私のページは脆弱で攻撃されている可能性が高いと考えています。脆弱性の種類や攻撃手法を理解し、対策を講じる必要があります。
回答を見る
  • ベストアンサー

あり得ないページのリクエストを受けるのは脆弱だからでしょうか?

私が運営しているホームページで、index.php?m=product のように m の値によってページを作って表示させるようなPHPプログラムなのですが、最近頻繁に有り得ない値でアクセスされる様になりました。 その時の REMOTE_ADDR はさまざまで、REQUEST_URIは /index.php?m=http://eatmyfood.hostinginfive.com/pizza.htm? などで、このようなページは有りません。 私のページが脆弱で攻撃されているのでしょうか? このページを表示させようとする攻撃なのでしょうか? 脆弱なページからアクセスされているだけでしょうか? どのような脆弱性、攻撃なのでしょうか? すみませんが、よろしくお願い致します。

noname#207939
noname#207939

質問者が選んだベストアンサー

  • ベストアンサー
  • tk_uc
  • ベストアンサー率68% (33/48)
回答No.2

> 動的サイトやm=とかを見つけて攻撃するのでしょうか・・・? そうでしょうね。 攻撃対象の収集方法はいろいろあるでしょうが、検索エンジンで探すのがポピュラーなのではないかと。 多くのサイトで使用されているようなプログラムについてはいろいろと研究して穴を見つけるのでしょうが、そうでないところには単に定型的な攻撃を試しているのかもしれません。 ちなみに、表示するだけのページであっても引数を受け付けてそのまま表示してしまうような穴があればスクリプトを仕込んだリンクを作成することも可能ですよ。 攻撃にもいろいろあって、攻撃者の想像力に驚かされます。

noname#207939
質問者

お礼

試し攻撃のコメントスパムだろう、という事ですね。 様子を見ます、ありがとうございました。

その他の回答 (1)

  • tk_uc
  • ベストアンサー率68% (33/48)
回答No.1

コメントスパムの類でしょうね。 クライアントはWEBサーバーに対してどのようなリクエストでもできますよ。 それをWEBサイト製作者が意図しない形で受け入れてしまうのでしたら脆弱性があることになります。 WEBアプリケーションの仕組みについてあまりご存じないようですが、ご自身で作成されたプログラムではないですよね? そうではないことを祈ります...。 何らかの問題が起きていないか、継続的にしっかりとチェックされることをお勧めいたします。

noname#207939
質問者

お礼

PHP見習者です、よろしくお願い致します。 複数サイトを持っていて、データベースやGET/POSTを使っているサイトにはスパムが来ず、これらが無い単純に表示だけのサイトにスパムが来るようになったので不思議です。動的サイトやm=とかを見つけて攻撃するのでしょうか・・・?  様子を見ます、ありがとうございました。

関連するQ&A

  • empty($_SERVER['REQUEST_U

    empty($_SERVER['REQUEST_URI'])とは、何のことでしょうか? 下記スクリプトの意味について教えてください。 // // Fix unavailable $_SERVER['REQUEST_URI'] on IIS // if ( empty($_SERVER['REQUEST_URI']) ) {  $_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'];  $_SERVER['REQUEST_URI'] .= ( !empty($_SERVER['QUERY_STRING']) ) ? '?'.$_SERVER['QUERY_STRING'] : ''; } ▼if ( empty($_SERVER['REQUEST_URI']) ) { $_SERVER['REQUEST_URI']が空だったら、の意味が分かりません。 ページにアクセスするためのURIを指定しなかったら? それは、どんな状況なのでしょうか? ▼$_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF']; $_SERVER['REQUEST_URI']に、現在実行しているスクリプトのファイル名を利用。これは、何をしているのでしょうか? ▼$_SERVER['REQUEST_URI'] .= ( !empty($_SERVER['QUERY_STRING']) ) ? '?'.$_SERVER['QUERY_STRING'] : ''; クエリ情報(URLの"?"以降の文字列)が空でなければ、クエリ情報をくっつける。空だったら、くっつけない 結局、このスクリプトでは何をしようとしているのでしょうか? また、このスクリプトがないと、どういう不具合が起きる可能性があると、想定されるでしょうか? 検索してみたら、下記のようなページがあったのですが、 IIS(サーバ?)固有の不具合回避対策なのでしょうか? ▽Dokeos Forum • View topic - IIS $_SERVER['REQUEST_URI']   http://www.dokeos.com/forum/viewtopic.php?t=8335

    • ベストアンサー
    • PHP
  • REQUEST_URIなどの環境変数の値を見たい

    REQUEST_URIやQUERY_STRINGなどの環境変数の値を直接確認したいです。 しかしphpなどの言語でなくlinuxの命令やapacheのディレクティブで出力するなどで知る方法はないでしょうか。 またphpでREQUEST_URIなどを確認した場合それはapacheのディレクティブ処理時の値と同じという保証はあるのでしょうか。 もう一つ、apacheをローカルで動作させている場合REQUEST_URI中でQUERY_STRINGに相当する部分が無いということはありうるでしょうか。 どれか一つでも助言頂けると助かります。

  • htaccessでURL末尾にスラッシュを付加

    ホームページを公開するにあたり、 http://www.ooo.com/xxx というアドレスでの公開が必要です。 現状、http://www.ooo.com/xxx と http://www.ooo.com/xxx/ でアクセスした場合に表示が異なり困っています。 ソースを見るとどちらも同じファイル(index.php)を読み込んでいますが、 「/」無しでアクセスした場合、cssを読み込んでいないような表示になります。 .htaccess を使って /無しでアクセスした場合に「/」を付加するようなことは可能なのでしょうか。 ネットを調べ、 RewriteCond %{REQUEST_URI} !/$ RewriteCond %{REQUEST_URI} !\.[^/\.]+$ RewriteRule .* %{REQUEST_URI}/ [L,R] 上記は試しましたが、できませんでした。 どなたか、宜しくお願い致します。

    • ベストアンサー
    • HTML
  • mod_rewrite 動的ページを静的ページへ

    SEO対策として、動的ページを静的ページへリダイレクトさせたいと考えています。 レンタルサーバーのため、.htaccessへ記入するしか方法はないと思っているのですが、 そもそも「静的化するってこと自体」がよく分かってないので、教えてください。 <現状> ▼URL /hoge/index.php?id=1 ▼.htaccess RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9A-Za-z]+)\.html$ details.php?id=$1 [L] <結果> 実行すると、/hoge/1.htmlとなり、望む結果を得られるのですが、 念のためディレクトリを指定しておきたいと思い、 RewriteRule ^/hoge/([0-9A-Za-z]+)\.html$ /hoge/details.php?id=$1 [L] としたところ、全く静的表示されなくなりました。 ■質問1 なぜ、ディレクトリを指定すると静的化できないのでしょうか? ■質問2 ネットでmod_rewriteの解説ページを検索してみると、静的化の例として、 「hoge/1.html へアクセスがあった際に、index.php?id=1の結果を返す」、 と記載されてます。 「index.php?id=1へアクセスした際に、hoge/1.html の結果を返す」 ようにした方がいいと思うのですが、 これって結果的には同じことをしている、と考えてよいのでしょうか? ■質問3 例えば、「/hoge/index.php?id=1」に対して、 「index.php?id=1へアクセスした際に、hoge/1.html の結果を返す」 ようにするには、どう書けばよいのでしょうか?

    • ベストアンサー
    • PHP
  • スマフォ、ガラケー、PCの振り分けについて

    同一ディレクトリ内にあるファイルの振り分けを行いたいです。 どのページにきても、それぞれアクセスのあったキャリアにあわせたページに飛ばしたいです。 同じ構成のディレクトリが3階層目まであるのですが、それぞれのディレクトリ内にて振り分けを行いたいです。 3階層目のディレクトリの数が多い為、htaccessにしろphpにしろ、同一の書き出しにて振り分けを行いたいので、各ディレクトリ内での相対パスによるページ呼び出し、もしくは文字列の付与を行いたいです。 index.php[PCページ] sp-index.php[スマフォページ] mb-index.php[ガラケーページ]  │  │  └index.php   sp-index.php   mb-index.php    │    │    ├index.php    │sp-index.php    │mb-index.php    │    │    ├index.php    │sp-index.php    │mb-index.php    │    │       ・       ・       ・       ・       ・       ・ また、下記文字列を付与、削除するhtaccessを全てのディレクトリ内にいれて振り分け自体は上手くいったのですが、 スマフォ、ガラケーでのサイト内でのリンクがうまくいきませんでした。 サイト内リンクは1階層目(トップページ)、2階層目(カテゴリーページ)、3階層目(プロダクトページ)をそれぞれリンクで繋いでいたのですが、スマフォ、ガラケーページのみ上手く動いてくれません。 スマフォページの場合、トップページからカテゴリーページへのリンクの記述を、下記2パターン試してみたのですがだめでした。 <a href="./category01/sp-index.php"> <a href="./category01/"> RewriteEngine On RewriteBase / # 1.No enter except MOBILE(sp-index.phpART) RewriteCond %{REQUEST_URI} ^/mb-index.php RewriteCond %{HTTP_USER_AGENT} ^.*(iPhone|iPod|Android).*$ RewriteRule ^mb-index.php(.*)$ sp-index.php$1 [R] # 2.No enter except MOBILE(PC) RewriteCond %{REQUEST_URI} ^/mb-index.php RewriteCond %{HTTP_USER_AGENT} !^(DoCoMo|J-PHONE|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank).*$ RewriteRule ^mb-index.php(.*)$ $1 [R] # 3.No enter except sp-index.phpART(MOBILE) RewriteCond %{REQUEST_URI} ^/sp-index.php RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|J-PHONE|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank).*$ RewriteRule ^sp-index.php(.*)$ mb-index.php$1 [R] # 4.No enter except sp-index.phpART(PC) RewriteCond %{REQUEST_URI} ^/sp-index.php RewriteCond %{HTTP_USER_AGENT} !^(DoCoMo|J-PHONE|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank|.*iPhone|.*iPod|.*Android).*$ RewriteRule ^sp-index.php(.*)$ $1 [R] # 5.No enter except PC(MOBILE) RewriteCond %{REQUEST_URI} !^/mb-index.php RewriteCond %{REQUEST_URI} !^/sp-index.php RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|J-PHONE|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank).*$ RewriteRule ^(.*)$ mb-index.php$1 [R] # 6.No enter except PC(sp-index.phpART) RewriteCond %{REQUEST_URI} !^/mb-index.php RewriteCond %{REQUEST_URI} !^/sp-index.php RewriteCond %{HTTP_USER_AGENT} ^.*(iPhone|iPod|Android).*$ RewriteRule ^(.*)$ sp-index.php$1 [R] サイト内リンクの問題をクリアーした、振り分け方法を教えて下さい。

  • htaccessの制御で500エラーが出る

    htaccessで、メンテナンス画面とhtmlファイルのままPHPを実行する記述を 同時に書きたいのですが、そうするとIP除外していない人に500エラーが出ます。 ErrorDocument 503 /maintenance.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx RewriteRule ^.*$ - [R=503,L] </IfModule> Action myphp-script /php.cgi AddHandler myphp-script .php .html さくらのレンタルサーバーですので、"AddType application/x-httpd-php .php .html"ではなく 上のように書くとhtmlでPHPを実行できます。 この記述のままアクセスすると、REMOTE_ADDRでIP除外しているものからは 思い通りにそのまま表示されるのですが、それ以外のものからは500エラーが出る状態と なっています。 希望は、特定IPのみhtmlでPHPを実行する通常アクセス。 特定IP以外は、メンテナンス画面という結果にしたいです。 なにか方法はありますでしょうか?

  • 不正なリクエストとは何でしょうか。

    「不正なリクエストです」と表示されましたが、これは一体何でしょうか。 「不正な」と表示されているので、これは不正アクセスとは違うのでしょうか? 例えば、1ページ目のURLが 「example.com/main?page=1」を 2ページ目を見たいので、 ?page=2 と変えてアクセスしたら 「不正なリクエストです」と表示されて見れない具合です。

  • リクエストURIによってHTML表示を変える方法

    PHPは初心者です。宜しくお願いします。 表示するページによって、コンテンツ画像の表示をデフォルトの物から別の物に変える、ということをしたいのですが、どうもうまくいきません。 記述など間違っていましたらご教授下さい。 ------ 例)表示したいページのURL→http://***.ne.jp/hoge.php               http://***.ne.jp/hige.php   デフォルトの画像名→default.gif   変更後の画像名→hoge.gif,hige.gif <?php $URI = $_SERVER["REQUEST_URI"]; $URI2 = explode ("/", $URI); $menu = $URI2[2]; ?> <!--ここにテーブルタグなどHTML文書。中略--> <?php if ($menu == "hoge.php"):?> <img src="hoge.gif" border="0"> <?php else:?> <a href="hoge.php"><img src="default.gif" border="0"></a> <?php endif;?><br> <br> <?php if ($menu == "hige.php"):?> <img src="hige.gif" border="0"> <?php else:?> <a href="hige.php"><img src="default.gif" border="0"></a> <?php endif;?><br> <!--後略--> ※このファイルをiniファイルにしてベースのphpファイルにインクルードしています。

    • 締切済み
    • PHP
  • REMOTE_HOST

    APACHE2.xで、REMOTE_HOSTを返すまでの動作がどうなっているか、どなたかわかりませんでしょうか? DNSに問い合わせたものを返すのか、あるいはリクエストに含まれるなんらかの値を返すのか。 というのは、REMOTE_HOSTでリクエスト元のリモホを取得しているのですが、一部リクエストでREMOTE_HOSTが偽装されているようなのです。 ネットで調べても、内部で問い合わせているだけという話もあれば、偽装は可能なのでREMOTE_HOSTとREMOTE_ADDRを比較することは有効という話もあり… APACHEの仕様書も見つからず…

  • トップページの前に期間限定のトップページ

    表題の件ですが、 http://www.hogehoge.com/ へアクセスした人を トップページ(index.php)の前に期間限定のトップページ(2013.php)を表示させたいのですが、htaccessで 2013.phpを優先にしてしまえば、2013.phpが最初に表示されますが、そこから、index.phpに移動したあと、Home へリンクすると、http://www.hogehoge.com/index.phpへリンクしたいのですが、 再度、http://www.hogehoge.com/2013.phpが表示されてしまします。 最初にアクセスしたら http://www.hogehoge.com/2013.php その中から、 http://www.hogehoge.com/index.phpへ移動して、 あとはhttp://www.hogehoge.com/へアクセスしても、 http://www.hogehoge.com/index.phpが優先で表示させる方法は無いのでしょうか? 恐れ入りますが、お分かりになられる方ご教授お願いいたします。

    • ベストアンサー
    • PHP