Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> An Ninh Mạng

Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

Magento điều hành 1,2% internet và 12% tất cả trang web thương mại điện tử. Theo số liệu thuần túy, 250.000 trang hoạt động dùng Magento.

Vì trang thương mại điện tử xử lý lượng lớn dữ liệu khách hàng, chúng trở thành mục tiêu chính của hacker. Vì vậy, chúng tôi tổng hợp các kỹ thuật gỡ hack Magento từng bước để kéo bạn ra khỏi khủng hoảng. Hướng dẫn này cũng bao gồm triệu chứng, ví dụ, nguyên nhân có thể và mẹo phòng ngừa cho trang web Magento của bạn.

Mặc dù không thiếu loại hack Magento, đánh cắp thẻ tín dụng (credit card skimming) & đánh cắp danh tính (identity theft) là phổ biến nhất. Hơn nữa, chi tiết CVE của Magento tiết lộ các vector tấn công đe dọa Magento nhất –

Chart by Visualizer

Ngoài ra, một số lỗ hổng nghiêm trọng đã được báo cáo trong phần mềm khiến công ty phải phát hành gói cập nhật mới mang tên SUPEE-10266. Một cuộc tấn công mang tên 'Magento Killer' nhắm vào Magento mạnh mẽ vài tháng trước. Hỗ trợ chính thức cho Magento 1 sẽ sớm kết thúc và do đó cửa hàng không giảm thiểu sẽ mời hacker.

Magento Bị Hack: Hậu Quả Hoặc Triệu Chứng Có Thể

Có nhiều dấu hiệu cho thấy cửa hàng Magento của bạn có thể bị hack. Nhìn nhận những dấu hiệu này cẩn thận có thể cứu doanh nghiệp của bạn khỏi thảm họa. Tôi liệt kê một số triệu chứng ở đây:

Triệu Chứng

  • Khách hàng phàn nàn về chi tiết thẻ tín dụng bị đánh cắp
  • Trang thanh toán có biểu mẫu giả bổ sung và bạn đang mất tiền do bán hàng
  • Công cụ tìm kiếm blacklist cửa hàng Magento của bạn
  • Hosting tạm khóa trang web của bạn
  • Chuyển hướng độc hại xuất hiện trên trang web
  • Admin panel bị biến dạng hoặc màn hình trắng sau đăng nhập
  • Cửa hàng Magento chậm & hiển thị thông báo lỗi
  • Admin mới, độc hại xuất hiện trong cơ sở dữ liệu đăng nhập
  • Google hiển thị kết quả tìm kiếm từ khóa spam (Japanese hoặc Pharma) cho trang web của bạn
Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

Hậu Quả

  • Giảm lưu lượng người dùng và doanh thu từ cửa hàng Magento.
  • Ảnh hưởng tiêu cực đến SEO của trang web.
  • Người dùng ngại truy cập cửa hàng Magento do thiếu niềm tin.
  • Dữ liệu trang web có thể được bán trên dark web cho đối thủ.
  • Đánh cắp dữ liệu nhạy cảm từ cửa hàng qua trang lừa đảo hoặc javascript.

Magento Bị Hack: Ví Dụ

Thường xuyên, nhiều người dùng Magento bị kẻ tấn công nhắm đến cùng lúc. Không phải admin nào cũng là chuyên gia bảo mật. Do đó, người dùng gặp rắc rối có thể tìm thấy sự giúp đỡ trên diễn đàn cộng đồng, để sửa cửa hàng Magento bị hack.

Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

Dọn Dẹp Cửa Hàng Magento (1x & 2x) Bị Hack

Kiểm Soát Thiệt Hại

