web-dev-qa-db-ja.com

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

事実:

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

問題は、ロードされるindex.html/index.phpを見つける場所がわからないことです。

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

28
Raffael

最初に、サーバーでホストされている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は/ vhosts/default/public_html /でファイルを検索し、同時に http: //example.net/api/some.file.html ファイルは/ vhosts/default/public_api /で検索されます。

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

53
ALex_hha

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

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が定義されている場合は、構成ファイルが見つかる可能性があります。そのファイルで"documentroot"を確認すると、ソースコードの場所がわかります。

3
the_velour_fog

Webサイト(またはその問題に関するプロセス)のデバッグに役立つ別の方法は、lsofを使用することです(これはパス上にない可能性があり、通常/sbin/lsofにあります)

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

2
Centimane

に行ってください

cd/etc/Apache2/site-avaliable /

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

このファイルを開くか、次を使用して構成ファイルを開いてください

vi 000-default.conf

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

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

1
krishna chandra

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

ロード先のindex.html/index.phpをどこで見つけるかわかりません

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

1つの方法は、サイトを参照してよりユニークなページを見つけることです。たとえば、newcontactform.phpとしましょう。理想的には、同じサーバーでホストされている他のサイトには表示されないものです。

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

locate newcontactform.php

それが失敗した場合は、

find / -name newcontactform.php

これにより、扱いやすい候補のリストが作成されます。

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

設定を見つける

psコマンドの出力に構成ファイルが見つかることがあります。最悪のケースはps -ef | grep -e 'Apache|httpd'ですが、psオプションをよりクリエイティブに使用することは検討に値するかもしれません。

UbuntuとApache httpdプロジェクト(異なる場合があります)の一般的な場所でhttpd.confを探すか、上記のようにlocatefindを使用します。

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

慢性の場合

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

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

1
RedGrittyBrick