web-dev-qa-db-ja.com

ウェブサイトが組み込まれているプログラミング言語を見つける方法は?

Webアプリケーションがどのように機能するか、そして最終的にはどの言語で記述されているかについての情報をセキュリティテスターが収集することが基本であると思います。

URL拡張機能、HTTPヘッダー、セッションCookie、HTMLコメント、およびスタイルシートが一部の情報を明らかにする可能性があることは知っていますが、それでも困難であり、保証されていません。

だから私は疑問に思っていました:ウェブサイトの背後にあるテクノロジーとフレームワークを決定する方法はありますか?

106
storm

サーバーにアクセスできない場合に100%確実である方法はないので、それは推測です。ここにいくつかの手がかりがあります:

  • ファイル拡張子:login.phpは、おそらくPHPスクリプトです。
  • HTTPヘッダー:サーバーで実行されている言語に関するいくつかの情報がリークする可能性があります。また、バージョンなどの追加の詳細:X-Powered-By: PHP/7.0.0は、ページがPHPによってレンダリングされます。
  • HTTPパラメータ汚染実行中のサーバーを推測できた場合は、推測を調整できます。
  • 言語制限:最大投稿データ、GETの最大数変数、およびPOSTデータなど。ウェブマスターはデフォルト値を維持しました。
  • 特定の入力:たとえば、PHPいくつかの イースターエッグ がありました。
  • エラー:トリガーエラーも言語をリークする可能性があります。 Warning: Division by zero in /var/www/html/index.php on line 3は、たとえばPHPです。
  • ファイルのアップロード:ライブラリは、ファイルがサーバー側で変更されている場合にメタデータを追加することがあります。たとえば、ほとんどのサイトはユーザーのアバターのサイズを変更し、EXIFデータを確認するとCREATOR: Gd-jpeg v1.0 (using IJG JPEG v90), default qualityがリークするため、使用されている言語を推測するのに役立つ場合があります。
  • デフォルトのファイル名://index.phpが同じページかどうかを確認します。
  • エクスプロイト:バックアップファイルの読み取り、またはサーバー上での任意のコードの実行。
  • オープンソース:ウェブサイトはオープンソースである可能性があり、インターネット上のどこかで利用できます。
  • 概要ページ:ウェブマスターは、「FAQ」または「概要」ページで言語コミュニティに感謝したかもしれません。
  • 求人ページ:開発チームが採用している可能性があり、彼らが使用している技術の詳細を持っている可能性があります。
  • ソーシャルエンジニアリング:ウェブマスターに質問してください!
  • パブリックプロファイル:Webサイトで作業している人がわかっている場合(LinkedInと/humans.txtを確認)、パブリックリポジトリまたはオンラインプロファイルでのスキルを確認できます( GitHub、LinkedIn、Twitter、...)。

また、ウェブサイトがフレームワークとCMSのどちらで構築されているかを知りたい場合もあります。これにより、使用されている言語に関する情報が得られます。

  • URL:ディレクトリとページは特定のCMSに固有です。たとえば、一部のリソースが/wp-content/ディレクトリにある場合、WordPressが使用されていることを意味します。
  • セッションCookie:名前と形式。
  • CSRFトークン:名前と形式。
  • レンダリングされたHTML:例:メタタグの順序、コメント。

サーバーから送信されるすべての情報に注意してください あなたをだますために変更される可能性があります 。推測を検証するには、常に複数のソースを使用するようにしてください。

148
Benoit Esnard

推測プログラミング言語の場合、以下に詳述する3つのステップのアプローチに従うことができます:

ステップ1-サイト自体で証拠を検索する

手動で...

  • 下部のサイトページで次のようなフレーズを検索します。

    -> "Powered by XXX"
    -> "Proudly Powered by XXX"
    -> "XXXで実行中"
    -> ...

  • 技術的な観点からWebサイトについて話し合うことができる会議に参加するかどうか、サイトを検索します

...またはツールの助けを借りて

  • ブラウザでダウンロードしたHTMLコードを読む

  • 開発者ツールバーのNetwork Tabを起動して、ブラウザとサーバーの間で行われる交換を調べます。

  • いくつかの既知の隠しページを検索します。

    wget -head http://the-site.com/private/admin

    200を取得した場合、サイトは複数の(無料、有料など)利用可能なソフトウェアで実行されている可能性があります。

