Como descubro onde reside o código do site?


28

Os fatos:

  • existe um site
  • este site pode ser acessado em www.example.org
  • existe uma instância do EC2 que provavelmente mantém o site
  • o servidor é Apache
  • o sistema operacional do servidor é Ubuntu
  • Eu tenho acesso total ao servidor (e privilégios sudo)
  • o servidor está uma bagunça enorme

O problema é que não tenho idéia de onde - basta colocar - encontrar o index.html / index.php que é carregado.

Como faço para descobrir onde encontrar o código PHP e HTML do site? Existe uma abordagem sistemática para esse problema?


você conhece o nome de domínio?
the_velour_fog

9
sim, afirmo no segundo ponto #
Raffael

find / -name nameofsomefileonthewebsite.html?
precisa saber é o seguinte

Respostas:


53

Antes de tudo, você deve verificar quais sites estão hospedados no servidor

# apachectl -t -D DUMP_VHOSTS

Então, quando você encontrar um site, verifique o arquivo de configuração correspondente para a opção DocumentRoot. Por exemplo

# 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

Você quer saber onde fica um site 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

Também deve estar atento a aliases e redirecionamentos / reescritas

Você também deve prestar atenção em qualquer diretiva de alias. Por exemplo, com as seguintes configurações

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

Quando você acessará http://example.net/some.file.html - o apache consultará o arquivo em / vhosts / default / public_html /, ao mesmo tempo em http://example.net/api/some.file .html, o arquivo será visualizado em / vhosts / default / public_api /.

E quanto a reescritas / redirecionamentos, especialmente programáticos (quando os redirecionamentos são acionados por algum código php), acho que não há uma maneira fácil de encontrar esses casos.


3
Também deve estar atento a aliases e redirecionamentos / reescritas.
24416 Bob

3

Tente usar o find

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

Caso contrário, assumindo Apache foi instalado a partir de repositórios do Ubuntu, olhar em /etc/apache2/sites-available, ou seja,

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

Se o site tiver um VHOST apache definido, que pode localizar o arquivo de configuração, procure nesse arquivo e "documentroot"informe a localização do código-fonte


1
bem ... eu "fiz" isso - demorou 2 horas, o servidor quase parou de responder e eu encontrei 67 index.html e quase tantos index.php. Portanto, essa abordagem não está fazendo isso por mim.
Raffael

2
É uma péssima idéia usar o find nesse caso.
ALex_hha

1
E provavelmente você deve usar sites ativados
ALex_hha

1
index.html não é um ótimo arquivo para procurar. Existem alguns CMSs por aí que colocam um em cada diretório, caso as listagens de diretórios não sejam desativadas no Apache, portanto, ele sempre carrega uma página em branco em vez de mostrar o conteúdo do diretório.
gabe3886

@the_velour_fog Não, isso é super crítico aqui, mas ele -type festá se aplicando apenas ao -iname "*index.html*"seu comando. Deverá ser-type f \( -iname "*index.html*" -o -name "*index.php*" \)

2

Outro método, que pode ser útil para depurar um site (ou qualquer outro processo) é usar lsof(que pode não estar no caminho, geralmente encontrado em /sbin/lsof)

lsof -s [PID] listará todos os arquivos nos quais o processo especificado é manipulado e pode ser útil para ver exatamente o que está sendo usado (isso inclui os arquivos html / php, além de arquivos de log e bibliotecas que o site precisa)


1

Não tenho idéia de onde ... encontre o index.html / index.php que é carregado.

Procure por arquivos de origem da página

Uma abordagem é navegar no site para encontrar uma página mais exclusiva - digamos newcontactform.php - idealmente uma que dificilmente apareça em outros sites hospedados no mesmo servidor.

Você pode tentar

locate newcontactform.php

se isso falhar, siga por

find / -name newcontactform.php

isso deve produzir uma lista gerenciávelmente pequena de candidatos.

Você pode inspecionar os arquivos, fazer diferenças e, se necessário, tentar pequenas alterações (por exemplo, inserir um comentário HTML) para verificar se o arquivo realmente produz a página.

Encontre as configurações

Às vezes, os arquivos de configuração são evidentes na saída do pscomando. Na pior das hipóteses, vale a pena explorar o ps -ef | grep -e 'apache|httpd'uso mais criativo de psopções.

Você pode procurar httpd.confnos locais típicos do Ubuntu e do projeto httpd Apache (que podem ser diferentes) ou apenas usar locatee findcomo acima.

Às vezes, o arquivo de configuração principal se refere a outros arquivos de configuração para vhosts. Você pode resolver isso identificando o arquivo de configuração principal.

Casos crônicos

Às vezes, servidores antigos executam uma variedade de daemons de servidor da web. Nesse caso, pode demorar um pouco para encontrar todos eles e descobrir onde estão os arquivos de configuração. Uma combinação das técnicas acima deve ter êxito.

Você pode encontrar quais programas estão ouvindo na porta 80, etc, usando netstat -lntp. Freqüentemente, localizar os binários é um ponteiro útil para uma árvore de diretórios que contém os arquivos de configuração.


1

Você pode verificar o Vhost para o domínio que está procurando no arquivo de configuração do servidor web (apache) - httpd.conf (provavelmente localizado em / etc /) Simplesmente abra o arquivo e role-o até encontrar a diretiva VirtulaHost para seu domínio e você verá a diretiva DocumentRoot - que é o diretório raiz do documento do seu site, o local onde você encontrará os arquivos do aplicativo.


1

Por favor vá a

cd / etc / apache2 / disponível no site /

Aqui você encontrará seu arquivo de configuração (por exemplo: 000-default.conf)

Por favor, abra este arquivo / abra seu arquivo de configuração usando

vi 000-default.conf

Lá você encontrará o DocumentRoot. Esse é o código do seu site

Este é o arquivo conf padrão. Da mesma forma, você encontrará alguns detalhes de conf. Verifique-os também.


3
Isso depende do sistema.
Lightness Races com Monica

Além do comentário de @PreferenceBean, isso mostrará apenas a configuração dos vhosts padrão. Poderia haver muitas vhosts sobre lá com nomes inúteis que também pode precisar verificar
gabe3886
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.