Как узнать, где находится код веб-сайта?

28

Факты:

  • есть сайт
  • этот сайт доступен через www.example.org
  • есть экземпляр EC2, который очень вероятно сохраняет веб-сайт
  • сервер Apache
  • ОС сервера - это Ubuntu
  • У меня полный доступ к серверу (и привилегии sudo)
  • сервер огромный беспорядок

Проблема в том, что я понятия не имею, где, проще говоря, найти index.html / index.php, который загружается.

Как мне найти, где найти PHP и HTML код сайта? Есть ли системный подход к этой проблеме?

Раффаэль
источник
ты знаешь доменное имя?
the_velour_fog
9
да, я заявляю это во втором пункте пули
Раффаэль
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 будет искать файл в / vhosts / default / public_html / одновременно с http://example.net/api/some.file .html файл будет просматриваться в / vhosts / default / public_api /.

Что касается перезаписей / переадресаций, особенно программных (когда перенаправления запускаются каким-то php-кодом), я думаю, что нет простого способа найти такие случаи.

ALex_hha
источник
3
Также следует искать псевдонимы и перенаправлять / переписывать.
Боб
3

Попробуйте использовать поиск

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

В противном случае, если Apache установлен из репозиториев Ubuntu, посмотрите /etc/apache2/sites-available, т.е.

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

Если на веб-сайте определен apache VHOST, который может найти конфигурационный файл, то посмотрите в этом файле, "documentroot"чтобы узнать местоположение исходного кода.

the_velour_fog
источник
1
хорошо ... я "сделал" это - это заняло 2 часа, сервер почти перестал отвечать, и я нашел 67 index.html и почти столько же index.php. Так что этот подход не делает это для меня.
Раффаэль
2
Это действительно плохая идея использовать find в таком случае
ALex_hha
1
И, вероятно, вы должны вместо этого использовать сайты с поддержкой
ALex_hha
1
index.html - не лучший файл для поиска. Есть несколько CMS, которые помещают по одному в каждый каталог, если списки каталогов не отключены в Apache, поэтому он всегда загружает пустую страницу вместо того, чтобы показывать содержимое каталога.
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 файлы, а также файлы журналов и библиотеки, необходимые для сайта)

Centimane
источник
1

Я понятия не имею, где ... найти index.html / index.php, который загружается.

Ищите исходные файлы страницы

Один из подходов состоит в том, чтобы просмотреть сайт, чтобы найти более уникальную страницу - скажем, newcontactform.php - в идеале такую, которая вряд ли появится на других сайтах, размещенных на том же сервере.

Вы можете попробовать

locate newcontactform.php

если это не удается, следуйте

find / -name newcontactform.php

это должно привести к небольшому списку кандидатов.

Затем вы можете просмотреть файлы, выполнить сравнения и, если необходимо, попробовать внести небольшие изменения (например, вставить комментарий HTML), чтобы убедиться, что файл действительно создает страницу.

Найти конфиги

Иногда конфигурационные файлы видны в выводе psкоманды. Худший случай - ps -ef | grep -e 'apache|httpd'но более творческое использованиеps стоит изучить опций.

Вы можете искать httpd.confв типичных местах для Ubuntu и для проекта Apache httpd (которые могут отличаться) или просто использовать locateиfind как указано выше.

Иногда основной файл конфигурации относится к другим файлам конфигурации для vhosts. Вы можете решить это, указав основной файл конфигурации.

Хронические случаи

Иногда старые серверы запускают различные демоны веб-серверов. В этом случае может потребоваться некоторое время, чтобы найти их все и выяснить, где находятся их конфигурационные файлы. Комбинация методов, описанных выше, в конечном итоге должна быть успешной

Вы можете узнать, какие программы прослушивают порт 80 и т netstat -lntp. Д. Часто поиск двоичных файлов является полезным указателем на дерево каталогов, содержащее файлы конфигурации.

RedGrittyBrick
источник
1

Вы можете проверить Vhost для домена, который вы ищете, в файле конфигурации веб-сервера (apache) - httpd.conf (скорее всего, находится в / etc /). Просто откройте файл и пролистайте его, пока не найдете директиву VirtulaHost для ваш домен, и там вы увидите директиву DocumentRoot - корневой каталог документов вашего сайта, место, где вы найдете файлы приложения.

Георги Цветанов Ценов
источник
1

Пожалуйста, перейдите к

cd / etc / apache2 / site-avaliable /

Здесь вы найдете свой файл конфигурации (то есть: 000-default.conf)

Пожалуйста, откройте этот файл / откройте ваш файл конфигурации, используя

vi 000-default.conf

Там вы найдете DocumentRoot. Это код вашего сайта

Это файл конфигурации по умолчанию, так же вы получите некоторые подробности, пожалуйста, проверьте их.

Кришна Чандра
источник
3
Это зависит от системы.
Легкость гонок с Моникой
В дополнение к комментарию @PreferenceBean здесь будет показана только конфигурация для vhosts по умолчанию. Там может быть много vhosts с бесполезными именами, которые также могут нуждаться в проверке
gabe3886