Bắt đầu với kiểm soát thiệt hại. Lưu ý rằng điều này không sửa được hack. Nhưng nó chắc chắn sẽ dừng lại sự bùng nổ. Đây là những gì bạn phải xem xét để kiểm soát thiệt hại:

  1. Thay đổi thông tin đăng nhập mặc định & rõ ràng thành thứ gì đó khó, ngẫu nhiên và duy nhất.
  2. Cập nhật mật khẩu người dùng bằng một câu lệnh SQL để khóa tất cả kẻ tấn công. Có thể làm qua câu lệnh SQL sau:

    update users set pass = concat('ZZZ', sha(concat(pass, md5(rand()))));
  3. Từ chối truy cập vào thư mục nhạy cảm. Bạn có thể làm bằng cách tạo file .htaccess bên trong chúng. Trong file đó thêm mã sau:
    Order Deny,AllowDeny from allAllow from xx.xx.xx.xx

Sửa xx.xx.xx.xx thành địa chỉ IP của bạn. Để thêm nhiều IP, lặp lại dòng "Allow from…" với IP khác nhau. Các dòng mã này chặn truy cập không mong muốn vào những thư mục cụ thể.

Sao Lưu Trang Web Của Bạn

Trước khi bắt đầu dọn dẹp cửa hàng Magento, hãy sao lưu trước. Bản sao lưu này phải bao gồm cả file lõi (core files) và cơ sở dữ liệu. Nếu có file bổ sung định nghĩa hoạt động và giao diện cửa hàng, hãy bao gồm chúng trong bản sao lưu. Để rõ ràng, sao lưu core, extensions & database.

Xác Nhận Hack

Bằng cách dùng công cụ

Sau khi đã sao lưu, bắt đầu quét cửa hàng. Bây giờ, có hàng chục công cụ miễn phí kiểm tra xem trang web có bị nhiễm hay không. Virustotal là công cụ phổ biến nhất.

Bằng cách kiểm tra Google Search Console

Ngoài công cụ, báo cáo bảo mật của công cụ tìm kiếm cũng giúp bạn. Kiểm tra báo cáo bảo mật bằng cách đăng nhập vào công cụ webmaster (Google Search Console, trong trường hợp Google). Làm theo các bước đơn giản sau và biết trang web có bị nhiễm hay không:

  1. Đăng nhập vào Google Search Console (công cụ webmaster)
  2. Đi đến tab 'Security'
  3. Kiểm tra xem có cờ đỏ (flaggings) nào không. Thông thường, trang web bị hack bị gắn cờ gần như ngay lập tức bởi công cụ tìm kiếm. Bạn sẽ thấy báo cáo chi tiết loại nhiễm và file chính xác chứa chúng.

Bây giờ bạn biết chắc chắn có nhiễm. Đã đến lúc tìm chính xác nơi nó ở. Nhớ rằng trong quy trình gỡ hack Magento, phần lớn công việc là quét. Vì vậy, chúng ta sẽ tìm kiếm nhiễm trong file lõi, file extension, file module, cơ sở dữ liệu, v.v.

Quét File Lõi (Core Files)

Hacker có thể xâm phạm trang web Magento bằng cách chèn mã vào cơ sở dữ liệu & file lõi. Do đó, bạn cần kiểm tra các thay đổi gần đây không quen thuộc trong các file này. Để làm điều này, bạn có thể chạy lệnh hoặc dùng công cụ so sánh khác biệt (difference checker). Tôi tuy nhiên sẽ liệt kê cả hai phương pháp để tiện cho bạn:

Bằng cách chạy lệnh SSH:

Để dòng lệnh hoạt động, bạn trước tiên cần tải phiên bản sạch và chính thống của cửa hàng Magento. Bạn có thể tải dễ dàng từ trang chính thức Magento hoặc Github. Các lệnh sau sẽ kiểm tra hai bản sao này cho bất kỳ sự bất thường nào.

$ mkdir magento-2.2.5 $ cd magento-2.2.5 $ wget https://github.com/magento/magento2/archive/2.2.5.tar.gz $ tar -zxvf 2.2.5.tar.gz $ diff -r 2.2.5 ./public_html

