Đầu tiên, lên phía trước, tôi không biết kẻ tấn công được cho là đang cố gắng thực hiện điều gì. Có lẽ có một đoạn mã PHP hoặc phiên bản PHP ngoài kia dễ bị tấn công bởi một phiên tấn công ID lạ, tôi không biết. Bạn có thể không có gì phải lo lắng, mặc dù.
Máy chủ của bạn hoạt động chính xác như mong đợi. 200 là mã dự kiến trong tình huống cụ thể đó do cách Apache diễn giải URL được truyền cho nó.
Đầu tiên, http://allrequestsallowed.com
được xử lý như tiêu đề 'Máy chủ:' thông thường hơn ( lưu ý rằng tôi không nghĩ rằng điều này được chỉ định trong RFC và các máy chủ khác có thể không diễn giải theo cách này tôi đã sai, điều này được chỉ định trong RFC 2616 trong phần 5.1. 2, mặc dù các máy khách dường như hiếm khi sử dụng biểu mẫu đó. Xin lỗi, tôi cần phải sửa lỗi triển khai máy chủ HTTP mà tôi đã viết một lúc trước ...).
Bây giờ, có lẽ bạn không có một trang web có tên 'allrequestsallowed.com'. Vậy điều gì xảy ra khi Apache có một Host:
tiêu đề (hoặc tương đương) cho tên máy chủ mà nó không nhận ra? Nó chọn máy chủ ảo đầu tiên làm mặc định. Đây là hành vi được xác định rõ ràng và được ghi lại cho Apache. Vì vậy, bất kể máy chủ ảo đầu tiên của bạn là gì (hoặc chỉ là cấu hình máy chủ chính nếu không có bất kỳ vhost nào) tiếp quản, bất kể nó được đặt tên là gì.
Bây giờ, phần còn lại của URL được cung cấp bao gồm hai phần - đường dẫn /
và tham số GET ( ?PHPSESSID...
bit).
Bây giờ, đường dẫn /
sẽ có mặt trên hầu hết các máy chủ web ngoài kia. Trong hầu hết các trường hợp, nó ánh xạ tới một cái gì đó giống như index.html
hoặc có thể là một index.php
tập lệnh, mặc dù bạn có thể ghi đè bất kỳ thứ nào trong số này.
Nếu nó ánh xạ tới một tệp HTML tĩnh, hoàn toàn không có gì bất thường xảy ra - nội dung của tệp được trả về và đó là tham số đơn giản bị bỏ qua. (Giả sử bạn không có một số chỉ thị cấu hình nâng cao nhất định và bạn gần như chắc chắn không.)
Mặt khác, nếu đó là một tập lệnh thuộc loại nào đó, PHPSESSID
biến đó sẽ được chuyển sang tập lệnh. Nếu tập lệnh thực sự sử dụng biến đó (trong trường hợp cụ thể này, chỉ có các tập lệnh PHP sử dụng xử lý phiên có sẵn của PHP), hành vi của nó sẽ phụ thuộc vào nội dung.
Tuy nhiên, trong tất cả khả năng, ngay cả khi bạn /
tình cờ ánh xạ tới tập lệnh PHP bằng các phiên, sẽ không có gì đáng chú ý xảy ra. ID phiên có thể sẽ không tồn tại dù sao và sẽ bị bỏ qua hoặc tập lệnh sẽ hiển thị lỗi.
Trong trường hợp không chắc là ID phiên tồn tại, tốt, kẻ tấn công có thể hình dung một cách có thể chiếm đoạt phiên của người khác. Điều đó sẽ rất tệ, nhưng bản thân nó không thực sự là một lỗ hổng bảo mật - lỗ hổng sẽ là bất cứ nơi nào kẻ tấn công có được thông tin ID phiên từ (đánh hơi một mạng không dây là một ứng cử viên tốt nếu bạn không sử dụng HTTPS). Họ thực sự sẽ không thể làm bất cứ điều gì mà người dùng có phiên ban đầu không thể làm được.
Chỉnh sửa: Ngoài ra, '% 5C' bên trong ánh xạ SESSIONID thành ký tự dấu gạch chéo ngược. Đây dường như là một thử nghiệm cho các cuộc tấn công ngang qua thư mục trên các máy chủ windows.
curl -v http://allrequestsallowed.com/?PHPSESSID=5gh6ncjh00043YVMWTW_B%5CFAP -x www.example.com:80
. Cấu hình mặc định dường như trả về trang "Chào mừng bạn đến nginx" không có nội dung có ý nghĩa trên hệ thống ubfox của chúng tôi. Vì vậy, đây là 200 phản hồi, nhưng đó là một trang tất cả đơn giản - chúng tôi không thực sự ủy quyền yêu cầu ở nơi khác hoặc bất cứ điều gì tương tự.