2011-08-18 35 views
5

Tin tặc cơ hội có thể tải xuống tệp index.php từ máy chủ (không phải là kết quả, nhưng nội dung của tệp index.php)? Bạn có đề xuất đặt nội dung index.php vào modules/index_content.php, trong đó thư mục modules là .htaccess protected AND index.php chứa chuỗi chỉ <?php require_once('modules/index_content.php') ?>? Nó có ý nghĩa không?index.php và bảo vệ nội dung của nó

+2

trừ khi cài đặt php của bạn bị hỏng, họ không thể tải xuống mã (giả sử họ không có quyền truy cập ssh, ftp, v.v.). Tôi đã cài đặt php + apache một lần và quên khởi động lại apache, do đó mọi người có thể thấy mã nguồn của các tệp * .php của tôi .. – Vamsi

Trả lời

4

Tiết lộ mã nguồn có thể xảy ra trên máy chủ được định cấu hình tốt và không hiếm như bạn nghĩ. Như những người khác đã nói, nếu cấu hình máy chủ của bạn là âm thanh, thì sẽ không có vấn đề gì với những người yêu cầu tệp PHP trực tiếp.

Tuy nhiên bạn vẫn có thể dễ bị tổn thương:

Nguồn Script bể qua Sao lưu

Nhiều biên tập lại file sao lưu với phần mở rộng tập tin phổ biến, chẳng hạn như ~ hoặc .bak. Máy chủ của bạn có thể không chạy các thông tin này thông qua trình thông dịch PHP vì chúng thường được cấu hình để làm như vậy bằng phần mở rộng của tệp. Để lại các tệp sao lưu này và bạn có thể tiết lộ nguồn của mình.

tập tin bao gồm địa phương

Ngoài ra còn có thể là một vấn đề nếu bạn có một ứng dụng web có sử dụng sử dụng đầu vào để đọc các file khác. Nếu kịch bản không xác thực người dùng nhập chính xác, nó có thể dễ bị LFI tấn công. Các tập lệnh như vậy chỉ nên đọc các tệp có trong danh sách cho phép hoặc tối thiểu được giới hạn ở một thư mục nhất định. Nếu "../" Được chấp nhận, sau đó bạn có một Directory Traversal lỗ hổng mà sẽ làm trầm trọng thêm hai lỗ hổng trên để thậm chí còn nghiêm trọng hơn.

Thêm vào đó, nhiều máy chủ đã kích hoạt

Duyệt thư mục

là khi máy chủ của bạn sẽ liệt kê các tệp trong thư mục nếu tệp mặc định không có sẵn (index.html, index.php, default.htm, v.v.). Điều này sẽ không tiết lộ bất kỳ nguồn nào theo đúng nghĩa của nó nhưng cho phép nhiều tệp (phía máy chủ được xử lý hay không) trên máy chủ được liệt kê cho người dùng độc hại, làm cho nó rất dễ dàng để tập trung hơn nữa các cuộc tấn công.

tiết lộ nguồn thông qua máy chủ thay thế

Một kịch bản tai nạn có thể được khi hai máy chủ web được chỉ (có lẽ gián tiếp) ở thư mục gốc cùng một tài liệu. Nếu một trong các máy chủ web không được cấu hình để xử lý PHP, thì nguồn có thể được tiết lộ. Tôi đã thấy điều này xảy ra một cách ngẫu nhiên một số lần khi máy chủ web được định cấu hình để đảo ngược proxy thành một máy chủ ứng dụng chuỗi cho một số mẫu URL nhất định (thường là theo thư mục). ví dụ. có Tomcat xử lý mọi thứ trong/diễn đàn.

SQL injection

Khá nhiều mỗi DBMS nghiêm trọng có chức năng cho phép nó để đọc các tập tin trên hệ thống. Nếu bạn không bảo vệ đầu vào cơ sở dữ liệu của mình (vui lòng chỉ sử dụng truy vấn được tham số hóa), bạn có thể dễ bị tiết lộ mã nguồn thông qua cơ chế này. Tâm trí bạn, trong kịch bản này, tiết lộ mã nguồn là mối quan tâm cuối cùng của bạn.

Tôi chắc chắn có rất nhiều người khác, nhưng đây là một số cách phổ biến nhất mà tôi thấy loại tiết lộ này. Chỉ cần nhớ rằng bảo mật là một quá trình và có phạm vi rộng trong phạm vi của nó. Thường thì đó là sự tương tác của các mối quan tâm, hệ thống hoặc ứng dụng được coi là các thực thể riêng biệt gây ra các vấn đề.

+0

+1 để thực sự đề cập đến các cuộc tấn công thực sự cần xem xét. Mặc dù cần lưu ý rằng trên một bản phân phối Linux hiện đại có giá trị muối của nó, bạn sẽ không thể truy cập vào thư mục gốc web bằng các hàm io của tệp DMBS. AppArmor hoặc SELinux sẽ dừng bạn. Nó sẽ làm việc trên một cửa sổ mặc định hộp không có rắc rối. – rook

1

Nếu tệp * .php đang được Apache xử lý dưới dạng tệp PHP (tức là được hiển thị bình thường), thì không, chúng không thể truy cập nguồn, ít nhất là không truy cập vào máy chủ thông qua một số tập lệnh hoặc phương tiện khác (trong trường hợp thêm kịch bản lệnh vào modules/index_content.php sẽ không tạo ra sự khác biệt).

1

Điều đó không có ý nghĩa.

Nếu có ai có quyền truy cập vào nguồn index.php của bạn, anh ấy cũng có quyền truy cập vào tất cả các nguồn của tệp được bao gồm.

1

Không có cách nào để tệp .php được tải xuống thông qua http, giả định rằng cấu hình máy chủ của bạn không thay đổi (ví dụ: trình xử lý tệp PHP bị xóa). Nếu điều này xảy ra, thì có thể tệp .php có thể được tải xuống dưới dạng tệp văn bản thuần túy.

Bạn nên đặt tất cả các tệp lõi bên ngoài thư mục công khai (public_html, htdocs v.v.) và gọi chúng bằng đường dẫn của chúng.

+0

+1 để giữ mã lõi của bạn bên ngoài gốc tài liệu. Điều này thực sự có thể hạn chế tác động của các lỗ hổng khác. – Cheekysoft

+0

Có thể xảy ra nếu bạn có lỗ hổng truyền tải thư mục. – rook

1

Họ không thể tải xuống tệp php nếu bạn đã thiết lập PHP trên máy chủ web của mình.

Lưu ý: bảo vệ với htaccess các mô-đun thư mục và trong index.php bạn bao gồm tệp từ thư mục đó khi ai đó đang truy cập index.php, họ sẽ phải cung cấp mật khẩu và tên người dùng để truy cập tệp được bao gồm.

0

Rất có thể là không. Hai trường hợp ngoại lệ lớn mặc dù:

  • máy "Lost" (thông qua SSH, FTP, vv, ...)
  • sai lầm của con người: Nếu bạn có một kịch bản mà đọc file, hãy chắc chắn nó không thể được sử dụng để đọc các tập tin php của bạn.
Các vấn đề liên quan