Lưu ý: Ở đây Magento 2.2.5 được dùng làm file sạch và cài đặt hiện tại của bạn được chỉ ra bằng thư mục public_html.

Bằng cách chạy lệnh diff:

File được sửa đổi gần đây luôn phải được nghi ngờ trong trường hợp hack. Lệnh diff tiết lộ tất cả các thay đổi trong file trong một khoảng thời gian thiết lập. Ví dụ, trong trường hợp này, chúng ta đặt khoảng thời gian 10 ngày (xem mtime -15).
Đây là cách chạy lệnh:

  1. Đăng nhập vào máy chủ web Magento của bạn.
  2. Khi truy cập qua SSH, chạy lệnh sau. Sẽ liệt kê tất cả thay đổi trong 10 ngày qua.
    $ find ./ -type f -mtime -10
  3. Khi truy cập qua SFTP, xem cột ngày sửa đổi cuối của tất cả file trên máy chủ.

Với điều này, bạn sẽ có danh sách tất cả sửa đổi trong 10 ngày qua. Sau đó, bạn có thể kiểm tra thủ công các thay đổi.

Xem Nhật Ký Người Dùng

Tiếp theo là kiểm tra người dùng trên trang web của bạn. Đôi khi, hacker có quyền truy cập trái phép. Và họ thêm mình làm người dùng. Đây là lý do cần kiểm tra tài khoản người dùng. Tìm và xóa người dùng độc hại trong bảng admin. Xóa các tài khoản này sẽ giúp kiểm tra thiệt hại trên trang web.

Để kiểm tra nhật ký người dùng, làm theo các bước:

  1. Đăng nhập vào admin panel
  2. Điều hướng đến System>Permissions>All users
  3. Xem danh sách này kỹ lưỡng

Tìm Kiếm Mã Độc (Malware)

Trong trường hợp SQL injection, kẻ tấn công thường che giấu mã thành định dạng không đọc được bởi con người. Và định dạng Base64 rất tiện cho kẻ tấn công. Để tìm bất kỳ mã base64 nào trong file của bạn, thực thi lệnh:

find . -name "*.php" -exec grep "base64"'{}'; -print &> hiddencode.txt

Lệnh này sẽ quét các dòng mã được mã hóa base64. Và lưu vào hiddencode.txt. Bạn có thể giải mã này bằng công cụ online để phân tích thêm.

Tuy nhiên, trong trường hợp tấn công spam, công cụ như phpMyAdmin có thể hữu ích. Tấn công spam Magento bao gồm nội dung vô nghĩa được chèn vào mọi trang Magento bị hack. Không nói là việc này khá khó tìm và loại bỏ. Do đó, chúng tôi khuyên dùng phpMyAdmin để tìm mã độc trong nhiều trang cùng lúc.

Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

Bảo Mật Magento: Khôi Phục File

Sau khi mã độc bị lộ, hãy xóa nó khỏi các trang Magento bị hack. Nếu bạn không chắc về mã nào, hãy bình luận (comment) nó và liên hệ chuyên gia. Khôi phục trang từ bản sao lưu. Nếu bản sao lưu không có thì dùng bản sao mới.

Nguyên Nhân Có Thể Của Hack Magento

Magento Bị Hack: SQL Injection Magento

SQL injection khá phổ biến trên ứng dụng web. Nó nhắm vào cơ sở dữ liệu của cửa hàng Magento. Cơ sở dữ liệu thường được gọi là bộ não của trang web. Nó chứa tất cả dữ liệu nhạy cảm như lịch sử đơn hàng, giao dịch, v.v. trong cửa hàng Magento. Điều này làm cho nó trở thành mục tiêu hấp dẫn.

Hiệu Ứng