ステップ2-ウェブで証拠を検索する

フロントエンドエラーについて検索エンジンに問い合わせる

Webサイトで生成されたエラーを探すことができます。

  • 検索エンジンに入力するいくつかのキーワード:

    • エラー500 site:the-site.com
    • 例外サイト:the-site.com
    • ...
    • <これまで> site:the-site.com
      => "<what ever>"を、さまざまなWebテクノロジーによって生成された既知のエラーメッセージに置き換えるだけです。

検索エンジンにバックエンドエラーを要求する

バックエンドで使用されているテクノロジーを推測することもできます。

  • ORA-12170 site:the-site.com
    =>何かを見つけた場合、サイトはバックエンド部分でOracleを使用している可能性があります。

検索エンジンにウェブサイトの競合他社を問い合わせる

  • ウェブサイト業界で人気のあるテクノロジーを見つける

  • 競合他社が使用しているテクノロジーを見つける

  • 他の競合他社とのサイトの比較を見つけます。
    これらの比較では、使用中のテクノロジーについて説明する場合があります

技術調査サイト

これらのサイトは、ターゲットとするサイトに優れた情報を提供できます。彼らはあなたのために仕事の一部をすでに行っているかもしれません。

  • http://w3techs.com/sites
    =>ターゲットとするサイトのURLを入力し、検出されたテクノロジー(クライアントまたはサーバー側)を確認します。
    サイトは、1MのAlexaランキングのトップにある必要があることに注意してください。

  • http://stackshare.io/search/q= <keyword >
    =><keyword>は、会社名、ウェブサイト名など、何でもかまいません

ステップ3-結果を分析する

ステップ1で見つけた証拠は、サイトの所有者が変更できるため、間違っている可能性があります。それらの証拠の間の矛盾を見つけるようにしてください。矛盾する証拠を排除します。

ステップ2の証拠をさまざまなソースとあなたのソースの間でマージします。再び矛盾する証拠を排除します。

以下のような表ですべての調査結果を再開します。

+-------------+-----------+------------------+    ...   +----------+-------+--------+
| EVIDENCES   |  ON SITE  |  Search Engine 1              SOURCE n   SCORE   PCT (%)
+-------------+------------------------------+    ...   +----------+-------+--------+
|    PHP 7    |     X     |       X          |                X    |   3   |  300/n
+-------------+------------------------------+    ...   +----------+-------+--------+
|  Wordpress  |           |       X          |                X    |   2   |  200/n
+-------------+------------------------------+    ...   +----------+-------+--------+
     ...
+-------------+------------------------------+    ...   +----------+-------+--------+
|  EVIDENCE m |           |                  |                     |       | (100*SCORE)/n
+-------------+------------------------------+    ...   +----------+-------+--------+

最後に、「このサイトはYY(EVIDENCE i)で実行されることをXX%で確信している」と言えるでしょう。

18
Stephan

それは簡単です。 Chrome および Firefox で使用可能なWapplyzer拡張機能を追加します。

プログラミング言語、サーバー、分析ツール、またはWebサイトが構築されているCMSとフレームワークについて説明します。

試してみると、きっと気に入るはずです。

17
Manish Kumar

Wappalizerブラウザー拡張機能の他に、特定のWebサイトを強化するテクノロジーを検出するサイトがいくつかあります。

8
Dan Dascalescu

答えは「安心すること」は決してできないということです。 99.9%の確率で投票数の多い回答は、サイトの背後にあるフレームワークの「テル」を見つけますが、確実なことは決してありません。

基本的に、ブラウザはコード処理の最終結果を受け取ります。 (html、CSSおよびJavaScript)あなたとコード自体の間に、Webサーバー(nginx、Apacheなど)と、場合によってはロードバランサーとCDNが配置されます。あなたが直接相互作用していないので、確実な方法はありません。

Webサイトがwp-uploads /からのコンテンツを提供している場合/それが実行されていることは安全な賭けですWordpressしかし、確実ではありません。おそらく、サイトはWordpressを使用していましたが、それが別のものに移行されたとき、リンクとブックマークを壊さないようにwp-uploads /パスが保持されました。

2
Nath