Làm cách nào để biết mã của trang web nằm ở đâu?


28

Sự thật:

  • có một trang web
  • trang web này có thể truy cập thông qua www.example.org
  • có một ví dụ EC2 rất có thể giữ trang web
  • máy chủ là Apache
  • HĐH máy chủ là Ubuntu
  • Tôi có toàn quyền truy cập vào máy chủ (và đặc quyền sudo)
  • máy chủ là một mớ hỗn độn

Vấn đề là tôi không biết nơi nào - chỉ cần đặt - tìm index.html / index.php được tải.

Làm cách nào để tìm ra nơi tìm mã PHP và HTML của trang web? Có một cách tiếp cận có hệ thống cho vấn đề này?


bạn có biết tên miền không?
the_velour_fog

9
vâng, tôi nêu nó ở điểm đạn thứ hai
Raffael

find / -name nameofsomefileonthewebsite.html?
dùng253751

Câu trả lời:


53

Trước hết bạn nên kiểm tra những trang web nào được lưu trữ trên máy chủ

# apachectl -t -D DUMP_VHOSTS

Sau đó, khi bạn sẽ tìm thấy một trang web kiểm tra tệp cấu hình tương ứng cho tùy chọn DocumentRoot. Ví dụ

# 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

Bạn muốn biết nơi cư trú của một trang 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

Cũng nên đề phòng bí danh và chuyển hướng / viết lại

Bạn cũng nên chú ý đến bất kỳ chỉ thị bí danh. Ví dụ với các cài đặt sau

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

Khi bạn sẽ truy cập http://example.net/some.file.html - apache sẽ xem tệp tại / vhosts / default / public_html /, cùng lúc với http://example.net/api/some.file .html tệp sẽ được xem tại / vhosts / default / public_api /.

Điều gì về việc viết lại / chuyển hướng, đặc biệt là lập trình (khi chuyển hướng được kích hoạt bởi một số mã php), tôi nghĩ không có cách nào dễ dàng để tìm thấy những trường hợp như vậy.


3
Cũng nên đề phòng bí danh và chuyển hướng / viết lại.
Bob

3

Hãy thử sử dụng tìm

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

Mặt khác, giả sử Apache đã được cài đặt từ kho Ubuntu, hãy xem /etc/apache2/sites-available, tức là

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

Nếu trang web có VHOST apache được xác định, có thể định vị tệp cấu hình, sau đó tìm trong tệp đó để "documentroot"biết cho bạn biết vị trí của mã nguồn


1
tốt ... tôi đã "làm" điều đó - mất 2 giờ, máy chủ gần như ngừng phản hồi và tôi tìm thấy 67 index.html và gần như nhiều index.php. Vì vậy, cách tiếp cận đó không làm điều đó cho tôi.
Raffael

2
Đó là một ý tưởng thực sự tồi tệ để sử dụng find trong trường hợp như vậy
ALex_hha

1
Và có lẽ bạn nên sử dụng các trang web được kích hoạt thay thế
ALex_hha

1
index.html không phải là một tập tin tuyệt vời để săn lùng. Có một vài CMS ngoài đó đặt một trong mỗi thư mục trong trường hợp danh sách thư mục không bị tắt trong Apache, vì vậy nó sẽ luôn tải một trang trống thay vì hiển thị nội dung thư mục.
gabe3886

@the_velour_fog Không, điều đó cực kỳ quan trọng ở đây, nhưng điều -type fnày chỉ áp dụng -iname "*index.html*"trong lệnh của bạn. Nên là-type f \( -iname "*index.html*" -o -name "*index.php*" \)

2

Một phương pháp khác, có thể hữu ích để gỡ lỗi một trang web (hoặc bất kỳ quy trình nào cho vấn đề đó) là sử dụng lsof(có thể không có trên đường dẫn, thường được tìm thấy trong /sbin/lsof)

lsof -s [PID] sẽ liệt kê tất cả các tệp mà quy trình đã cho có xử lý và có thể hữu ích để xem chính xác những gì đang được sử dụng (bao gồm các tệp html / php của bạn, cũng như các tệp nhật ký và thư viện mà trang web cần)


1

Tôi không biết nơi nào để ... tìm index.html / index.php được tải.

Tìm tập tin nguồn trang

Một cách tiếp cận là duyệt trang web để tìm một trang độc đáo hơn - giả sử newcontactform.php - lý tưởng là không thể xuất hiện trong các trang web khác được lưu trữ bởi cùng một máy chủ.

Sau đó bạn có thể thử

locate newcontactform.php

nếu thất bại, hãy làm theo

find / -name newcontactform.php

điều này sẽ tạo ra một danh sách nhỏ các ứng cử viên.

Sau đó, bạn có thể kiểm tra các tệp, thực hiện các khác biệt và nếu cần, hãy thử các thay đổi nhỏ (ví dụ: chèn một nhận xét HTML) để xác minh rằng tệp thực sự tạo ra trang.

Tìm cấu hình

Đôi khi các tập tin cấu hình là hiển nhiên trong đầu ra của pslệnh. Trường hợp xấu nhất là ps -ef | grep -e 'apache|httpd'nhưng sử dụng pstùy chọn sáng tạo hơn có thể đáng để khám phá.

Bạn có thể tìm kiếm httpd.confở các vị trí điển hình cho Ubuntu và cho dự án httpd của Apache (có thể khác nhau) hoặc chỉ sử dụng locatefindnhư trên.

Đôi khi tệp cấu hình chính đề cập đến các tệp cấu hình khác cho vhost. Bạn có thể giải quyết vấn đề này bằng cách xác định tệp cấu hình chính.

Trường hợp mãn tính

Đôi khi, các máy chủ cũ chạy nhiều loại trình nền webserver. Trong trường hợp đó, có thể mất một lúc để tìm tất cả chúng và tìm ra nơi tập tin cấu hình của chúng. Một sự kết hợp của các kỹ thuật trên cuối cùng sẽ thành công.

Bạn có thể tìm thấy những chương trình nào đang lắng nghe trên cổng 80 vv sử dụng netstat -lntp. Thông thường, việc định vị các nhị phân là một con trỏ hữu ích cho cây thư mục chứa các tệp cấu hình.


1

Bạn có thể kiểm tra Vhost cho tên miền mà bạn đang tìm kiếm trong tệp cấu hình (apache) của máy chủ web - httpd.conf (có thể nằm trong / etc /) Chỉ cần mở tệp và cuộn qua cho đến khi bạn tìm thấy chỉ thị Virtulahost cho tên miền của bạn và ở đó bạn sẽ thấy lệnh DocumentRoot - là thư mục gốc tài liệu của trang web của bạn, nơi bạn sẽ tìm thấy các tệp của ứng dụng.


1

Xin hãy đến

cd / etc / apache2 / trang web sẵn có /

Tại đây bạn sẽ tìm thấy tệp cấu hình của mình (ví dụ: 000-default.conf)

Vui lòng mở tệp này / mở tệp cấu hình của bạn bằng cách sử dụng

vi 000-default.conf

Ở đó bạn sẽ tìm thấy DocumentRoot. Đó là mã trang web của bạn

Đây là tệp conf mặc định tương tự như vậy, bạn sẽ có một số chi tiết conf xin vui lòng kiểm tra những cái đó là tốt.


3
Điều này phụ thuộc vào hệ thống.
Cuộc đua nhẹ nhàng với Monica

Ngoài nhận xét của @PreferenceBean, điều này sẽ chỉ hiển thị cấu hình cho các vhost mặc định. Có thể có nhiều vhost trên đó với những cái tên vô dụng cũng có thể cần kiểm tra
gabe3886
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.