Không nghi ngờ SQLi có thể gây thiệt hại nghiêm trọng. Tôi liệt kê những gì có thể sai ở đây.

  • Kẻ tấn công có thể đọc nội dung cơ sở dữ liệu.
  • Anh ta có thể thay đổi nội dung cơ sở dữ liệu. Điều này lại sửa đổi nội dung cửa hàng.
  • Tuy nhiên, anh ta có thể xóa toàn bộ cơ sở dữ liệu.
  • Anh ta có thể đánh cắp chi tiết thẻ tín dụng.
  • Kẻ tấn công cũng có thể đánh cắp & phơi bày thông tin đăng nhập admin. Điều này mở đường cho thêm tấn công.
  • Chúng có thể lấy được reverse shell trong một số trường hợp. Nó có thể giúp leo thang đặc quyền.

Ví Dụ

Tôi trích dẫn một ví dụ để làm rõ cách tấn công SQL injection diễn ra. Đây là trường hợp thực tế xảy ra trên tấn công Magento shoplift năm 2015.

Trong cuộc tấn công này, URL đích mà yêu cầu độc hại được gửi trông như sau:

https://www.example.com/index.php/admin/Cms_Wysiwyg/directive/index/

Điều này xảy ra do lỗi phân tích (parsing error). Tất cả giá trị nhập trong khóa filter i.e. ("filter":malicious_value) bị phân tích sai. Hơn nữa, kẻ tấn công dùng base64 encoding để tránh phát hiện. Kẻ tấn công cơ bản chèn câu lệnh SQL làm giá trị cho khóa filter và nó được phân tích.

Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

Sau khi giải mã yêu cầu trên, kết quả trông như sau:

Ở đây, vài câu lệnh SQL đầu cơ bản đặt mật khẩu mới bằng salt do kẻ tấn công chọn. Sau đó, nhóm câu lệnh SQL tiếp theo chèn admin_user mới vào cơ sở dữ liệu. Và vài câu lệnh SQL cuối tận dụng vai trò thành admin. Do đó, kẻ tấn công đã tạo user admin mới với username="ypwq", password="123". Toàn bộ mã khai thác có sẵn công khai trên GitHub.

Phòng Ngừa

Bảo vệ trang web khỏi SQL injection như sau:

  1. Giới hạn đặc quyền phía client (client-side)
  2. Dùng Prepared statements
  3. Tham số bảo vệ (Protection Parameters)
  4. Tường lửa (firewall)

Để biết mẹo phòng ngừa chi tiết hơn, tham khảo bài viết này.

Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

Quá Tấn Công XSS

Trong tấn công XSS Magento, kẻ tấn công chèn mã JavaScript độc hại vào các trang web khác nhau cho cửa hàng Magento. Nó xuất phát từ quy tắc Làm sạch & Xác thực (Sanitization & Validation) yếu hoặc không tồn tại. Cuộc tấn công này chủ yếu nhắm vào cookie và chi tiết phiên (session) của người dùng. Thường động cơ là đánh cắp chi tiết phiên của người dùng hoặc admin. Vì chi tiết phiên cũng chứa thông tin đăng nhập cho người dùng đó, nó có thể dùng để đăng nhập vào cửa hàng của bạn không chính thống.

Hiệu Ứng

  • Đánh cắp Cookie/chi tiết phiên
  • Truy cập không chính thống cho hacker
  • Hacker có thể đọc dữ liệu quan trọng như CSRF token
  • Tạo yêu cầu như người mạo danh người dùng

Ví Dụ

Lỗ hổng XSS được khám phá trong Magento phiên bản 1.9.0.1. Các file chứa yếu tố dễ bị tấn công là:

https://[magento_url]/skin/adminhtml/default/default/media/editor.swf https://[magento_url]/skin/adminhtml/default/default/media/uploader.swf https://[magento_url]/skin/adminhtml/default/default/media/uploaderSingle.swf

Nguyên nhân XSS là tham số FlashVar "bridgeName" được truyền cho phương thức ExternalInterface.call mà không có làm sạch thích hợp. Kết quả là có thể truyền mã JavaScript độc hại qua tham số bridgeName. Do đó, mã JS độc hại này chạy mỗi khi trang tải. Toàn bộ payload trông như:

