웹 사이트 코드가 어디에 있는지 어떻게 알 수 있습니까?


28

사실 :

  • 웹 사이트가 있습니다
  • 이 웹 사이트는 www.example.org를 통해 액세스 할 수 있습니다
  • 웹 사이트를 유지하는 EC2 인스턴스가 있습니다.
  • 서버는 Apache입니다
  • 서버 OS는 우분투
  • 서버에 대한 모든 액세스 권한과 sudo 권한이 있습니다.
  • 서버는 엉망이다

문제는로드 할 위치를 간단히 알 수 있습니다-단순히 index.html / index.php를 찾으십시오.

웹 사이트의 PHP 및 HTML 코드를 어디에서 찾을 수 있는지 어떻게 알 수 있습니까? 이 문제에 대한 체계적인 접근이 있습니까?


도메인 이름을 알고 있습니까?
the_velour_fog

9
네, 저는 두 번째 글 머리표로 설명합니다
Raffael

find / -name nameofsomefileonthewebsite.html?
user253751

답변:


53

우선 서버에서 어떤 웹 사이트가 호스팅되는지 확인해야합니다

# 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는 http://example.net/api/some.file과 동시에 / vhosts / default / public_html /에서 파일을 찾습니다 . .html 파일은 / vhosts / default / public_api /에 있습니다.

다시 작성 / 리디렉션, 특히 프로그래밍 방식 (리디렉션이 일부 PHP 코드에 의해 트리거되는 경우)은 어떻습니까?


3
또한 별칭 및 리디렉션 / 다시 쓰기를 찾아야합니다.
Bob

3

찾기를 사용해보십시오

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

그렇지 않으면 아파치는 우분투 저장소에서보기에서 설치 한 가정하면 /etc/apache2/sites-available, 즉,

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

웹 사이트에 아파치 VHOST가 정의되어 있으면 구성 파일을 찾을 수 있으며 해당 파일 "documentroot"에서 소스 코드의 위치를 ​​알려줍니다.


1
잘 ... 나는 "했다"-그것은 2 시간이 걸렸고, 서버는 거의 응답을 중지하고 67 index.html과 거의 index.php를 발견했습니다. 그래서 그 접근법은 나를 위해하지 않습니다.
라파엘

2
이 경우 find를 사용하는 것은 정말 좋지 않습니다.
ALex_hha

1
그리고 아마도 당신은 대신 사이트 가능 사이트를 사용해야합니다
ALex_hha

1
index.html은 훌륭한 파일이 아닙니다. Apache에서 디렉토리 목록이 해제되지 않은 경우 각 디렉토리에 하나씩 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를 찾을 위치를 모릅니다.

페이지 소스 파일을 찾으십시오

한 가지 방법은 사이트를 탐색하여보다 고유 한 페이지를 찾는 것입니다. newcontactform.php라고 말하면 같은 서버에서 호스팅하는 다른 사이트에는 표시되지 않는 것이 이상적입니다.

그런 다음 시도해 볼 수 있습니다

locate newcontactform.php

실패하면 다음을 수행하십시오.

find / -name newcontactform.php

이것은 엄청나게 작은 후보 목록을 생성해야합니다.

그런 다음 파일을 검사하고, diff를 수행하고, 필요한 경우 약간의 변경 (예 : HTML 주석 삽입)을 시도하여 파일이 실제로 페이지를 생성하는지 확인하십시오.

구성 찾기

때때로 ps명령 의 출력에서 ​​구성 파일이 분명합니다 . 최악의 경우 ps -ef | grep -e 'apache|httpd'이지만 더 창의적인 ps옵션 사용은 살펴볼 가치가 있습니다.

당신은 찾아보실 수 있습니다 httpd.conf우분투의 일반적인 위치에와 아파치 (다를 수 있습니다) 프로젝트 또는 사용을 위해 locate그리고 find위와 같이.

때로는 기본 구성 파일이 가상 호스트의 다른 구성 파일을 참조하기도합니다. 기본 구성 파일을 식별하여이 문제를 해결할 수 있습니다.

만성 사례

때때로 오래된 서버는 다양한 웹 서버 데몬을 실행합니다. 이 경우 모든 파일을 찾고 구성 파일의 위치를 ​​알아내는 데 시간이 걸릴 수 있습니다. 위의 기술의 조합은 결국 성공해야합니다.

를 사용하여 포트 80 등에서 청취중인 프로그램을 찾을 수 있습니다 netstat -lntp. 바이너리를 찾는 것은 구성 파일이 들어있는 디렉토리 트리에 대한 유용한 포인터 인 경우가 많습니다.


1

- 당신은 당신이 웹 서버의 (아파치) 구성 파일에서 찾고있는 도메인의 가상 호스트를 확인하실 수 있습니다 httpd.conf에 간단하게 찾기까지 그것을 통해 파일 및 스크롤을 엽니 다 (대부분의 아마 등 / /에 위치) VirtulaHost에 대한 지침을 도메인에 DocumentRoot 지시문 이 표시됩니다. DocumentRoot 지시문은 웹 사이트의 문서 루트 디렉토리이며 응용 프로그램의 파일을 찾을 수있는 위치입니다.


1

가주세요

CD / etc / apache2 / site-avaliable /

여기에 구성 파일이 있습니다 (예 : 000-default.conf).

이 파일을 열거 나 다음을 사용하여 구성 파일을여십시오.

vi 000-default.conf

거기에서 DocumentRoot를 찾을 수 있습니다.

이것은 마찬가지로 기본 conf 파일입니다. 일부 conf 세부 정보도 확인하십시오.


3
이것은 시스템에 따라 다릅니다.
Monica와의 가벼움 경주

@PreferenceBean의 주석 외에도 기본 가상 호스트에 대한 구성 만 표시됩니다. 쓸모없는 이름을 가진 많은 호스트가있을 수 있습니다
gabe3886
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.