Phát hiện mối nguy hiểm tiềm ẩn trong nghiên cứu lỗ hổng SSRF của WordPress chưa được vá

quản trị viên

Giới thiệu – Khám phá điều chưa biết: Bên dưới bề mặt của WordPress SSRF chưa được vá

Trong bối cảnh an ninh mạng luôn thay đổi, WordPress vẫn là mục tiêu phổ biến do được sử dụng rộng rãi và hệ sinh thái plugin mở rộng. Mặc dù lõi WordPress nói chung là an toàn, nhưng các lỗ hổng thường phát sinh từ các plugin và chủ đề của bên thứ ba. Một trong những lỗ hổng như vậy đã thu hút sự chú ý là lỗ hổng Server-Side Request Forgery (SSRF). Trong bài đăng trên blog này, chúng tôi sẽ đi sâu vào sự phức tạp của lỗ hổng WordPress SSRF chưa được vá, các tác động của nó và cách WP-Firewall có thể giúp bảo vệ trang web WordPress của bạn khỏi các mối đe dọa như vậy.

## Nguyên nhân gốc rễ: wp_http_validate_url()

Vào tháng 9 năm 2022, SonarSource đã công bố một khuyến cáo về WordPress Core Unauthenticated Blind SSRF chưa được vá. Nguyên nhân gốc rễ của lỗ hổng này nằm ở hàm `wp_http_validate_url()`, dễ bị tấn công DNS rebinding. Mặc dù bản thân WordPress core không bị ảnh hưởng trực tiếp, nhưng các plugin sử dụng hàm dễ bị tấn công này sẽ gặp rủi ro.

Hiểu wp_http_validate_url()

Hàm `wp_http_validate_url()` được thiết kế để xác thực URL nhằm ngăn chặn các cuộc tấn công chuyển hướng và làm giả yêu cầu. Tuy nhiên, nó không bảo vệ được trước các cuộc tấn công DNS rebinding, khiến nó trở thành một vectơ tiềm ẩn cho các lỗ hổng SSRF. Hàm này thường được sử dụng kết hợp với `wp_remote_get()` và giải pháp thay thế an toàn hơn của nó, `wp_safe_remote_get()`.

Phần rõ ràng: wp_remote_get() và wp_safe_remote_get()

Hàm `wp_remote_get()` thường được sử dụng để yêu cầu các máy chủ từ xa thông qua máy chủ. Tuy nhiên, ai cũng biết rằng việc truyền URL do người dùng nhập vào hàm này có thể dẫn đến lỗ hổng SSRF. Để giảm thiểu rủi ro này, WordPress đã giới thiệu `wp_safe_remote_get()`, bao gồm các xác thực bổ sung để ngăn chặn các cuộc tấn công SSRF.

wp_safe_remote_get() an toàn đến mức nào?

Hàm `wp_safe_remote_get()` được thiết kế để trở thành một giải pháp thay thế an toàn hơn cho `wp_remote_get()`. Theo tài liệu chính thức của WordPress:

"Chức năng này lý tưởng khi yêu cầu HTTP được gửi đến một URL tùy ý. URL được xác thực để tránh chuyển hướng và tấn công làm giả yêu cầu."

Tuy nhiên, tính an toàn của hàm này bị hạn chế bởi hàm `wp_http_validate_url()` cơ bản, như đã đề cập trước đó, dễ bị tấn công liên kết lại DNS.

Lặn vào chức năng

Mã nguồn cho `wp_safe_remote_get()` như sau:

php
hàm wp_safe_remote_get( $url, $args = mảng() ) {
$args['reject_unsafe_urls'] = đúng;
$http = _wp_http_get_object();
trả về $http->get( $url, $args );
}

Ở dòng 2, tham số `$args['reject_unsafe_urls']` được đặt thành `true`, cuối cùng sẽ chuyển đầu vào của người dùng đến hàm `wp_http_validate_url()` trước khi yêu cầu URL. Vì `wp_http_validate_url()` dễ bị tấn công liên kết lại DNS, nên bất kỳ hàm nào chỉ dựa vào nó để xác thực cũng dễ bị tấn công.

Những hạn chế của lỗ hổng

Mặc dù đây không phải là SSRF hoàn chỉnh nhưng hàm `wp_http_validate_url()` vẫn có một số hạn chế:

– Giao thức phải là `http://` hoặc `https://`
– Cổng chỉ có thể là một trong 80, 443 hoặc 8080

Bất chấp những hạn chế này, việc yêu cầu các máy chủ nội bộ trong những ranh giới này là có thể thông qua SSRF này.

Mã Plugin dễ bị tấn công

Sau đây là một số ví dụ về mã plugin dễ bị tấn công:

SSRF không mù