https://example.com/skin/adminhtml/default/default/media/editor.swf?bridgeName=1%22]%29%29;alert%281%29}catch%28e%29{alert%281%29}//

Phòng Ngừa

Bạn có thể giữ trang web không bị XSS bằng các biện pháp sau:

  1. Đặt quy tắc làm sạch & xác thực thích hợp
  2. Giới hạn đặc quyền

Magento Bị Hack: Cross-Site Request Forgery Magento

Một tấn công CSRF Magento cơ bản là thực thi yêu cầu giả mạo thay mặt người dùng cuối, mà người dùng không biết. Thông thường, tấn công CSRF đi kèm với kỹ thuật xã hội (social engineering). Vì vậy, hacker có thể gửi liên kết độc hại đến người dùng mục tiêu (thường là admin) qua email. Mục đích các liên kết này là thực thi hàm thay mặt người dùng.

Hiệu Ứng

  • Kẻ tấn công có thể xóa tài khoản của bạn.
  • Anh ta có thể dùng thẻ tín dụng của bạn
  • Sử dụng chi tiết ngân hàng, kẻ tấn công có thể chuyển tiền từ ngân hàng nạn nhân sang của anh ta
  • Anh ta có thể đặt hàng trái phép từ cửa hàng Magento của bạn mà không trả tiền hoặc thao túng giá

Ví Dụ

  1. Một lỗi CSRF nghiêm trọng được tìm thấy trong Magento 1 cho phép kẻ tấn công từ xa chèn mã script vào phía ứng dụng của mô-đun dịch vụ bị ảnh hưởng để thực thi. Thành phần dễ bị tấn công là tham số 'filename' của mô-đun tải hình ảnh. Kẻ tấn công dùng yêu cầu POST từ phía ứng dụng để thực hiện thành công tấn công này. Tuy nhiên, để khai thác nó, kẻ tấn công cần tài khoản người dùng ứng dụng web quyền thấp và tương tác người dùng thấp hoặc trung bình. Đoạn mã script dễ bị tấn công được đưa dưới đây.

Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

