Webサイトのコードがどこにあるかを知るにはどうすればよいですか?


28

事実:

  • ウェブサイトがあります
  • このWebサイトはwww.example.orgからアクセスできます
  • ウェブサイトを保持している可能性が高いEC2インスタンスがあります
  • サーバーはApacheです
  • サーバーOSはUbuntu
  • サーバーへのフルアクセスがあります(およびsudo権限)
  • サーバーは巨大な混乱です

問題は、ロードするindex.html / index.phpをどこで-単純に-見つけるかわからないことです。

WebサイトのPHPおよびHTMLコードの場所を見つけるにはどうすればよいですか?この問題に対する体系的なアプローチはありますか?


ドメイン名を知っていますか?
-the_velour_fog

9
はい、2番目の箇条書きで述べています
ラファエル

find / -name nameofsomefileonthewebsite.html
user253751

回答:


53

まず、サーバーでホストされているWebサイトを確認する必要があります

# apachectl -t -D DUMP_VHOSTS

次に、サイトが見つかったら、オプションDocumentRootの対応する構成ファイルを確認します。例えば

# apachectl -t -D DUMP_VHOSTS
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server 192.168.88.87 (/etc/httpd/conf.d/192.168.88.87.conf:1)
         port 80 namevhost 192.168.88.87 (/etc/httpd/conf.d/192.168.88.87.conf:1)
         port 80 namevhost gl-hooks.example.net (/etc/httpd/conf.d/hooks.conf:1)
                 alias example.net
                 alias www.example.net

あなたはどこにあるのか知りたいです。ウェブサイトexample.net

# grep DocumentRoot /etc/httpd/conf.d/hooks.conf
    DocumentRoot /vhosts/gl-hooks.example.net/

# cd /vhosts/gl-hooks.example.net/
# ls -la
total 4484
drwxr-xr-x  6 apache apache    4096 Feb 10 11:59 .
drwxr-xr-x 14 root   root      4096 Feb 23 08:54 ..
-rw-r--r--  1 root   root      1078 Dec 19 09:31 favicon.ico
-rw-r--r--  1 apache apache     195 Dec 25 14:51 .htaccess
-rw-r--r--  1 apache apache      98 Dec  7 10:52 index.html

また、エイリアスとリダイレクト/リライトを監視する必要があります

また、エイリアスディレクティブにも注意を払う必要があります。たとえば、次の設定

<VirtualHost *:80>
   ServerName example.net
   ServerAlias www.example.net
   ...
   DocumentRoot /vhosts/default/public_html/
   Alias /api/ /vhosts/default/public_api/
   ...
</VirtualHost>

あなたがアクセスされます場合はhttp://example.net/some.file.html - Apacheはと同時に、/バーチャルホスト/デフォルト/ public_htmlの/でファイルを検索しますhttp://example.net/api/some.file .htmlファイルは/ vhosts / default / public_api /にあります。

リライト/リダイレクト、特にプログラムによる(リダイレクトがいくつかのphpコードによってトリガーされる場合)については、そのようなケースを見つける簡単な方法はないと思います。


3
また、エイリアスとリダイレクト/リライトの監視も必要です。
ボブ

3

検索を使用してみてください

find / -type f \( -iname "*index.html*" -o -iname "*index.php*" \) 2> /dev/null

それ以外の場合は、Apacheは、Ubuntuのリポジトリから見てインストールされていると仮定/etc/apache2/sites-availableすなわち、

grep -niR "thedomainname" /etc/apache2/sites-available

Webサイトにapache VHOSTが定義されている場合、configファイルを見つけることができます。そのファイルを見て"documentroot"、ソースコードの場所を確認してください。


1
まあ...私はそれを「しました」-2時間かかり、サーバーがほとんど応答しなくなり、67のindex.htmlとほぼ同じ数のindex.phpが見つかりました。だから、そのアプローチは私のためにそれをしていません。
ラファエル

2
そのような場合にfindを使用するのは非常に悪い考えです
-ALex_hha

1
おそらく、代わりにサイト対応を使用する必要があります
-ALex_hha

1
index.htmlは狩りに適したファイルではありません。Apacheでディレクトリリストがオフになっていない場合に備えて、各ディレクトリに1つずつ配置するCMSがいくつかあります。したがって、ディレクトリの内容を表示する代わりに常に空白のページをロードします。
gabe3886

@the_velour_fogいいえ、ここでは非常に重要ですが、これ-type f-iname "*index.html*"コマンドでのみ適用されます。する必要があります-type f \( -iname "*index.html*" -o -name "*index.php*" \)

2

ウェブサイト(またはそのことについては任意のプロセス)をデバッグするために役立つことができる別の方法は、使用することですlsof(パス上に存在しない可能性がある、一般的に見られます/sbin/lsof

lsof -s [PID] 指定されたプロセスが処理するすべてのファイルを一覧表示し、使用されているものを正確に確認するのに役立ちます(これには、サイトが必要とするログファイルとライブラリだけでなく、html / phpファイルも含まれます)


1

ロードするindex.html / index.phpを見つける場所がわかりません。

ページのソースファイルを探す

1つのアプローチは、サイトをブラウズしてよりユニークなページを見つけることです(newcontactform.phpとしましょう)。理想的には、同じサーバーでホストされている他のサイトには表示されないページです。

その後、試すことができます

locate newcontactform.php

それが失敗した場合、従います

find / -name newcontactform.php

これにより、候補者の管理可能な小さなリストが作成されます。

その後、ファイルを検査し、diffを実行し、必要に応じて小さな変更(HTMLコメントの挿入など)を試して、ファイルが実際にページを生成することを確認します。

構成を見つける

場合によっては、psコマンドの出力で構成ファイルが明らかになります。最悪の場合ですps -ef | grep -e 'apache|httpd'が、psオプションをより創造的に使用することを検討する価値があります。

あなたはを探すことができますhttpd.confUbuntuのためおよびApacheのhttpd(異なる場合があります)プロジェクトまたは単に使用される典型的な場所にlocateし、find上記のように。

メイン設定ファイルは、仮想ホストの他の設定ファイルを参照する場合があります。メインの設定ファイルを識別することでこれを解決できます。

慢性症例

古いサーバーは、さまざまなWebサーバーデーモンを実行する場合があります。その場合、それらをすべて見つけて、構成ファイルがある場所を見つけるのに時間がかかることがあります。上記の手法の組み合わせは、最終的に成功するはずです。

を使用して、ポート80などでリッスンしているプログラムを検索できます netstat -lntp。多くの場合、バイナリを見つけることは、構成ファイルを含むディレクトリツリーへの便利なポインタです。


1

Webサーバーの(apache)構成ファイルで探しているドメインのVhostを確認できます-httpd.conf (ほとんどの場合 / etc /にあります)ファイルを開いて、VirtulaHostディレクティブが見つかるまでスクロールします。ドメインとそこにDocumentRootディレクティブが表示されます。これは、Webサイトのドキュメントルートディレクトリであり、アプリケーションのファイルを見つける場所です。


1

に行ってください

cd / etc / apache2 / site-avaliable /

ここに設定ファイルがあります(例:000-default.conf)

このファイルを開く/設定ファイルを開く

vi 000-default.conf

ここにDocumentRootがあります。これがWebサイトのコードです

これはデフォルトのconfファイルです。同様に、confの詳細も確認してください。


3
これはシステムに依存します。
モニカとの軽さのレース

@PreferenceBeanによるコメントに加えて、これはデフォルトの仮想ホストの構成のみを表示します。また、チェックする必要があるかもしれない無用の名前とそこに多くのバーチャルホストがあるかもしれません
gabe3886
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.