Come faccio a sapere dove risiede il codice del sito Web?


28

I fatti:

  • c'è un sito web
  • questo sito Web è accessibile tramite www.example.org
  • c'è un'istanza EC2 che molto probabilmente mantiene il sito web
  • il server è Apache
  • il sistema operativo del server è Ubuntu
  • Ho pieno accesso al server (e privilegi sudo)
  • il server è un casino enorme

Il problema è che non ho idea di dove - in poche parole - trovare index.html / index.php che viene caricato.

Come faccio a capire dove trovare il codice PHP e HTML del sito Web? Esiste un approccio sistematico a questo problema?


conosci il nome di dominio?
the_velour_fog

9
si, lo dico nel secondo punto
Raffael,

find / -name nameofsomefileonthewebsite.html?
user253751

Risposte:


53

Prima di tutto dovresti controllare quali siti web sono ospitati sul server

# apachectl -t -D DUMP_VHOSTS

Quindi, quando troverai un sito, controlla il file di configurazione corrispondente per l'opzione DocumentRoot. Per esempio

# 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

Vuoi sapere dove si trova un sito web 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

Dovrebbe anche essere alla ricerca di alias e reindirizzamenti / riscritture

Dovresti anche prestare attenzione a qualsiasi direttiva alias. Ad esempio con le seguenti impostazioni

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

Quando accederai a http://example.net/some.file.html - apache guarderà il file su / vhosts / default / public_html /, allo stesso tempo con http://example.net/api/some.file .html il file verrà visualizzato in / vhosts / default / public_api /.

Che dire di riscritture / reindirizzamenti, specialmente programmatici (quando i reindirizzamenti sono attivati ​​da un codice php), penso che non ci sia un modo semplice per trovare tali casi.


3
Dovrebbe anche essere alla ricerca di alias e reindirizzamenti / riscritture.
Bob,

3

Prova a usare find

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

In caso contrario, supponendo che Apache è stato installato dal repository di Ubuntu, sguardo /etc/apache2/sites-available, vale a dire

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

Se nel sito Web è stato definito un apache VHOST, che potrebbe individuare il file di configurazione, quindi cercare nel file per "documentroot"questo dovrebbe indicare la posizione del codice sorgente


1
bene ... l'ho "fatto" - ci sono voluti 2 ore, il server ha quasi smesso di rispondere e ho trovato 67 index.html e quasi altrettanti index.php. Quindi questo approccio non lo sta facendo per me.
Raffael,

2
È davvero una cattiva idea usare find in questo caso
ALex_hha,

1
E probabilmente dovresti usare invece i siti abilitati
ALex_hha,

1
index.html non è un file eccezionale da cercare. Ci sono alcuni CMS là fuori che ne inseriscono uno in ogni directory nel caso in cui gli elenchi di directory non siano disattivati ​​in Apache, quindi caricherà sempre una pagina vuota invece di mostrare il contenuto della directory.
gabe3886,

@the_velour_fog No, qui è super critico, ma -type fsi applica solo al -iname "*index.html*"tuo comando. Dovrebbe essere-type f \( -iname "*index.html*" -o -name "*index.php*" \)

2

Un altro metodo, che può essere utile per il debug di un sito Web (o qualsiasi processo in tal senso) è quello di utilizzare lsof(che potrebbe non essere sul percorso, comunemente trovato in /sbin/lsof)

lsof -s [PID] elencherà tutti i file su cui è gestito un determinato processo e può essere utile vedere esattamente cosa viene utilizzato (inclusi i file html / php, nonché i file di registro e le librerie di cui il sito ha bisogno)


1

Non ho idea di dove trovare ... index.html / index.php che viene caricato.

Cerca i file sorgente della pagina

Un approccio è quello di navigare nel sito per trovare una pagina più unica - diciamo newcontactform.php - idealmente uno che è improbabile che appaia in altri siti ospitati dallo stesso server.

Puoi quindi provare

locate newcontactform.php

se fallisce, segui

find / -name newcontactform.php

questo dovrebbe produrre un elenco gestibile di candidati.

È quindi possibile ispezionare i file, fare differenze e, se necessario, provare piccole modifiche (ad esempio inserire un commento HTML) per verificare che il file produca effettivamente la pagina.

Trova le configurazioni

A volte i file di configurazione sono evidenti nell'output del pscomando. Il caso peggiore è, ps -ef | grep -e 'apache|httpd'ma psvale la pena esplorare un uso più creativo delle opzioni.

Puoi cercare httpd.confnelle ubicazioni tipiche di Ubuntu e del progetto httpd di Apache (che può differire) o semplicemente usare locatee findcome sopra.

A volte il file di configurazione principale fa riferimento ad altri file di configurazione per vhosts. Puoi risolverlo identificando il file di configurazione principale.

Casi cronici

A volte, i vecchi server eseguono una varietà di demoni del server web. In tal caso può volerci un po 'per trovarli tutti e capire dove si trovano i loro file di configurazione. Una combinazione delle tecniche sopra dovrebbe alla fine riuscire.

Puoi trovare quali programmi stanno ascoltando sulla porta 80 ecc netstat -lntp. Usando . Spesso, l'individuazione dei file binari è un utile puntatore a un albero di directory che contiene i file di configurazione.


1

Puoi controllare il Vhost per il dominio che stai cercando nel file di configurazione del server web (apache) - httpd.conf (molto probabilmente situato in / etc /) Basta aprire il file e scorrere fino a trovare la direttiva VirtulaHost per il tuo dominio e lì vedrai la direttiva DocumentRoot , che è la directory radice dei documenti del tuo sito Web, il luogo in cui troverai i file dell'applicazione.


1

Per favore vai a

cd / etc / apache2 / site-avaliable /

Qui troverai il tuo file di configurazione (es .: 000-default.conf)

Apri questo file / apri il tuo file di configurazione utilizzando

vi 000-default.conf

Lì troverai DocumentRoot, che è il codice del tuo sito web

Questo è il file di configurazione predefinito allo stesso modo alcuni dettagli di configurazione si prega di controllare anche quelli.


3
Questo dipende dal sistema.
Corse di leggerezza con Monica il

Oltre al commento di @PreferenceBean, questo mostrerà solo la configurazione per i vhosts predefiniti. Ci potrebbero essere molti host con nomi inutili che potrebbero anche essere necessari un controllo
gabe3886,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.