Ở đây, kẻ tấn công thao túng tham số 'to' và parent_message_id do thiếu kiểm tra và cân bằng thích hợp. Dùng chúng, kẻ tấn công có thể gửi tin nhắn đến bất kỳ người dùng nào không cần sự đồng ý. Hơn nữa, nó cũng cho kẻ tấn công khả năng khác để thao túng nội dung trên cửa hàng Magento bị hack.

  • Magento Community và Enterprise editions trước 2.0.10/2.1.2 cũng chịu ảnh hưởng từ hai lỗi CSRF.
    APPSEC-1212: Magento không xác thực token chống CSRF khi xóa mục từ mini cart qua yêu cầu GET. Do đó, kẻ tấn công có thể dùng lỗ hổng này để xóa mục khỏi giỏ hàng qua lừa đảo và thủ thuật khác.
    APPSEC-1433: Đây là lỗ hổng CSRF nghiêm trọng hơn. Khai thác này, kẻ tấn công có thể xóa bất kỳ địa chỉ nào trên cửa hàng do thiếu token chống CSRF hoặc xác thực header Referer.
  • Phòng Ngừa

    • Cách tốt nhất ngăn chặn tấn công CSRF là dùng phòng ngừa dựa trên token
    • Dùng chính sách cùng nguồn (same-origin policy) cũng hoạt động trong trường hợp CSRF
    • Cách khác là có Synchronizer Tokens
    • Dùng Captcha.

    Truy cập tại đây để biết thông tin chi tiết về CSRF.

    Magento Bị Hack: Remote Code Execution Magento

    Thực thi mã Magento là loại tấn công cho phép kẻ tấn công chèn mã độc hại vào trang web của bạn. Cuộc tấn công này có thể

    Hiệu Ứng

    • Kẻ tấn công có thể xâm phạm trang web và máy chủ web.
    • Anh ta có thể xem, thay đổi & xóa file và cơ sở dữ liệu.

    Ví Dụ

    Magento CE và EE trước 2.0.10/2.1.2 dễ bị thực thi mã từ xa. Điều này được đặt tên là APPSEC-1484 và có mức độ nghiêm trọng 9.8 (critical). Nguyên nhân lỗ hổng là một số phương thức thanh toán cho phép người dùng thực thi mã PHP độc hại khi thanh toán. Mã khai thác cũng như mô-đun Metasploit cho lỗ hổng này đã được phát布.

    Phòng Ngừa

    • Đặt phương pháp phân tích (parsing) thích hợp.
    • Đặt quyền hạn chặt chẽ hơn cho người dùng.

    Magento Bị Hack: Các Nguyên Nhân Khác

    • Thông tin đăng nhập yếu hoặc hard-coded (cứng).
    • LFI, RFI, OWASP top 10, v.v.
    • Phiên bản lỗi thời.
    • Cấu hình sai máy chủ như cổng mở (open ports) v.v.
    • Hosting kém không có subnet.

    Cách Ngăn Chặn Cửa Hàng Magento Khỏi Hacker

    Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

    Cập Nhật Và Sao Lưu

    Di chuyển sang Magento 2. Đội ngũ Magento vá 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ể xác minh bằng changelog. Hơn nữa, tránh dùng extension không uy tín vì chúng có thể chứa mã lỗi. Đảm bảo tạo bản sao trang web. Điều này có thể giúp khôi phục trang web sau tấn công. Cập nhật và sao lưu là phương pháp bảo mật cửa hàng Magento rẻ nhất và hiệu quả nhất.

    Hướng Dẫn Bước Đi Bước Hoàn Chỉnh Cho Bảo Mật Magento (Video, Extension, Code & Infographics) (Giảm rủi ro bị hack 90%)

    Kiểm Tra Bảo Mật (Security Audit)

    Kiểm tra bảo mật có thể bảo vệ cửa hàng Magento khỏi tấn công. Không phải người dùng Magento nào cũng là chuyên gia bảo mật. Do đó dùng dịch vụ trực tuyến như Astra. Ngoài ra, kiểm tra bảo mật và pentesting của Astra có thể khám phá mối đe dọa nghiêm trọng trên cửa hàng. Những lỗ hổng này có thể được vá trước khi kẻ tấn công khai thác chúng!

    Khôi Phục Sau Khi Bị Hack Magento: Hướng Dẫn Gỡ Mã Độc & Ngăn Chặn Chuyên Sâu

    Astra Security: Magento Malware Scanner Và Magento Firewall Plugin

    Lỗ hổng mới được khám phá trong giải pháp thương mại điện tử Magento mỗi tháng. Tuy bạn vẫn có thể giữ cửa hàng an toàn khỏi gian lận và mã độc với giá thấp đến $9/tháng. Mua tường lửa phù hợp cho cửa hàng. Astra là giải pháp out-of-the-box triển khai trên đám mây. Nghĩa là bảo vệ cửa hàng không dùng giải pháp anti-virus tốn tài nguyên. Cũng, người dùng trung bình có thể dùng Astra thoải mái qua bảng điều khiển đơn giản. Cài đặt plugin Magento Firewall khá dễ dàng và nếu bạn vẫn không biết, kỹ sư Astra sẽ hỗ trợ. Tường lửa Astra là lựa chọn đúng cho bạn vì rất mạnh mẽ và có khả năng mở rộng.

    Dọn dẹp và khôi phục cửa hàng Magento bị hack đôi khi gây bối rối và mệt mỏi. Giải pháp cho tất cả vấn đề này là công cụ tự động như Astra Security. Astra Security Magento malware scanner có thể phát hiện và loại bỏ nhiều chữ ký mã độc từ trang bị hack trong vài phút. Hơn nữa, đừng lo về file, Astra sẽ vá chúng cho bạn.