Joomla là một CMS cực kỳ mạnh mẽ với hỗ trợ cộng đồng tuyệt vời. Hơn nữa, nó có khả năng tùy biến cao vì các trang chạy trên Joomla đa dạng từ trang cá nhân đến trang chính phủ. Sự phổ biến rộng khắp có thể quy cho hơn 90+ ngôn ngữ hỗ trợ. Tuy nhiên, sự phổ biến cũng làm nó trở thành mục tiêu cho spammer và hacker. Thường người dùng than phiền về Joomla bị hack gửi spam trên diễn đàn cộng đồng. Những cuộc tấn công này khá phổ biến do lượng người dùng lớn bị ảnh hưởng. Thường email spam chứa quảng cáo dược phẩm bán viagra. Theo sách Joomla Web Security,
Dấu hiệu Joomla bị hack gửi Spam
Việc phát hiện tấn công email spam thường mất vài giờ đến vài ngày. Độ trễ xảy ra do email mất thời gian để lan truyền. Do đó nó được phát hiện khi người dùng thông báo cho bạn về email spam. Tuy nhiên, trong một số trường hợp, quản trị viên web được thông báo nếu họ dùng dịch vụ trực tuyến kiểm tra spam trước khi gửi. Các dịch vụ này có thể tiết lộ tên miền đã bị liệt kê đen cho spam. Mặc dù một số giải pháp bảo mật trực tuyến có thể thông báo cho người dùng sớm về các mối đe dọa như vậy.
Trong một số trường hợp, đã quan sát thấy tấn công spam có thể làm nghẽn băng thông. Sau đó ISP có thể thông báo cho bạn về luồng email spam ra ngoài. Internet có nhiều tài nguyên duy trì danh sách spam trực tuyến. Nếu Joomla bị hack và gửi spam, IP máy chủ của bạn sẽ bị liệt kê đen. Khi một dịch vụ liệt kê đen bạn, nó lan truyền qua tất cả các danh sách đen đó. Sau đó công cụ tìm kiếm như Google liệt kê đen trang web vì spam. Vì vậy, khi người dùng truy cập, họ có thể được chào đón bằng trang như này.
Sau khi nhận thấy phân phối email spam quy mô lớn từ trang web, Google đã liệt kê nó như trang tấn công. Trang này cảnh báo người dùng không tiếp tục trên trang. Nếu trang web hiển thị các triệu chứng này, có thể do Joomla bị hack gửi spam!
Ví dụ Joomla bị hack gửi Spam
Vấn đề Joomla bị hack gửi spam khá phổ biến. Nhiều người dùng khiếu nại về vấn đề này trên diễn đàn cộng đồng. Một số thậm chí bị tái nhiễm! Dưới đây là vài ví dụ từ diễn đàn cộng đồng Joomla.
Nguyên nhân Joomla bị hack gửi Spam
SQL Injection
Cơ sở dữ liệu Joomla thường là mục tiêu. Do SQL injection khá phổ biến trên web. Do đó đưa nó vào Top 10 lỗ hổng OWASP. Khi kẻ tấn công nắm được cơ sở dữ liệu, câu lệnh SQL có thể dùng để xác định bảng chứa email đăng ký. Sau khi lấy danh sách, kẻ tấn công có thể dùng để spam số lượng lớn người dùng. Do đó, việc giữ cơ sở dữ liệu an toàn là quan trọng.
Ví dụ, Joomla có phần mở rộng tên Jimtawl. Nó có thể dùng chạy trạm radio trên web. Tuy nhiên, thành phần này bị phát hiện dễ bị SQLi. Tham số dễ bị tấn công là id. URL hoàn chỉnh trông như:
Thành phần cho phép đầu vào người dùng không được làm sạch dẫn đến SQLi. Ở đây, bằng cách thêm câu lệnh SQL sau id, kẻ tấn công có thể đọc nội dung cơ sở dữ liệu. Ví dụ, để tiết lộ phiên bản database và user, truy vấn sau có thể thực thi.
' AND EXTRACTVALUE(66,CONCAT(0x5c,(SELECT (ELT(66=66,1))),CONCAT_WS(0x203a20,USER(),DATABASE(),VERSION())))-- VerAyari
Dấu nháy đơn ở đây kết thúc đầu vào của câu lệnh trước. Sau đó mệnh đề OR thực thi câu lệnh SQL tiếp theo. Câu lệnh này lấy user và phiên bản database. Exploit cho lỗ hổng này đã được phát hành. Hơn nữa, kẻ tấn công có thể dùng công cụ tự động để đẩy nhanh tấn công. Từ đây kẻ tấn công có thể tìm tất cả email lưu trong database.
Trong một số trường hợp trang web bị Stack Based SQLi, kẻ tấn công có thể thực thi lệnh. Các lệnh này thực thi qua dịch vụ database chạy trên máy chủ cục bộ. Sử dụng các lệnh này, vấn đề Joomla bị hack gửi spam có thể xảy ra. Do đó spam có thể xuất phát từ chính máy chủ SMTP cục bộ. Bên cạnh Joomla bị hack gửi spam, kẻ tấn công cũng có thể dùng thông tin database để thực hiện tấn công khác trên trang!
Thông tin đăng nhập yếu (Weak Credentials)
Khá có thể kẻ tấn công đã brute force đăng nhập vào máy chủ SMTP của bạn. Sử dụng mật khẩu mặc định hoặc yếu làm trang web dễ bị các kiểu tấn công này. Khi máy chủ SMTP bị kiểm soát bởi kẻ tấn công, nó có thể dẫn đến Joomla bị hack gửi spam.
Cổng mở (Open Ports)
Cổng mở có thể trao trang web cho kẻ tấn công. SMTP dùng cổng mặc định 25. Tuy nhiên, tránh dùng cổng này vì nó thường bị spammer nhắm mục tiêu. Trong một số trường hợp, chính ISP chặn cổng này. Cổng 587 là lựa chọn tốt hơn. Vì cổng này hỗ trợ mã hóa TLS. Cổng 25 là mục tiêu chính cho mã độc và spam. Kẻ tấn công có thể xâm nhập qua cổng mở dẫn đến Joomla bị hack gửi spam. Phơi bày cổng 25 ra internet có thể dẫn đến lượng lớn spam đến!
Tải lên Scripts (Scripts Uploads)
Thông thường, kẻ tấn công khai thác máy chủ bằng các kỹ thuật đã biết. Sau đó để tối ưu hóa Joomla bị hack gửi spam, tự động hóa được dùng. Script PHP có thể hoàn thành nhiệm vụ này rất hiệu quả. Các script này dùng để kết nối đến máy chủ SMTP hoặc MX servers trong một số trường hợp. Một script điển hình chứa mã như sau:
Rõ ràng, kỹ thuật obfuscation (làm rối mã) đã được dùng. Tuy nhiên, khi script này được giải mã, nó dịch thành kiểu như:
Như thấy từ mã, script dùng cấu trúc eval(). Lệnh này xử lý chuỗi đầu vào thành mã PHP. Thực hành mã hóa an toàn khuyến khích tránh dùng eval(). Vì nó giúp kẻ tấn công thực thi mã tùy ý trên máy chủ. Hơn nữa, eval() có thể dùng lưu mã trong database. Mã này sau đó được thực thi và làm Joomla bị hack gửi spam. Các script này có thể bơm spam hàng loạt theo hai cách:
- MTA Queue Spam: Message Transfer Agent (MTA) chịu trách nhiệm gửi mail từ trang Joomla đến người nhận. Đôi khi script khai thác chèn lượng lớn email spam vào hàng đợi MTA. Điều này có thể dẫn đến cảnh báo "MTA Queue quá lớn!". Sau khi đạt giới hạn, email có thể bị ISP chặn. Do đó script đôi khi kết nối trực tiếp đến MX.
- Direct to MX Spam: Direct to MX cho phép bỏ qua ISP làm trung gian. Direct to MX là dịch vụ hợp pháp cho phép gửi mail trực tiếp đến máy chủ Mail eXchange của người nhận. Điều này tránh email đến máy chủ SMTP của ISP. Script khai thác tính năng này để chèn spam trực tiếp đến người nhận. Điều này để tránh phát hiện trong hàng đợi MTA.
Chia sẻ không gian web (Sharing Webspace)
Thường hosting rẻ có thể khiến bạn trả giá đắt. Nhiễm mã lan truyền nhanh khi nhiều trang chia sẻ cùng không gian. Vì vậy Joomla bị hack gửi spam có thể do nhiễm từ trang khác. Điều này làm khó phát hiện trang nào đang tạo spam!
Cần giúp chuyên nghiệp bảo mật máy chủ sau Joomla bị hack gửi spam? Nhắn tin cho chúng tôi qua widget chat và chúng tôi sẽ vui lòng giúp bạn. Khắc phục email spam Joomla ngay.
Nhận email Spam
Spam đăng ký (Registration Spam)
Thường quan sát Joomla bị hack gửi spam. Nhưng đôi khi, trang web tự trở thành mục tiêu spam. Số lượng lớn đăng ký giả có thể nhắm vào trang của bạn. Joomla từng bị lỗ hổng người dùng có thể gửi email ngay cả khi form bị vô hiệu hóa. Nguyên nhân do thành phần dễ bị tấn công tên com_contact. Lỗ hổng này được gọi là CVE-2018-17859. Bằng cách khai thác, kẻ tấn công có thể gửi số lượng lớn email spam. Trong kịch bản đó, nếu kiểm tra và cân bằng không được đặt, bot có thể phá hoại. Tự động điền bảng đăng ký. Cuối cùng, khó phân biệt email nào là đăng ký thật và nào là bot!
Ngoài ra, một số trang bật thông báo mỗi đăng ký mới. Trong trường hợp đó, spam đăng ký có thể tạo nhiều thông báo. Nếu thông báo đạt giới hạn, nhà cung cấp dịch vụ sẽ gắn cờ là spam. Do đó chặn tài khoản và ngăn thông báo đăng ký mới. Ngoài đăng ký, thông báo cũng có thể sinh ra khi trang bị tấn công. Do đó khi vượt giới hạn thông báo, cùng quy trình sẽ được thực hiện.
Spam báo cáo không giao được (Non-Delivery Reports Spam)
Giao thức SMTP được thiết kế sao cho trường "From" và "To" có thể thao túng bởi bất kỳ ai. Thậm chí người dùng bình thường. Spammer thường khai thác này bằng cách đặt tên miền của bạn vào trường "From". Điều này diễn ra theo các cách:
- Bước 1: Bot tạo danh sách email giả (email không tồn tại).
- Bước 2: Email admin@wsxdn.com của bạn dùng làm người gửi trong tùy chọn "From".
- Bước 3: Bot gửi email đến tài khoản không tồn tại.
- Bước 4: Giao email thất bại.
- Bước 5: Email báo cáo không giao được (NDR) quay về tài khoản của bạn (admin@wsxdn.com). Điều này dẫn đến lượng lớn email spam đến.
Cách ngăn chặn Email Spam trong Joomla: Giải pháp
Khắc phục Spam đến (Inbound Spam)
Khung chính sách người gửi (Sender Policy Framework - SPF)
Giao thức SMTP có giới hạn. Không thể ngăn ai đó dùng tên miền của bạn trong tùy chọn "From". Tuy nhiên, có một số khắc phục. Máy chủ mail có thể được thông báo về IP nào được phép gửi mail thay mặt tên miền của bạn. Do đó, SPF là loại bản ghi DNS TXT thực hiện nhiệm vụ này. Các bước sau có thể thực hiện để triển khai SPF:
- Trước hết truy cập trang Quản lý DNS.
- Sau đó truy cập phần Bản ghi (Records). Nhấp Thêm và chọn TXT từ menu.
- Điền các trường sau:
- Host: Tham số này cần hostname. Ví dụ, gõ @ để ánh xạ bản ghi trực tiếp đến tên miền.
- Giá trị TXT – Nhập giá trị bạn muốn gán.
- Cuối cùng, Nhấp Lưu.
Cuối cùng, nó sẽ trông giống như YourDomain.com. IN TXT "v=spf1 mx ip4:123.123.123.123 -all".
Điều này tuyên bố YourDomain.com chỉ có hai nguồn email hợp lệ. Một là máy chủ Mail Exchange. MX server xác định tên miền nhận email của bạn. Cái kia là máy chủ tại 123.123.123.123. Tất cả email còn lại sẽ được coi là spam. Tuy nhiên, đáng chú ý ở đây rằng giống như robots.txt đây là quy ước. Hầu hết máy chủ mail có thể tuân theo nhưng một số có thể không!
Tư vấn chuyên gia bảo mật Astra ngay để dọn dẹp mã độc ngay lập tức. Tường lửa mạnh của chúng tôi bảo vệ trang web khỏi XSS, LFI, RFI, SQL Injection, Bad bot, Scanner lỗ hổng tự động, và 80+ mối đe dọa bảo mật. Bảo mật trang Joomla ngay.
Khắc phục Spam đi (Outbound Spam)
Xác định và xóa Script Spam
Bước 1: Trước hết cần xác định script nào đang tạo spam. Do đó đăng nhập máy chủ mail với quyền admin (SUDO).
Bước 2: Để bắt email ra ngoài bởi script, đảm bảo file PHP.ini có mã sau mail.add_x_header = On. Khi hoàn thành, tiến hành kiểm tra hàng đợi mail.
Bước 3: Điều này có thể làm bằng lệnh mailq. Lệnh này liệt kê tất cả email trong hàng đợi. Từ đây, ghi nhớ ID của email mà bạn muốn truy vết nguồn.
Bước 4: Lệnh grep và postcat sẽ hữu ích. Chạy lệnh: postcat -q <ID từ mailq> | grep X-PHP-Originating-Script
Bước 5: Lệnh này cho kết quả như, X-PHP-Originating-Script: 45:SPAMmailer.php. Ở đây, 45 là UID của script SPAMmailer.php. Lệnh này đã tìm thấy script Joomla bị hack gửi spam. Cũng như ID cục bộ trên máy chủ. Xóa script và dọn dẹp cài đặt.
Tuy nhiên, trong trường hợp Bước 4, nếu không cho kết quả thì có khả năng tài khoản đã bị xâm phạm. Đổi mật khẩu thành mật khẩu an toàn để ngăn Joomla bị hack gửi spam!
Các biện pháp phòng ngừa khác
- Dọn dẹp và gửi trang web xem xét lại nếu đã bị Google liệt kê đen.
- Chặn direct-to-MX trừ khi cần thiết khẩn cấp.
- Tránh dùng cổng 25 cho SMTP. Thay vào đó, lựa chọn tốt hơn là cổng 587.
- Cố gắng dùng VPS hosting chuyên dụng. Vì điều này giảm cơ hội lan truyền nhiễm Joomla bị hack gửi spam.
- Quản lý quyền đọc, ghi, thực thi thư mục khôn ngoan. Vì nó có thể ngăn chặn thực thi mã ngay cả khi script spam đã được tải lên.
- Cài đặt phần mở rộng uy tín. Tránh dùng phần mở rộng không rõ nguồn gốc hoặc null.
- Giới hạn lần xác thực trên máy chủ SMTP. Điều này ngăn chặn tấn công brute force.
- Cập nhật, Cập nhật, Cập nhật!
Kết luận
Joomla bị hack gửi spam có thể ảnh hưởng nghiêm trọng đến uy tín trang web. Biện pháp phòng ngừa tốt nhất là dùng giải pháp bảo mật. Số lượng lớn giải pháp bảo mật với tường lửa và IDS có sẵn trực tuyến. Giải pháp như Astra có khả năng mở rộng cao. Nó đáp ứng nhu cầu từ blog cá nhân đến doanh nghiệp lớn.