Cài đặt Expose_php được sử dụng để đặt xem thông tin về phiên bản PHP của máy chủ có được hiển thị cho người dùng hay không. Nếu Exposure_php được bật, kẻ tấn công có thể thấy phiên bản PHP đang chạy trên máy chủ của ứng dụng. Nếu ứng dụng chạy trên phiên bản PHP có lỗ hổng, anh ta sẽ có thể khai thác từng lỗ hổng có trong máy chủ. Các nhà phát triển thường bật Exposure_php để cho phép các API tương tác với hệ thống mà không gặp bất kỳ sự cố tương thích nào. Kích hoạt Expose_php để hỗ trợ API là một ý tưởng ngu ngốc vì API có thể được sử dụng thông qua JSON, XML và nhiều ngôn ngữ khác. Những ngôn ngữ này phù hợp nhất với API vì chúng không có vấn đề về khả năng tương thích
PHP chứa một lỗ hổng có thể dẫn đến tiết lộ thông tin trái phép. Sự cố xảy ra khi kẻ tấn công từ xa thực hiện một số yêu cầu HTTP nhất định với các đối số được tạo sẵn, điều này sẽ tiết lộ phiên bản PHP và một thông tin nhạy cảm khác dẫn đến mất tính bảo mật
Không thể nói điều đó tốt hơn bản thân mình. Về cơ bản, nếu bạn đang chạy PHP, có thể ai đó sẽ phát hiện ra phiên bản PHP và các thông tin nhạy cảm khác. Còn được gọi là một kiểu tấn công “dấu vân tay”. Đó không phải là "mức độ đe dọa lúc nửa đêm" hay bất cứ điều gì tương tự, nhưng chắc chắn đáng để dành một chút thời gian để khóa nó lại. một lớp bảo vệ khác để tăng tính bảo mật cho [các] trang web của bạn
Làm thế nào nó hoạt động
Trên các máy chủ chạy PHP, hãy truy cập bất kỳ trang nào, xóa dấu gạch chéo ở cuối và nối thêm bất kỳ chuỗi truy vấn nào sau đây
?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
Nếu lỗ hổng xuất hiện, các yêu cầu được thực hiện với các chuỗi truy vấn này sẽ dẫn đến nhiều loại trứng Phục sinh và các khoản tín dụng PHP chi tiết []. Khi những quả trứng Phục sinh này hiển thị, điều đó có nghĩa là expose_php
đã được bật trên máy chủ. Và khi expose_php
được bật, các trang do PHP tạo sẽ được gửi với tiêu đề phản hồi X-Powered-By
cung cấp thông tin phiên bản/PHP, chẳng hạn như “X-Powered-By: PHP/5.4.7
”. Biết số phiên bản của phần mềm giúp kẻ xấu dễ dàng nghiên cứu và khai thác các lỗ hổng đã biết. Vì vậy, hãy dành một chút thời gian để “bịt lỗ rò rỉ” bằng cách vô hiệu hóa expose_php
Vô hiệu hóa expo_php qua php. ban đầu
Nếu bạn có quyền truy cập [và có thể chỉnh sửa] tệp
ServerTokens Prod
ServerSignature Off
0 của máy chủ, thì giải pháp được đề xuất là đặt ServerTokens Prod
ServerSignature Off
1 và hoàn thành việc đó. Ngoài việc ngăn chặn quyền truy cập vào thông tin tín dụng và trứng phục sinh PHP, việc vô hiệu hóa Expose_php còn có thêm lợi ích là ngăn PHP gửi thông tin phiên bản trong Tiêu đề HTTP X-Powered-By. Vì vậy, thay vì gửi phản hồi sau cho các trang do PHP tạo [e. g. , WordPress]chúng tôi gửi cái này
Lưu ý rằng ngoài việc PHP gửi thông tin của nó qua tiêu đề X-Powered-By
, Apache cũng đang gửi thông tin phiên bản của nó. Chúng ta không thể vô hiệu hóa các chỉ thị của Apache thông qua PHP, nhưng như đã thảo luận trong cuốn sách của tôi, thật đơn giản để thực hiện với các chỉ thị sau được đặt trong tệp cấu hình chính của Apache [httpd. conf]
ServerTokens Prod
ServerSignature Off
Điều này chỉ đơn giản là sử dụng để vô hiệu hóa số phiên bản. Vô hiệu hóa thông tin phiên bản trên các trang do máy chủ tạo, đây là phần thưởng bổ sung
Ngăn chặn truy cập thông qua. htaccess
Nếu bạn không có quyền truy cập vào
ServerTokens Prod
ServerSignature Off
0 [như trường hợp lưu trữ trên máy chủ dùng chung], chúng tôi có thể sử dụng một lát mỏng. htaccess để từ chối quyền truy cập vào các khoản tín dụng PHP và trứng phục sinhRewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]
Chỉ cần đặt mã đó vào thư mục gốc của trang web của bạn. htaccess và bạn đã sẵn sàng [không cần chỉnh sửa]. Làm thế nào nó hoạt động? . Ví dụ, mẫu biểu thức chính quy có thể trông phức tạp, nhưng nó thực sự sử dụng các biến thể trên cùng một mẫu
“______1_______5” khớp với bất kỳ chuỗi tám số và chữ cái nào từ “a” đến “f”
Đây là một so sánh để giúp hình dung mẫu
Sợi dây.
ServerTokens Prod
ServerSignature Off
6biểu thức chính quy.
ServerTokens Prod
ServerSignature Off
7Đã dịch. “dấu bằng thoát, chuỗi “PHP”, bất kỳ chuỗi 8, dấu gạch nối, bất kỳ chuỗi 4, gạch nối, bất kỳ chuỗi 4, gạch nối, v.v. ”
Dòng kết thúc bằng cờ “no-case”
ServerTokens Prod
ServerSignature Off
8, làm cho mẫu khớp mẫu không phân biệt chữ hoa chữ thường và tăng hiệu quả của nó. Sau đó, trong dòng thứ hai, ServerTokens Prod
ServerSignature Off
9 chỉ đơn giản là từ chối quyền truy cập vào bất kỳ yêu cầu phù hợp nào. Cờ RewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]
0 kết thúc hướng dẫn máy chủ gửi trạng thái 403 "Bị cấm" cùng với yêu cầuTất cả cùng nhau sau đó
Kết hợp hai kỹ thuật Apache của chúng tôi, chúng tôi nhận được tương đương với việc vô hiệu hóa expose_php
. Một lần nữa, chỉnh sửa
ServerTokens Prod
ServerSignature Off
0 là cách tốt nhất, nhưng khi điều đó là không thể, hai đoạn mã này sẽ đưa bạn đến đó1] Thêm vào tệp cấu hình chính của Apache [httpd. conf]
# m0n.co/9
ServerTokens Prod
ServerSignature Off
1] Thêm vào Apache httpd. conf hoặc. htaccess
# m0n.co/9
RewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]
Bằng cách kết hợp hai phương pháp của chúng tôi, chúng tôi từ chối quyền truy cập vào thông tin/tín dụng PHP và vô hiệu hóa việc phát sóng phiên bản Apache. Điều đó hiệu quả, nhưng không may là không có cách nào để ngăn chặn expose_php
gửi các tiêu đề X-Powered-By
của nó bằng cách sử dụng. htaccess [afaik]
Cũng lưu ý rằng
RewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]
5 của Apache phải được bật trên máy chủ để tính năng này hoạt động. Nếu không, hãy xóa hai dòng thứ hai [chỉ thị viết lại] và chỉ sử dụng hai dòng đầu tiên. Chúng là một phần của lõi Apache và sẽ hoạt động để vô hiệu hóa thông tin ApacheTrứng phục sinh PHP
Khi một thứ gì đó được cố ý giấu trong một cuốn sách, ứng dụng hoặc bất cứ thứ gì, nó được gọi là “trứng phục sinh”. PHP có ít nhất bốn trong số chúng
Tín dụng TypeImageURIPHPRewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]
6RewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]
7Nhấp vào đây để xem lớn hơn Logo PHP
RewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]
6RewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]
9Biểu trưng ZendRewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]
6# m0n.co/9
ServerTokens Prod
ServerSignature Off
1Biểu trưng PHPRewriteCond %{QUERY_STRING} PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteRule .* - [F]
6# m0n.co/9
ServerTokens Prod
ServerSignature Off
3Vậy thỏa thuận là gì?
Điều này là tốt và thú vị, nhưng nó có đáng không?
Hét lên
Cảm ơn Warner Nanninga đã chú ý đến điều này và giúp tôi có thêm thông tin. Chúc mừng