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


28

Факти:

  • є веб-сайт
  • Цей веб-сайт доступний через www.example.org
  • Є екземпляр EC2, який дуже ймовірно зберігає веб-сайт
  • сервер - Apache
  • ОС сервера - Ubuntu
  • Я маю повний доступ до сервера (і привілей sudo)
  • сервер - величезний безлад

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

Як визначити, де знайти PHP та HTML-код веб-сайту? Чи існує системний підхід до цієї проблеми?


чи знаєте ви доменне ім’я?
the_velour_fog

9
так, я заявляю про це у другій точці кулі
Раффаель,

find / -name nameofsomefileonthewebsite.html?
користувач253751

Відповіді:


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-кодом), я думаю, що немає простого способу знайти такі випадки.


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

Якщо на веб-сайті визначений апарат VHOST apache, який може знайти конфігураційний файл, то перегляньте цей файл, щоб "documentroot"вказати місце розташування вихідного коду


1
ну ... я "зробив" це - пройшло 2 години, сервер майже перестав відповідати, і я знайшов 67 index.html та майже стільки ж index.php. Тож такий підхід для мене це не робить.
Раффаель

2
Це дуже погана ідея використовувати пошук у такому випадку
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 файли, а також файли журналів та бібліотеки, потрібні сайту)


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. Часто розміщення бінарних файлів є корисним вказівником на дерево каталогів, яке містить файли конфігурації.


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 за замовчуванням. Там може бути багато привидів із марними іменами, які також можуть знадобитися перевірки
gabe3886
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.