php
<?php
yêu cầu_một_lần('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
Phản hồi 1TP4 = wp_remote_retrieve_body( 1TP4 Phản hồi );
phản hồi 1TP4;
?>

Nếu plugin lấy dữ liệu đầu vào của người dùng, chuyển đến hàm `wp_safe_remote_get()` rồi hiển thị phản hồi, thì plugin này dễ bị tấn công bởi SSRF không giới hạn ẩn.

SSRF mù

php
<?php
yêu cầu_một_lần('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
Mã phản hồi 1TP4 = wp_remote_retrieve_response_code( $response );
nếu ($response_code == 200) {
echo "Đang hoạt động";
} khác {
echo "Đã tắt hoặc không tìm thấy!";
}
?>

Nếu plugin chuyển dữ liệu đầu vào của người dùng tới `wp_safe_remote_get()` nhưng chỉ trả về mã phản hồi/trạng thái, plugin này dễ bị tấn công SSRF mù, hạn chế tác động đến việc quét cổng 80, 443 hoặc 8080 của bất kỳ máy chủ nội bộ nào.

Biểu tình tấn công

Để chứng minh lỗ hổng này, chúng tôi đã thực hiện một cuộc tấn công vào máy chủ Apache chạy WordPress trên cổng 80 và máy chủ PHP chạy trên localhost:8080 với một số thông tin bí mật. Mã dễ bị tấn công đã được chèn vào thư mục plugin `/wp-content/plugins/vulnerable-plugin/index.php`.

Kho lưu trữ GitHub

Bạn có thể tìm thấy một phiên bản Docker dễ bị tấn công và tập lệnh khai thác để sử dụng lỗ hổng này trong Kho lưu trữ GitHub. Tín dụng: Ananda Dhakal

## Các chức năng dễ bị tổn thương hơn

Lỗ hổng bảo mật tương tự cũng xảy ra với các hàm khác dựa vào `wp_http_validate_url()` để xác thực:

– `wp_safe_remote_request()`
– `wp_safe_remote_post()`
– `wp_safe_remote_head()`

Ngoài ra, một số hàm hoạt động như trình bao bọc cho `wp_safe_remote_get()` và cũng dễ bị tấn công ở một mức độ nào đó:

– `WP_REST_URL_Details_Controller::get_remote_url()`
– `tải xuống_url()`
– `wp_remote_fopen()`
– `WP_oEmbed::discover()`

Phần kết luận

Rõ ràng là các chức năng được coi là an toàn và được thiết kế để bảo vệ chống lại các lỗ hổng SSRF không hoàn toàn an toàn. Việc dựa vào `wp_http_validate_url()`, vốn dễ bị tấn công DNS rebinding, khiến các trang web WordPress có nguy cơ bị tấn công SSRF. Chúng tôi kêu gọi nhóm WordPress Core giải quyết vấn đề này và phát hành bản vá để tăng cường bảo mật cho nền tảng.

WP-Firewall có thể giúp ích như thế nào

Tại WP-Firewall, chúng tôi hiểu được tầm quan trọng của việc bảo vệ trang web WordPress của bạn khỏi các mối đe dọa mới nổi. Các giải pháp bảo mật toàn diện của chúng tôi được thiết kế để cung cấp khả năng bảo vệ mạnh mẽ chống lại nhiều lỗ hổng, bao gồm các cuộc tấn công SSRF. Sau đây là cách WP-Firewall có thể giúp bảo vệ trang web WordPress của bạn:

Phát hiện mối đe dọa thời gian thực

WP-Firewall cung cấp khả năng phát hiện mối đe dọa theo thời gian thực, theo dõi trang web của bạn để tìm các hoạt động đáng ngờ và lỗ hổng tiềm ẩn. Các thuật toán tiên tiến của chúng tôi có thể xác định và chặn các nỗ lực SSRF, đảm bảo trang web của bạn luôn an toàn.

Kiểm tra an ninh thường xuyên

Nhóm chuyên gia bảo mật của chúng tôi tiến hành kiểm tra thường xuyên trang web WordPress và các plugin của bạn để xác định và giải quyết các lỗ hổng. Bằng cách đi trước các mối đe dọa tiềm ẩn, chúng tôi giúp bạn duy trì một môi trường an toàn cho người dùng của mình.

Quản lý bản vá tự động

Việc cập nhật lõi WordPress, chủ đề và plugin của bạn là rất quan trọng đối với bảo mật. WP-Firewall cung cấp quản lý bản vá tự động, đảm bảo rằng tất cả các thành phần của trang web của bạn được cập nhật với các bản vá bảo mật mới nhất.

Quy tắc tường lửa tùy chỉnh

WP-Firewall cho phép bạn tạo các quy tắc tường lửa tùy chỉnh phù hợp với nhu cầu cụ thể của bạn. Bằng cách triển khai các quy tắc chặn các yêu cầu độc hại và các nỗ lực truy cập trái phép, bạn có thể tăng cường bảo mật cho trang web của mình.

Báo cáo toàn diện

Báo cáo bảo mật chi tiết của chúng tôi cung cấp thông tin chi tiết về các mối đe dọa được phát hiện và các hành động được thực hiện để bảo vệ trang web của bạn. Với WP-Firewall, bạn có thể luôn cập nhật về trạng thái bảo mật của trang web WordPress của mình.

Bảo vệ chống lại SSRF với WP-Firewall

Để giải quyết cụ thể các lỗ hổng SSRF, WP-Firewall cung cấp các tính năng sau:

Xác thực đầu vào

WP-Firewall thực hiện xác thực đầu vào nghiêm ngặt để đảm bảo rằng các URL do người dùng cung cấp là an toàn và không có mục đích xấu. Bằng cách xác thực đầu vào ở nhiều cấp độ, chúng tôi ngăn chặn các cuộc tấn công SSRF khai thác các chức năng dễ bị tấn công.

Bảo vệ liên kết lại DNS

Tường lửa của chúng tôi bao gồm các cơ chế bảo vệ DNS rebinding phát hiện và chặn các nỗ lực khai thác lỗ hổng DNS rebinding. Điều này đảm bảo rằng trang web của bạn vẫn an toàn ngay cả khi các chức năng cơ bản như `wp_http_validate_url()` dễ bị tấn công.

Yêu cầu API an toàn

WP-Firewall bảo mật các yêu cầu API bằng cách thực thi các biện pháp xác thực và xác thực nghiêm ngặt. Điều này ngăn chặn truy cập trái phép và giảm thiểu rủi ro tấn công SSRF nhắm vào các điểm cuối API.

Giám sát liên tục

Khả năng giám sát liên tục của chúng tôi sẽ theo dõi chặt chẽ lưu lượng truy cập và hoạt động của trang web của bạn. Bất kỳ hành vi đáng ngờ nào cũng sẽ được đánh dấu và xử lý kịp thời, giảm thiểu nguy cơ tấn công SSRF thành công.

Kêu gọi hành động

Trong khi lỗ hổng SSRF chưa vá của WordPress gây ra rủi ro đáng kể, các biện pháp chủ động có thể giảm thiểu tác động của nó. Bằng cách tận dụng các giải pháp bảo mật toàn diện của WP-Firewall, bạn có thể bảo vệ trang web WordPress của mình khỏi các cuộc tấn công SSRF và các mối đe dọa mới nổi khác. Luôn đi trước các lỗ hổng tiềm ẩn và đảm bảo môi trường an toàn cho người dùng của bạn với WP-Firewall.

Đừng đợi đến khi có vi phạm bảo mật mới hành động. Hãy bảo vệ trang web WordPress của bạn ngay hôm nay với WP-Firewall. Bắt đầu dùng thử miễn phí và trải nghiệm sự an tâm khi được bảo vệ mạnh mẽ theo thời gian thực.

Để biết thêm thông tin về cách WP-Firewall có thể giúp bảo mật trang web WordPress của bạn, hãy truy cập trang web hoặc liên hệ với nhóm hỗ trợ của chúng tôi.

Hãy luôn an toàn, bảo mật và giữ cho trang web WordPress của bạn được bảo vệ bằng WP-Firewall.

Lời khuyên bảo mật hàng tuần

Nhận thông tin bảo mật WordPress mới nhất được gửi đến hộp thư của bạn. Đăng ký nhận bản tin của chúng tôi và cập nhật những mối đe dọa mới nhất cùng các biện pháp tốt nhất để bảo vệ trang WordPress của bạn.

Thông tin mới nhất về tư vấn bảo mật

Xem tất cả các khuyến cáo bảo mật mới nhất và cập nhật thông tin về các lỗ hổng nghiêm trọng ảnh hưởng đến plugin và chủ đề WordPress.

– Ngày 19 tháng 5 năm 2024: Báo cáo lỗ hổng WordPress (6 tháng 5 năm 2024 đến 12 tháng 5 năm 2024)
– Ngày 15 tháng 5 năm 2024: Các lỗ hổng ưu tiên cao đã được vá trong Plugin Uncode Core


wordpress security update banner

Nhận WP Security Weekly miễn phí 👋
Đăng ký ngay
!!

Đăng ký để nhận Bản cập nhật bảo mật WordPress trong hộp thư đến của bạn hàng tuần.

Chúng tôi không spam! Đọc của chúng tôi chính sách bảo mật để biết thêm thông tin.