Jak dowiedzieć się, gdzie znajduje się kod strony internetowej?

28

Fakty:

  • jest strona internetowa
  • ta strona jest dostępna za pośrednictwem www.example.org
  • istnieje instancja EC2, która najprawdopodobniej utrzymuje stronę internetową
  • serwer to Apache
  • system operacyjny serwera to Ubuntu
  • Mam pełny dostęp do serwera (i uprawnienia sudo)
  • serwer to ogromny bałagan

Problem w tym, że nie mam pojęcia, gdzie - po prostu umieścić - znaleźć plik index.html / index.php, który zostanie załadowany.

Jak dowiedzieć się, gdzie znaleźć kod PHP i HTML witryny? Czy istnieje systematyczne podejście do tego problemu?

Raffael
źródło
znasz nazwę domeny?
the_velour_fog
9
tak, stwierdzam to w drugim punkcie
Raffael,
find / -name nameofsomefileonthewebsite.html?
user253751

Odpowiedzi:

53

Przede wszystkim powinieneś sprawdzić, jakie strony są hostowane na serwerze

# apachectl -t -D DUMP_VHOSTS

Następnie, gdy znajdziesz witrynę, sprawdź odpowiedni plik konfiguracyjny dla opcji DocumentRoot. Na przykład

# 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

Chcesz wiedzieć, gdzie znajduje się strona internetowa 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

Powinien także szukać aliasów i przekierowań / przeróbek

Powinieneś także zwrócić uwagę na wszelkie dyrektywy dotyczące aliasów. Na przykład przy następujących ustawieniach

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

Kiedy uzyskasz dostęp do http://example.net/some.file.html - apache spojrzy na plik w / vhosts / default / public_html /, jednocześnie z http://example.net/api/some.file .html plik zostanie wyświetlony w / vhosts / default / public_api /.

Co z przepisem / przekierowaniem, szczególnie programowym (kiedy przekierowania są wywoływane przez jakiś kod php), myślę, że nie ma łatwego sposobu na znalezienie takich przypadków.

ALex_hha
źródło
3
Powinien także szukać aliasów i przekierowań / przeróbek.
Bob
3

Spróbuj użyć find

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

W przeciwnym razie zakładając, że Apache został zainstalowany z repozytoriów Ubuntu, zajrzyj do niego /etc/apache2/sites-available, tj

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

Jeśli na stronie internetowej zdefiniowano apache VHOST, który może zlokalizować plik konfiguracyjny, poszukaj w nim tego pliku, aby "documentroot"podać lokalizację kodu źródłowego

the_velour_fog
źródło
1
cóż ... „zrobiłem” to - zajęło to 2 godziny, serwer prawie przestał odpowiadać i znalazłem 67 index.html i prawie tyle samo index.php. Więc to podejście nie robi tego dla mnie.
Raffael
2
W takim przypadku jest to naprawdę zły pomysł
ALex_hha
1
I prawdopodobnie powinieneś zamiast tego korzystać z witryn
ALex_hha
1
index.html nie jest świetnym plikiem do poszukiwania. Istnieje kilka CMS-ów, które umieszczają po jednym w każdym katalogu na wypadek, gdyby wykazy katalogów nie zostały wyłączone w Apache, więc zawsze ładuje pustą stronę zamiast pokazywać zawartość katalogu.
gabe3886
@ thevelour_fog Nie, to jest bardzo krytyczne, ale -type fdotyczy tylko -iname "*index.html*"twojego polecenia. Powinien być-type f \( -iname "*index.html*" -o -name "*index.php*" \)
2

Inną metodą, która może być przydatna do debugowania strony internetowej (lub dowolnego innego procesu w tym zakresie) jest użycie lsof(która może nie być zgodna z ścieżką, powszechnie znajdowana w /sbin/lsof)

lsof -s [PID] wyświetli listę wszystkich plików, na których dany proces ma uchwyt, i może być przydatny, aby zobaczyć dokładnie, co jest używane (obejmuje to pliki html / php, a także pliki dziennika i biblioteki, których potrzebuje strona)

Centyman
źródło
1

Nie mam pojęcia, gdzie ... znaleźć plik index.html / index.php, który zostanie załadowany.

Poszukaj plików źródłowych strony

Jednym z podejść jest przeglądanie witryny w celu znalezienia bardziej unikalnej strony - powiedzmy newcontactform.php - najlepiej takiej, która prawdopodobnie nie pojawi się w innych witrynach hostowanych przez ten sam serwer.

Następnie możesz spróbować

locate newcontactform.php

jeśli to się nie powiedzie, proszę

find / -name newcontactform.php

powinno to stworzyć stosunkowo małą listę kandydatów.

Następnie możesz sprawdzić pliki, dokonać różnic i, jeśli to konieczne, wypróbować małe zmiany (np. Wstaw komentarz HTML), aby sprawdzić, czy plik rzeczywiście tworzy stronę.

Znajdź konfiguracje

Czasami pliki konfiguracyjne są widoczne w danych wyjściowych pspolecenia. Najgorszy przypadek, ps -ef | grep -e 'apache|httpd'ale pswarto bardziej kreatywnie wykorzystać opcje.

Możesz szukać httpd.confw typowych lokalizacjach dla Ubuntu i projektu httpd Apache (które mogą się różnić) lub po prostu użyć locatei findjak wyżej.

Czasami główny plik konfiguracyjny odnosi się do innych plików konfiguracyjnych dla vhostów. Możesz to rozwiązać, identyfikując główny plik konfiguracyjny.

Przypadki przewlekłe

Czasami na starych serwerach działają różne demony serwera WWW. W takim przypadku znalezienie ich wszystkich i ustalenie, gdzie znajdują się ich pliki konfiguracyjne, może chwilę potrwać. Kombinacja powyższych technik powinna ostatecznie zakończyć się sukcesem.

Możesz sprawdzić, jakich programów nasłuchuje na porcie 80 itp netstat -lntp. Często lokalizowanie plików binarnych jest przydatnym wskaźnikiem do drzewa katalogów zawierającego pliki konfiguracyjne.

RedGrittyBrick
źródło
1

Możesz sprawdzić Vhost dla szukanej domeny w pliku konfiguracyjnym serwera WWW (apache) - httpd.conf (najprawdopodobniej w / etc /) Po prostu otwórz plik i przewiń go, aż znajdziesz dyrektywę VirtulaHost dla Twoja domena, a tam zobaczysz dyrektywę DocumentRoot - główny katalog dokumentów Twojej witryny, miejsce, w którym znajdziesz pliki aplikacji.

Georgi Tsvetanov Tsenov
źródło
1

Proszę idź do

cd / etc / apache2 / site-avaliable /

Tutaj znajdziesz swój plik konfiguracyjny (np .: 000-default.conf)

Otwórz ten plik / otwórz plik konfiguracyjny za pomocą

vi 000-default.conf

Znajdziesz tam DocumentRoot, czyli kod Twojej witryny

Jest to domyślny plik conf, podobnie jak niektóre szczegóły conf, sprawdź je również.

krishna chandra
źródło
3
Jest to zależne od systemu.
Lekkość ściga się z Moniką
Oprócz komentarza @PreferenceBean pokaże tylko konfigurację domyślnych hostów vhost. Może istnieć wiele vhostów z bezużytecznymi nazwami, które również mogą wymagać sprawdzenia
gabe3886,