Comment savoir où réside le code du site Web?

28

Les faits:

  • il y a un site web
  • ce site est accessible via www.example.org
  • il existe une instance EC2 qui conserve très probablement le site Web
  • le serveur est Apache
  • le système d'exploitation du serveur est Ubuntu
  • J'ai un accès complet au serveur (et aux privilèges sudo)
  • le serveur est un énorme gâchis

Le problème est que je n'ai aucune idée où - simplement mettre - trouver l'index.html / index.php qui est chargé.

Comment savoir où trouver le code PHP et HTML du site Web? Existe-t-il une approche systématique de ce problème?

Raffael
la source
connaissez-vous le nom de domaine?
the_velour_fog
9
oui, je le déclare dans la deuxième puce
Raffael
find / -name nameofsomefileonthewebsite.html?
user253751

Réponses:

53

Tout d'abord, vous devez vérifier quels sites Web sont hébergés sur le serveur

# apachectl -t -D DUMP_VHOSTS

Ensuite, lorsque vous trouverez un site, vérifiez le fichier de configuration correspondant pour l'option DocumentRoot. Par exemple

# 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

Vous voulez savoir où se trouve un site 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

Devrait également être à la recherche d'alias et de redirections / réécritures

Vous devez également faire attention à toutes les directives d'alias. Par exemple avec les paramètres suivants

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

Lorsque vous accéderez à http://example.net/some.file.html - apache cherchera le fichier dans / vhosts / default / public_html /, en même temps que http://example.net/api/some.file .html le fichier sera consulté dans / vhosts / default / public_api /.

Qu'en est-il des réécritures / redirections, en particulier programmatiques (lorsque les redirections sont déclenchées par du code php), je pense qu'il n'y a pas de moyen facile de trouver de tels cas.

ALex_hha
la source
3
Devrait également être à la recherche d'alias et de redirections / réécritures.
Bob
3

Essayez d'utiliser find

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

Sinon, en supposant qu'Apache a été installé à partir des référentiels Ubuntu, regardez dans /etc/apache2/sites-available, c.- à -d.

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

Si le site Web a un VHOST Apache défini, cela pourrait localiser le fichier de configuration, alors recherchez dans ce fichier car "documentroot"cela devrait vous indiquer l'emplacement du code source

the_velour_fog
la source
1
eh bien ... j'ai "fait" cela - cela a pris 2 heures, le serveur a presque cessé de répondre et j'ai trouvé 67 index.html et presque autant d'index.php. Donc, cette approche ne me convient pas.
Raffael
2
C'est une très mauvaise idée d'utiliser find dans un tel cas
ALex_hha
1
Et vous devriez probablement utiliser les sites activés à la place
ALex_hha
1
index.html n'est pas un excellent fichier à rechercher. Il existe quelques CMS qui en placent un dans chaque répertoire au cas où les listes de répertoires ne sont pas désactivées dans Apache, de sorte qu'il chargera toujours une page vierge au lieu d'afficher le contenu du répertoire.
gabe3886
@the_velour_fog Non, c'est super critique ici, mais le -type fs'applique uniquement à -iname "*index.html*"votre commande. Devrait être-type f \( -iname "*index.html*" -o -name "*index.php*" \)
2

Une autre méthode, qui peut être utile pour déboguer un site Web (ou tout autre processus d'ailleurs) est d'utiliser lsof(qui peut ne pas être sur le chemin, que l'on trouve couramment dans /sbin/lsof)

lsof -s [PID] répertorie tous les fichiers sur lesquels le processus donné a une poignée et peut être utile pour voir exactement ce qui est utilisé (cela inclut vos fichiers html / php, ainsi que les fichiers journaux et les bibliothèques dont le site a besoin)

Centimane
la source
1

Je ne sais pas où trouver ... index.html / index.php qui est chargé.

Rechercher des fichiers source de page

Une approche consiste à parcourir le site pour trouver une page plus unique - disons newcontactform.php - idéalement une page qui ne devrait pas apparaître sur d'autres sites hébergés par le même serveur.

Vous pouvez ensuite essayer

locate newcontactform.php

si cela échoue, suivez

find / -name newcontactform.php

cela devrait produire une liste de candidats gérable.

Vous pouvez ensuite inspecter les fichiers, faire des différences et si nécessaire essayer de petites modifications (par exemple insérer un commentaire HTML) pour vérifier que le fichier produit bien la page.

Trouvez les configs

Parfois, les fichiers de configuration sont évidents dans la sortie de la pscommande. Le pire des cas est, ps -ef | grep -e 'apache|httpd'mais une utilisation plus créative des psoptions mérite d’être explorée.

Vous pouvez rechercher httpd.confdans les emplacements typiques pour Ubuntu et pour le projet Apache httpd (qui peuvent différer) ou simplement utiliser locateet findcomme ci-dessus.

Parfois, le fichier de configuration principal fait référence à d'autres fichiers de configuration pour vhosts. Vous pouvez résoudre ce problème en identifiant le fichier de configuration principal.

Cas chroniques

Parfois, les anciens serveurs exécutent une variété de démons de serveur Web. Dans ce cas, cela peut prendre un certain temps pour les trouver tous et déterminer où se trouvent leurs fichiers de configuration. Une combinaison des techniques ci-dessus devrait finalement réussir.

Vous pouvez trouver quels programmes écoutent sur le port 80, etc. en utilisant netstat -lntp. Souvent, la localisation des fichiers binaires est un pointeur utile vers une arborescence de répertoires contenant les fichiers de configuration.

RedGrittyBrick
la source
1

Vous pouvez vérifier le Vhost pour le domaine que vous recherchez dans le fichier de configuration du serveur Web (apache) - httpd.conf (très probablement situé dans / etc /) Ouvrez simplement le fichier et faites-le défiler jusqu'à ce que vous trouviez la directive VirtulaHost pour votre domaine et là vous verrez la directive DocumentRoot - qui est le répertoire racine du document de votre site Web, l'endroit où vous trouverez les fichiers de l'application.

Georgi Tsvetanov Tsenov
la source
1

S'il vous plaît allez à

cd / etc / apache2 / site-avaliable /

Ici vous trouverez votre fichier de configuration (ie: 000-default.conf)

Veuillez ouvrir ce fichier / ouvrir votre fichier de configuration en utilisant

vi 000-default.conf

Vous y trouverez DocumentRoot, c'est le code de votre site Web

Il s'agit du fichier de configuration par défaut, vous aurez également quelques détails sur la configuration, veuillez les vérifier également.

krishna chandra
la source
3
Cela dépend du système.
Courses de légèreté avec Monica
En plus du commentaire de @PreferenceBean, cela n'affichera que la configuration des vhosts par défaut. Il pourrait y avoir de nombreux vhosts avec des noms inutiles qui pourraient également avoir besoin d'être vérifiés
gabe3886