Một trang web Drupal bị tấn công có thể rất đau đớn. Bây giờ, có thể có nhiều lý do cho vụ hack. Tuy nhiên, những thứ phổ biến nhất là phần mềm độc hại, chèn mã, spam, v.v. Nếu bạn đang tìm kiếm các kỹ thuật loại bỏ phần mềm độc hại của Drupal, bạn đã đến đúng chỗ. Hướng dẫn này chứa các hướng dẫn từng bước để làm sạch các tệp Drupal và cơ sở dữ liệu của một trang web bị tấn công. Cũng được đề cập là phát hiện phần mềm độc hại và cửa sau. Bài viết này được đóng khung theo cách để người dùng bình thường có thể dễ dàng áp dụng.
Drupal là một trong những CMS lâu đời và an toàn nhất trong số những CMS phổ biến được sử dụng ngày nay. Nó phục vụ cho hơn một triệu trang web. Tuy nhiên, nhiều lỗ hổng đã được phát hiện trong Drupal năm nay. Giống như một loạt các lỗ hổng RCE được đặt tên là Drupalgeddon. Điều này đã dẫn đến nhiều bản cài đặt Drupal bị tấn công trong vòng vài tháng, hầu hết trong số đó được sử dụng để khai thác tiền điện tử. Tuy nhiên, nhóm bảo mật của Drupal đã đủ nhanh chóng để phát hành các bản cập nhật vá lỗi cần thiết.
Drupal bị tấn công:Kết quả có thể xảy ra khi bị tấn công bởi Drupal
- Các trang lừa đảo được thiết kế để lấy cắp thông tin nhạy cảm sẽ xuất hiện trên trang web.
- Khách hàng phàn nàn về các chuyển hướng độc hại.
- Thông tin nhạy cảm như thông tin đăng nhập, chi tiết ngân hàng, v.v. được rao bán trên darknet.
- Nội dung vô nghĩa xuất hiện trên trang web do Hack từ khóa Nhật Bản hoặc Hack dược phẩm, v.v.
- Thông báo "Tài khoản của bạn đã bị tạm ngưng!" xuất hiện khi đăng nhập.
- Trang web Drupal bị các công cụ tìm kiếm đưa vào danh sách đen.
- Trang web của Drupal trở nên rất chậm và hiển thị thông báo lỗi.
- Nhiều quảng cáo và cửa sổ bật lên độc hại xuất hiện trên trang web.
- Người dùng từ chối truy cập trang web do thiếu tin cậy.
- Lưu lượng người dùng và doanh thu giảm.
- Quản trị viên mới, giả mạo xuất hiện trong cơ sở dữ liệu đăng nhập.
Drupal Hack:Ví dụ về Drupal Hack
Khi các trang web Drupal bị tấn công, người dùng bị ảnh hưởng có thể được tìm thấy nhờ sự trợ giúp từ các diễn đàn cộng đồng. Một ví dụ về Drupal bị tấn công như vậy được đưa ra trong hình ảnh bên dưới.
Các nguyên nhân có thể khiến Drupal bị tấn công
Drupal bị tấn công:Drupal SQL Injection
Các lỗ hổng Drupal SQLi thường có thể được tìm thấy trong các mô-đun được mã hóa kém. Tuy nhiên, một SQLi trong lõi là khá hiếm và nguy hiểm. Một lỗ hổng nguy hiểm như vậy đã từng được tìm thấy trong lõi Drupal và được gọi là ‘ Drupalgeddon ‘, Mặc dù Drupal đã sử dụng PDO (Đối tượng dữ liệu PHP) để phân tách giữa một yêu cầu SQL tĩnh và các giá trị động.
$query = $db->prepare("SELECT * FROM users WHERE user = :user AND password = :password");
$account = $query->execute(array(':user' => $_POST['user'], ':password' => $_POST['password']));
Mọi thứ có vẻ ổn vì đầu vào được làm sạch đúng cách trước khi đến cơ sở dữ liệu. Tuy nhiên, xương của sự tranh chấp nằm trong các mảng trình giữ chỗ của Drupal. Những điều này nhằm mục đích mang lại sự linh hoạt cho các nhà phát triển mô-đun, vì những cấu trúc truy vấn cơ sở dữ liệu cho phép này được thay đổi linh hoạt.
db_query("SELECT * FROM {node} WHERE nid IN (:nids)", array(':nids' => array(13, 42, 144)));
Sau đó, :nids
trình giữ chỗ sẽ khớp với số lượng đối số được cung cấp. Như thế này:
SELECT * FROM {node} WHERE nid IN (:nids_0, :nids_1, :nids_2)
Tính năng này kết hợp với PHP được lập chỉ mục mảng có thể được sử dụng để chuyển các tham số như (GET, POST và cookie). Các mảng trình giữ chỗ Drupal theo mặc định sẽ giả sử là $_POST['user']
tham số là một mảng. Sau đó, nó sẽ sử dụng các chỉ mục chuỗi mảng thô để tạo tên trình giữ chỗ mới. Do đó, kẻ tấn công có thể cung cấp các giá trị độc hại như Tham số: user[0 #], Value:foo.
Truy vấn kết quả sẽ là:
SELECT * FROM {users} WHERE user = :user_0 #
Qua đó kẻ tấn công bỏ qua xác thực đăng nhập thành công. Hơn nữa, kẻ tấn công thậm chí có thể tạo người dùng mới bằng cách chỉnh sửa tham số là người dùng [0; CHÈN VÀO người dùng GIÁ TRỊ ‘MalUser’, ‘Passw0rd!’, ‘Administrators’; #] . Đó là một lỗ hổng nghiêm trọng vì nó ảnh hưởng đến cốt lõi của Drupal. Điều đáng báo động hơn là một mô-đun Metasploit cũng được phát hành để khai thác điều này!
Drupal bị tấn công:Bỏ qua truy cập Drupal
Việc bỏ qua truy cập Drupal có thể dẫn đến việc người dùng truy cập vào các tài nguyên không dành cho họ. Lỗ hổng bảo mật mới nhất như vậy được đặt tên là SA-CONTRIB-2018-081. Nguyên nhân của điều này là do một mô-đun Drupal có tên JSON:API mô-đun 8.x-1.x dành cho Drupal 8.x. Nó chủ yếu được sử dụng cho:
- Truy cập các thực thể cấu hình và nội dung Drupal.
- Thao tác các thực thể cấu hình và nội dung Drupal.
Trong trường hợp này, nó không kiểm tra cẩn thận các quyền trong khi phản hồi các yêu cầu nhất định. Điều này có thể cho phép những kẻ độc hại không có đủ quyền lấy thông tin nhạy cảm. Do đó, chỉ có GET các yêu cầu có thể được sử dụng cho kiểu tấn công này.
Drupal Hacked:Drupal Cross-Site Scripting
Các lỗ hổng như XSS và SQLi khá phổ biến trong các mô-đun Drupal. Phim mới nhất trong loạt phim này là SA-CONTRIB-2018-080. Dấu điện tử mô-đun được phát hiện là dễ bị tấn công bởi XSS. Mô-đun E-Sign về cơ bản cho phép tích hợp Signature Pad vào Drupal. Tại thời điểm viết bài này, có khoảng 875 trang web đang sử dụng mô-đun này. Lỗ hổng bảo mật phát sinh do thiếu quá trình khử trùng đầu vào khi chữ ký được hiển thị. Qua đó, kẻ tấn công có thể kiểm tra XSS bằng mã . Sau đó, trường chữ ký dễ bị tấn công sẽ đưa ra thông báo “Đã tìm thấy XSS!”. Sau đó, lỗ hổng này có thể được kẻ tấn công sử dụng để:
- Đánh cắp cookie của người dùng.
- Chuyển hướng người dùng.
- Tải xuống phần mềm độc hại trên thiết bị của người dùng cuối khi truy cập trang web Drupal.
Drupal bị tấn công:Drupal Remote Code Execution
Bảo mật Drupal đã bị ám ảnh bởi một loạt các lỗi Drupalgeddon. Drupalgeddon 3 là phiên bản mới nhất được tìm thấy trong năm nay. Điều này cho phép người dùng chưa được xác thực chạy mã trên các trang web Drupal. Mặc dù Drupalgeddon 2 cũng cho phép RCE . Tuy nhiên, để khai thác điều này, kẻ tấn công cần khả năng xóa một nút. URL hoàn chỉnh trông giống như sau:
POST /?q=node/99/delete&destination=node?q[%2523][]=passthru%26q[%2523type]=markup%26q[%2523markup]=whoami HTTP/1.1 [...] form_id=node_delete_confirm&_triggering_element_name=form_id&form_token=[CSRF-TOKEN]
Tại đây, với lý do xóa một nút, kẻ tấn công đã tiêm whoami yêu cầu. Dòng mã thứ hai là để kiểm tra mã thông báo CSRF. Về cơ bản, mã thông báo CSRF sẽ kiểm tra xem yêu cầu có được tạo trên cùng một máy chủ hay không. Sau đó, kẻ tấn công truy xuất form_build_id từ phản hồi như được thấy trong đoạn mã dưới đây:
POST /drupal/?q=file/ajax/actions/cancel/%23options/path/[FORM_BUILD_ID] HTTP/1.1 [...] form_build_id=[FORM_BUILD_ID]
Điều này cuối cùng đã kích hoạt việc khai thác và đầu ra của Whoami lệnh được hiển thị. Do đó, kẻ tấn công có thể thực hiện tất cả các loại lệnh để thao túng máy chủ. Điều làm cho lỗi RCE này trở nên nghiêm trọng hơn là phần khai thác cho lỗi này đã được phát hành!
Dọn dẹp trang web Drupal bị tấn công:Các bước để làm sạch phần mềm độc hại Drupal
Phát hiện nhiễm trùng
Sử dụng Google Diagnostics
Khi trang web Drupal của bạn bị tấn công, các công cụ tìm kiếm như Google thường đưa nó vào danh sách đen. Do đó, các công cụ chẩn đoán của Google có thể được sử dụng để xác định loại và nguyên nhân lây nhiễm. Báo cáo minh bạch của Google rất hữu ích trong những trường hợp như vậy. Để kiểm tra điều đó:
- Truy cập trang web Trạng thái Trang web Duyệt web An toàn từ liên kết sau.
- Trên trang này, hãy tìm tùy chọn 'Kiểm tra Trạng thái Trang web'.
- Cuối cùng, nhập URL trang web của bạn bên dưới URL đó và nhấp vào nút "Tìm kiếm".
- Điều này sẽ cung cấp thông tin liên quan đến chuyển hướng spam, v.v. trong trường hợp trang web của bạn bị nhiễm. Xác định nguyên nhân gây ra nhiễm trùng Drupal và tìm cách loại bỏ nó.
Quét trang web của bạn
Để phát hiện các trang bị nhiễm, hãy quét trang web của bạn. Có rất nhiều tùy chọn miễn phí có sẵn như VirusTotal. Hoặc, bạn có thể nén toàn bộ tệp thành tệp .zip và tải lên để quét. Tuy nhiên, các giải pháp bảo mật miễn phí có thể không mang lại cho bạn kết quả mong muốn, do đó, bạn nên liên hệ với các chuyên gia để xóa phần mềm độc hại .
Kiểm tra các tệp đã sửa đổi
Thông thường, các backdoor lây nhiễm trang web Drupal của bạn có thể sửa đổi các tệp lõi của Drupal. Việc sửa đổi tệp của trang web Drupal có thể được kiểm tra theo các bước sau:
- Kết nối với trang web Drupal của bạn qua SSH.
- Tạo một thư mục mới bằng lệnh này:mkdir drupal-y.x. Thay thế 'y' bằng chuỗi Drupal của bạn, tức là 7,8,9. và thay thế ‘x’ bằng bản phát hành Drupal của bạn, tức là 4.7.1, 2.1.3, v.v.
- Điều hướng đến thư mục đó bằng lệnh:
cd drupal-y.x
- Tải xuống bản sao mới của phiên bản Drupal của bạn bằng lệnh:
wget https://github.com/drupal/core/archive/y.x.tar.gz
- Bây giờ, giải nén tệp tar.gz bằng lệnh:
tar -zxvf core-y.x.tar.gz
- Cuối cùng so sánh sự khác biệt giữa các tệp lõi bằng lệnh:
diff -r core-y.x ./public_html
Ngoài ra, điều này cũng có thể được thực hiện bằng cách đăng nhập vào trang web thông qua SSH và chạy lệnh sau:
find ./ -type f -mtime -20
Lệnh này sẽ liệt kê tất cả các tệp được sửa đổi trong 20 ngày qua. Kiểm tra ngày sửa đổi của tệp và nếu có bất kỳ điều gì đáng ngờ, hãy quét tệp đó để tìm phần mềm độc hại.
Kiểm tra nhật ký người dùng
Nhật ký người dùng có thể giúp bạn xác định bất kỳ tin tặc nào đăng nhập đáng ngờ vào trang web của bạn. Để làm như vậy:
- Đăng nhập vào trang Quản trị trên trang Drupal của bạn.
- Từ Menu, nhấp vào tùy chọn 'Mọi người'
- Xem lại những người dùng có mặt trong danh sách này và cũng có thể xem 'Thời gian truy cập cuối cùng' của mọi người dùng. Nếu bạn tìm thấy bất kỳ thông tin đăng nhập đáng ngờ nào, hãy tiếp tục tìm lỗ hổng trong trang web của bạn.
Làm sạch các tệp bị nhiễm và xóa mã bị xáo trộn
Sau khi các trang bị nhiễm đã được xác định, sự lây nhiễm có thể là một phần (một số mã trong tệp lõi) hoặc toàn bộ tệp. Nếu tệp chứa các ký tự vô nghĩa, có thể là do phần lớn thời gian, những kẻ tấn công có xu hướng làm xáo trộn mã ở một định dạng mà con người không thể đọc được. Định dạng Base64 rất phổ biến trong số những kẻ tấn công. Để xóa mã như vậy:
- Đăng nhập vào trang web của bạn qua SSH.
- Sau đó, kiểm tra mã base64 bằng lệnh:
find . -name "*.php" -exec grep "base64"'{}'; -print &> hiddencode.txt.
Mã này sẽ quét để tìm mã được mã hóa base64 và lưu nó bên trong hiddencode.txt. - Tải văn bản từ hiddencode.txt lên các dịch vụ trực tuyến như dịch vụ trong liên kết này để phân tích thêm.
- Nhấp vào tuỳ chọn 'Giải mã' trên trang web này. Điều này sẽ hiển thị mã gốc.
- Các lỗi khác như FOPO cũng có thể được giải mã bằng các dịch vụ trực tuyến.
- Trong trường hợp sự lây nhiễm nằm trong toàn bộ tệp không phải là một phần của gói lõi. Xóa tệp.
- Trong trường hợp bị nhiễm một phần trong tệp lõi, nếu bạn có thể xác định được mã độc hại, hãy xóa nó. Nếu không, hãy bình luận và nhận trợ giúp
Tắt Drupal Backdoor
Các cửa hậu Drupal có thể được tìm thấy ẩn trong các thư mục như:/ modules, / themes, / sites / all / modules và / sites / all / themes. Việc phát hiện chúng không dễ dàng vì mã có thể bị xáo trộn. Để tìm mã như vậy, hãy làm theo các bước được đề cập ở trên trong “Làm sạch tệp bị nhiễm và loại bỏ mã bị xáo trộn”. Ngoài ra, các cửa hậu này sử dụng các hàm PHP nhất định.
Để tắt các chức năng đó, hãy làm theo các bước sau:
- Đăng nhập vào trang web của bạn và mở trình quản lý tệp.
- Duyệt và mở tệp php.ini.
- Thêm mã sau vào tệp đó:
disable_functions = “show_source, system, shell_exec, passthru, exec, popen, proc_open, allow_url_fopen, eval”
Cơ sở dữ liệu Drupal sạch
Cơ sở dữ liệu Drupal thường bị phần mềm độc hại nhắm mục tiêu. Để làm sạch cơ sở dữ liệu của trang web Drupal bị nhiễm của bạn, hãy làm theo các bước sau:
- Đăng nhập vào trang web Drupal của bạn qua Bảng điều khiển dành cho quản trị viên .
- Điều hướng đến Truy cập dữ liệu> Cơ sở dữ liệu Drupal
- Tại đây, trong thanh tìm kiếm, hãy tìm kiếm các liên kết hoặc nội dung đáng ngờ hiển thị trong quá trình quét phần mềm độc hại.
- Mở bảng có chứa các liên kết và nội dung spam đó. Sau đó, hãy xóa nội dung theo cách thủ công.
- Khi hoàn tất, hãy xác minh xem trang web có còn hoạt động hay không và xóa bất kỳ công cụ quản lý cơ sở dữ liệu nào khác.
Drupal Security:Chặn những kẻ tấn công
Đảm bảo rằng không có thông tin đăng nhập nào bị xâm phạm. Đặt lại mật khẩu cho trang web Drupal của bạn sau khi hoàn tất quá trình dọn dẹp phần mềm độc hại. Để thay đổi mật khẩu của bạn, hãy đăng nhập vào trang web Drupal của bạn.
Sử dụng phpMyAdmin
- Nếu bạn sử dụng, hãy cài đặt phpMyAdmin, hãy điều hướng đến cPanel> hộp Cơ sở dữ liệu> phpMyAdmin .
- Sau đó, chọn cơ sở dữ liệu Drupal và nhấp vào tab SQL.
- Bây giờ, trong trường văn bản, hãy nhập lệnh sau:
update users set pass=md5(’YOURPASS’) where uid = 1;
- Thay thế 'YOURPASS' bằng mật khẩu bạn muốn đặt và cuối cùng nhấp vào Tiếp tục!
Sử dụng Drush
- Để quản lý trang web của bạn thông qua Drush, hãy đảm bảo rằng mô-đun Drush đã được cài đặt.
- Để sử dụng Drush, hãy kết nối với trang web của bạn qua SSH.
- Bây giờ, đối với người dùng Drupal-8, hãy chạy lệnh sau:
drush user-password UserName --password="your-new-password".
- Đối với Drupal-9, hãy chạy lệnh sau:
drush user:password UserName "your-new-password"
Tại đây, hãy thay thế ‘Tên người dùng bằng Người dùng của trang web Drupal của bạn và‘ mật khẩu mới của bạn ’bằng mật khẩu bạn muốn đặt. Đảm bảo mật khẩu an toàn và có sự kết hợp tốt giữa các bảng chữ cái, số và ký tự.
Drupal Security:Khôi phục Tệp
Khôi phục các trang bị nhiễm từ một bản sao lưu. Nếu không có bản sao lưu thì hãy sử dụng một bản sao mới. Sau khi các tệp được làm sạch, hãy xóa bộ nhớ cache của bạn theo cách sau:
- Đăng nhập vào trang Drupal của bạn qua SSH.
- Từ thiết bị đầu cuối, hãy chạy lệnh sau:
drush cache-rebuild
(dành cho Drupal 8)
hoặc
drush cache-clear all
(dành cho Drupal 7).
Trong trường hợp trang web Drupal của bạn bị Google hoặc nhà cung cấp dịch vụ lưu trữ của bạn đưa vào danh sách đen, hãy gửi trang web đó để được xem xét.
Drupal Hacked Mitigation
Bảo vệ Thư mục Nhạy cảm
Điều quan trọng là phải chặn quyền truy cập vào các thư mục nhạy cảm. Điều này có thể được thực hiện thông qua các bước sau:
- Đăng nhập vào trang web của bạn và mở trình quản lý tệp.
- Tạo một tệp mới có tên .htaccess bên trong các thư mục bạn muốn bảo vệ.
- Trong tệp đó, hãy chèn mã sau:
Order Deny,Allow
Deny from all
Allow from 22.33.44.55
Đoạn mã này sẽ từ chối quyền truy cập vào khách truy cập của các thư mục cụ thể đó. Tại đây, dòng mã cuối cùng chỉ định IP nào sẽ cho phép. Ngoài ra, hãy xem cả các tệp .htaccess đã được sửa đổi. Trong trường hợp tìm thấy bất kỳ tệp nào như vậy, hãy ưu tiên làm sạch tệp đó trước.
Cập nhật và sao lưu
Đảm bảo rằng bạn đang sử dụng phiên bản Drupal mới nhất. Nhóm bảo mật Drupal cập nhật các lỗi nghiêm trọng với mỗi bản cập nhật mới. Điều này có thể được xác minh bằng cách sử dụng bảng thay đổi. Hơn nữa, hãy tránh sử dụng các plugin không được kiểm chứng vì chúng có khả năng chứa mã lỗi. Đảm bảo tạo một bản sao của trang web. Điều này có thể hữu ích để khôi phục trang web sau một cuộc tấn công. Cập nhật và sao lưu là những phương pháp rẻ nhất và hiệu quả nhất để bảo vệ một trang Drupal.
Kiểm tra Bảo mật
Việc kiểm tra bảo mật có thể tiết lộ các lỗ hổng nghiêm trọng trong trang web Drupal. Không phải tất cả quản trị viên web đều có thể là chuyên gia về bảo mật. Do đó, các dịch vụ như Astra có thể đảm nhận việc bảo mật cho quản trị viên web. Kiểm tra bảo mật Astra và kiểm tra bút có thể tiết lộ một cách có trách nhiệm các mối đe dọa nghiêm trọng trên trang web.
Điều này có thể cho phép quản trị viên web thực hiện các biện pháp phòng ngừa để ngăn chặn các trang web Drupal bị tấn công. Kiểm tra bảo mật Astra mô phỏng các cuộc tấn công thời gian thực trong một môi trường an toàn để không gây hại cho trang web và đồng thời, có thể tìm thấy các lỗ hổng nghiêm trọng. Kiểm toán bảo mật như Astra’s có thể tìm thấy các lỗ hổng phổ biến như OWASP Top 10 trong trang web Drupal.
Drupal Malware Scanner and Firewall
Các lỗ hổng bảo mật mới được phát hiện trong Drupal mỗi tháng. Tuy nhiên, điều này không có nghĩa là các trang web Drupal sẽ không an toàn. Tường lửa có thể ngăn những kẻ tấn công khai thác những lỗ hổng này ngay cả khi trang web Drupal dễ bị tấn công. Tuy nhiên, điều quan trọng là phải chọn đúng tường lửa trong số nhiều tường lửa có sẵn trên thị trường. Tường lửa Astra là cái nổi bật trên tất cả các thông số. Nó rất mạnh mẽ và có thể mở rộng. Điều này có nghĩa là, dù là các blog nhỏ hay các trang thương mại điện tử lớn, Astra đều có thể bảo mật tất cả. Hơn nữa, Astra có thể bắt mật những kẻ tấn công và chặn các cuộc tấn công thông thường.
Trình quét phần mềm độc hại Astra Drupal có thể phát hiện phần mềm độc hại từ các trang web bị tấn công trong vòng vài phút. Nó cũng sẽ tìm nạp sự khác biệt của tệp cho bạn mà bạn có thể xóa bằng một cú nhấp chuột đơn giản vào nút nếu chúng độc hại.