Como descubro onde reside o código do site?

28

Os fatos:

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

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

Como descubro onde encontrar o código PHP e HTML do site? Existe uma abordagem sistemática para este problema?

    
por Raffael 29.02.2016 / 11:53

6 respostas

53

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

# apachectl -t -D DUMP_VHOSTS

Depois, 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 reside 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

Should also be on the lookout for aliases and redirects/rewrites

Você também deve prestar atenção nas diretivas 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 o link - o apache procurará o arquivo em / vhosts / default / public_html /, ao mesmo tempo com o link , o arquivo será analisado em / vhosts / default / public_api /.

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

    
por 29.02.2016 / 12:05
3

Tente usar o find

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

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

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

Se o site tiver um VHOST do Apache definido, que pode localizar o arquivo de configuração, procure no arquivo por "documentroot" , isso deve informar a localização do código-fonte

    
por 29.02.2016 / 11:57
2

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

lsof -s [PID] listará todos os arquivos em que o processo dado tem um manipulador e pode ser útil para ver exatamente o que está sendo usado (isso inclui seus arquivos html / php, bem como arquivos de log e bibliotecas que o site precisa)

    
por 29.02.2016 / 20:29
1

I have no idea where to ... find the index.html/index.php which gets loaded.

Procure por arquivos de origem da página

Uma abordagem é navegar no site para encontrar uma página mais exclusiva - digamos, newcontactform.php - de preferência uma que provavelmente não aparecerá em outros sites hospedados pelo mesmo servidor.

Você pode então tentar

locate newcontactform.php

se isso falhar, siga por

find / -name newcontactform.php

isso deve produzir uma pequena lista de candidatos manejável.

Você pode então inspecionar os arquivos, fazer diffs 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, arquivos de configuração são evidentes na saída do comando ps . O pior caso é ps -ef | grep -e 'apache|httpd' , mas vale a pena explorar mais o uso criativo de ps .

Você pode procurar httpd.conf nos locais típicos do Ubuntu e do projeto httpd do Apache (que pode ser diferente) ou apenas usar locate e find como acima.

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

Casos crônicos

Às vezes, os servidores antigos executam vários daemons do servidor da Web. Nesse caso, pode demorar um pouco para encontrá-los todos e descobrir onde estão seus arquivos de configuração. Uma combinação das técnicas acima deve ter sucesso.

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

    
por 01.03.2016 / 18:07
1

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

    
por 02.03.2016 / 15:41
1

Por favor, vá para

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

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á DocumentRoot. Esse é o código do seu site

Este é o arquivo conf padrão, assim como alguns detalhes do conf, por favor, verifique também.

    
por 29.02.2016 / 12:05