I.Cấu Trúc Của Joomla

Kiến trúc của Joomla được thiết kế để cung cấp tính linh hoạt và khả năng mở rộng. Trong phần này, chúng ta sẽ xem xét kỹ lưỡng các khối xây dựng và thành phần cốt lõi của Joomla.

Thành Phần Chính Của Joomla

1. Lõi (Core)

Thành phần cốt lõi: Đây là những thành phần chính thực hiện các chức năng cần thiết của Joomla. Chúng bao gồm quản lý nội dung, quản lý người dùng, quản lý menu, v.v.

Module cốt lõi: Hiển thị nội dung cụ thể trong các phần khác nhau của trang web. Ví dụ bao gồm module Bài viết Mới nhất, module Bài viết Đọc Nhiều nhất.

Plugin cốt lõi: Thêm các tính năng khác nhau vào chức năng của Joomla. Ví dụ bao gồm plugin CAPTCHA, plugin lọc nội dung.

2. Thành phần (Components)

Thành phần Nội dung (com_content): Đây là thành phần quản lý nội dung của Joomla. Nó quản lý các mục nội dung như bài viết, danh mục và bài đăng.

Thành phần Người dùng (com_users): Được sử dụng để quản lý người dùng. Nó bao gồm các chức năng như đăng ký người dùng, đăng nhập và quản lý hồ sơ.

Thành phần Menu (com_menus): Được sử dụng để quản lý menu và các mục menu.

Các thành phần khác: Ví dụ bao gồm biểu mẫu liên hệ (com_contact), tìm kiếm (com_search) và liên kết web (com_weblinks).

3. Modules

Module được sử dụng để hiển thị nội dung cụ thể trong các phần khác nhau của trang web. Mỗi module bổ sung chức năng của một thành phần, cung cấp trải nghiệm người dùng tốt hơn.

Ví dụ về Module:

  • Module Bài viết Mới nhất
  • Module Bài viết Đọc Nhiều nhất
  • Module Danh mục

4. Plugins

Plugin thêm các tính năng khác nhau vào chức năng của Joomla và mở rộng các hoạt động cốt lõi. Một plugin thường chạy khi một sự kiện cụ thể xảy ra.

Ví dụ về Plugin:

  • Plugin CAPTCHA: Cung cấp xác minh CAPTCHA trong biểu mẫu
  • Plugin Nội dung: Cung cấp lọc và định dạng nội dung

5. Templates

Giao diện xác định hình thức và bố cục của website. Joomla bao gồm các giao diện cho cả frontend và backend.

Ví dụ về Giao diện:

  • Protostar: Giao diện frontend mặc định cho Joomla
  • Hathor: Giao diện backend mặc định cho Joomla

6. Languages

Joomla là một CMS đa ngôn ngữ và hỗ trợ quản lý nội dung bằng nhiều ngôn ngữ. Các gói ngôn ngữ cho phép người dùng sử dụng Joomla bằng ngôn ngữ ưa thích của họ.

Các Gói Ngôn Ngữ:

  • Gói ngôn ngữ cốt lõi cho Joomla
  • Gói ngôn ngữ của bên thứ ba

Cấu Trúc Tệp và Thư Mục Của Joomla

Hiểu cấu trúc tệp và thư mục của Joomla giúp người dùng và nhà phát triển hiểu được hoạt động bên trong của nó và tùy chỉnh cho phù hợp. Dưới đây là mô tả về các thư mục và tệp chính của Joomla.

1. Thư Mục Gốc (Root Directory)

Thư mục gốc là nơi Joomla được cài đặt. Nó chứa các tệp và thư mục con cần thiết.

Các Tệp Quan Trọng:

  • index.php: Điểm vào chính của Joomla
  • configuration.php: Chứa các cài đặt cấu hình của Joomla

2. Thư Mục Quản Trị (Administrator Directory)

Cung cấp quyền truy cập vào bảng quản trị của Joomla.

Các Tệp và Thư Mục Quan Trọng:

  • index.php: Điểm vào chính cho bảng quản trị
  • components/: Chứa các thành phần cho bảng quản trị

3. Thư Mục Thành Phần (Components Directory)

Chứa các thành phần của Joomla.

Các Tệp và Thư Mục Quan Trọng:

  • com_content/: Chứa các tệp cho thành phần quản lý nội dung
  • com_users/: Chứa các tệp cho thành phần quản lý người dùng

4. Thư Mục Module (Modules Directory)

Chứa các module của Joomla.

Các Tệp và Thư Mục Quan Trọng:

  • mod_menu/: Chứa các tệp cho module menu
  • mod_breadcrumbs/: Chứa các tệp cho module breadcrumb

5. Thư Mục Plugin (Plugins Directory)

Chứa các plugin của Joomla.

Các Tệp và Thư Mục Quan Trọng:

  • content/: Chứa các plugin liên quan đến nội dung
  • user/: Chứa các plugin liên quan đến người dùng

6. Thư Mục Giao Diện (Templates Directory)

Chứa các giao diện của Joomla.

Các Tệp và Thư Mục Quan Trọng:

  • protostar/: Chứa các tệp cho giao diện frontend mặc định
  • hathor/: Chứa các tệp cho giao diện backend mặc định

7. Thư Mục Media (Media Directory)

Chứa các tệp media của Joomla. Hình ảnh, video và các tệp media khác được lưu trữ ở đây.

Các Tệp và Thư Mục Quan Trọng:

  • images/: Chứa các tệp hình ảnh
  • videos/: Chứa các tệp video

8. Thư Mục Nhật Ký (Logs Directory)

Chứa các tệp nhật ký của Joomla. Nhật ký lỗi và nhật ký hệ thống được lưu trữ ở đây.

Các Tệp và Thư Mục Quan Trọng:

  • error.php: Tệp nhật ký lỗi
  • system.php: Tệp nhật ký hệ thống

Bảng Điều Khiển Quản Trị Joomla

Bảng điều khiển quản trị Joomla cho phép người dùng quản lý và tùy chỉnh website của họ. Các thành phần chính của bảng quản trị bao gồm:

1. Bảng Điều Khiển (Control Panel)

Màn hình chính của bảng quản trị Joomla. Cung cấp quyền truy cập vào các tác vụ quản trị khác nhau.

Tính Năng Chính:

  • Thông tin và thống kê trang web
  • Các phím tắt và liên kết truy cập nhanh

2. Menu

Màn hình quản lý menu. Tạo menu mới và chỉnh sửa menu hiện có.

Tính Năng Chính:

  • Tạo và chỉnh sửa các mục menu
  • Quản lý module menu

3. Nội Dung (Content)

Màn hình quản lý nội dung. Quản lý bài viết, danh mục và các mục nội dung khác.

Tính Năng Chính:

  • Tạo và chỉnh sửa bài viết mới
  • Quản lý danh mục

4. Thành Phần (Components)

Quản lý các thành phần của Joomla. Điều khiển cài đặt và chức năng của các thành phần khác nhau từ đây.

Tính Năng Chính:

  • Cài đặt và gỡ bỏ thành phần
  • Cấu hình cài đặt thành phần

5. Tiện Ích Mở Rộng (Extensions)

Quản lý các tiện ích mở rộng của Joomla. Cài đặt tiện ích mở rộng mới và cập nhật các tiện ích hiện có.

Tính Năng Chính:

  • Cài đặt và gỡ bỏ tiện ích mở rộng
  • Cấu hình cài đặt tiện ích mở rộng

6. Người Dùng (Users)

Màn hình quản lý người dùng. Thêm người dùng mới và chỉnh sửa người dùng hiện có.

Tính Năng Chính:

  • Quản lý nhóm người dùng và quyền
  • Chỉnh sửa hồ sơ người dùng

7. Hệ Thống (System)

Quản lý cài đặt hệ thống của Joomla. Cấu hình cài đặt trang web và cài đặt chung từ đây.

Tính Năng Chính:

  • Cài đặt cấu hình chung
  • Bảo trì hệ thống và sao lưu

II.Cấu trúc Joomla — Kiến trúc và thành phần chính

Joomla được thiết kế với kiến trúc mở rộng và linh hoạt, cho phép người quản trị dễ dàng tùy biến. Dưới đây là mô tả chi tiết về các thành phần lõi, thư mục, và bảng điều khiển quản trị của Joomla.


1. Thành phần chính của Joomla

1.1 Core (Lõi hệ thống)

Bao gồm các phần quan trọng để Joomla hoạt động:

  • Core Components: Thành phần chính cho quản lý nội dung, người dùng, menu, v.v.
  • Core Modules: Hiển thị nội dung cụ thể ở các vị trí khác nhau trên trang (vd: “Bài viết mới nhất”).
  • Core Plugins: Bổ sung tính năng như CAPTCHA, lọc nội dung, bảo mật.

1.2 Components (Thành phần mở rộng)

Các thành phần này định nghĩa chức năng chính của Joomla.

ComponentMô tả
com_contentQuản lý bài viết, danh mục, và nội dung.
com_usersQuản lý người dùng (đăng ký, đăng nhập, hồ sơ).
com_menusQuản lý menu và liên kết.
com_contact, com_search, com_weblinksCác thành phần liên hệ, tìm kiếm, và liên kết web.

1.3 Modules (Mô-đun)

Hiển thị thông tin cụ thể trên giao diện web, bổ trợ cho component chính.

Ví dụ:

  • Latest Articles Module (Bài viết mới nhất)
  • Most Read Articles Module (Bài viết được xem nhiều)
  • Categories Module (Danh mục)

1.4 Plugins

Thêm tính năng cho Joomla, hoạt động khi có sự kiện cụ thể xảy ra.

Ví dụ:

  • CAPTCHA Plugin: Xác minh người dùng khi gửi form.
  • Content Plugin: Định dạng hoặc lọc nội dung.

1.5 Templates (Giao diện)

Quyết định giao diện và bố cục trang web. Joomla có template riêng cho frontend và backend.

Ví dụ:

  • Protostar — Template mặc định cho frontend.
  • Hathor — Template mặc định cho backend.

1.6 Languages (Ngôn ngữ)

Joomla hỗ trợ đa ngôn ngữ. Gói ngôn ngữ (language pack) cho phép người dùng sử dụng Joomla bằng nhiều ngôn ngữ khác nhau.

Ví dụ:

  • Core language packs (gói ngôn ngữ mặc định)
  • Third-party language packs (bên thứ ba)

2. Cấu trúc thư mục và tệp của Joomla

Hiểu cấu trúc thư mục giúp dễ dàng tùy chỉnh và bảo trì hệ thống.

2.1 Root Directory (Thư mục gốc)

Là nơi cài đặt Joomla, chứa các tệp và thư mục chính.

Tệp quan trọng:

index.php          → Điểm vào chính của Joomla.
configuration.php  → Chứa cấu hình hệ thống.

2.2 Administrator Directory

Truy cập phần quản trị (admin panel).

Thư mục & tệp chính:

index.php          → Trang đăng nhập và điều khiển admin.
components/        → Chứa các component quản trị.

2.3 Components Directory

Chứa toàn bộ component của Joomla.

Ví dụ:

com_content/ → Quản lý nội dung
com_users/   → Quản lý người dùng

2.4 Modules Directory

Chứa mô-đun hiển thị nội dung.

mod_menu/        → Quản lý menu
mod_breadcrumbs/ → Hiển thị đường dẫn breadcrumb

2.5 Plugins Directory

Chứa plugin mở rộng chức năng.

content/ → Plugin xử lý nội dung
user/    → Plugin liên quan đến người dùng

2.6 Templates Directory

Chứa các template giao diện.

protostar/ → Template frontend mặc định
hathor/    → Template backend mặc định

2.7 Media Directory

Chứa tệp đa phương tiện (media).

images/ → Hình ảnh
videos/ → Video

2.8 Logs Directory

Chứa file log lỗi và hệ thống.

error.php   → Log lỗi
system.php  → Log hệ thống

3. Bảng điều khiển quản trị (Administration Panel)

Joomla có giao diện quản trị mạnh mẽ giúp quản lý toàn bộ website.

3.1 Control Panel

Trang chính sau khi đăng nhập admin.

Tính năng:

  • Hiển thị thông tin site, thống kê.
  • Lối tắt đến các khu vực quản lý.

3.2 Menus

Quản lý hệ thống menu.

Tính năng:

  • Tạo và chỉnh sửa menu.
  • Quản lý mô-đun menu.

3.3 Content

Quản lý bài viết và danh mục.

Tính năng:

  • Tạo/sửa bài viết mới.
  • Quản lý danh mục (categories).

3.4 Components

Điều khiển và cấu hình các thành phần mở rộng.

Tính năng:

  • Cài đặt / gỡ bỏ component.
  • Cấu hình chi tiết từng component.

3.5 Extensions

Quản lý toàn bộ tiện ích mở rộng.

Tính năng:

  • Cài đặt/gỡ cài đặt extension.
  • Cập nhật hoặc cấu hình extension hiện có.

3.6 Users

Quản lý người dùng.

Tính năng:

  • Tạo người dùng mới, chỉnh sửa hồ sơ.
  • Phân quyền (user groups & permissions).

3.7 System

Quản lý hệ thống Joomla.

Tính năng:

  • Cấu hình tổng thể (Global Configuration).
  • Bảo trì và sao lưu hệ thống.

4. Tổng kết

Cấu trúc Joomla được xây dựng xoay quanh Components – Modules – Plugins – Templates – Languages.
Nắm rõ các thành phần này giúp dễ dàng mở rộng, bảo mật, và tối ưu hiệu suất website.


III.Joomla User and Authorization System — Hệ thống người dùng và phân quyền trong Joomla

Hệ thống người dùng của Joomla được thiết kế linh hoạt và bảo mật, cho phép quản lý vai trò, quyền truy cập, và bảo vệ tài khoản hiệu quả. Dưới đây là phần giải thích chi tiết về cơ chế người dùng, phân quyền và bảo mật trong Joomla.


1. Quản lý người dùng (User Management)

1.1 Vai trò và quyền hạn (User Roles & Permissions)

Joomla cho phép gán vai trò (role) và quyền hạn (permission) khác nhau cho từng người dùng.
Mỗi vai trò tương ứng với phạm vi thao tác cụ thể.

Các vai trò mặc định trong Joomla:

Vai tròMô tả
Super UserToàn quyền quản trị hệ thống (bao gồm cả cài đặt và cấu hình).
AdministratorQuản lý nội dung và người dùng, nhưng bị giới hạn ở một số thiết lập hệ thống.
ManagerQuản lý nội dung, phê duyệt và phân quyền cơ bản.
AuthorTạo và chỉnh sửa bài viết của chính mình.
EditorChỉnh sửa tất cả bài viết.
PublisherĐăng / gỡ bài viết (publish/unpublish).
RegisteredNgười dùng đã đăng ký, truy cập được nội dung riêng tư.
GuestKhách truy cập công khai, chỉ xem nội dung public.

2. Tài khoản và bảo mật người dùng (User Accounts & Security)

2.1 Đăng ký và đăng nhập

  • Đăng ký (Registration): Người dùng điền biểu mẫu đăng ký. Joomla có thể yêu cầu xác minh email và CAPTCHA để tránh spam.
  • Đăng nhập (Login): Người dùng đăng nhập bằng email và mật khẩu. Có thể bật xác thực hai lớp (2FA) để tăng bảo mật.

2.2 Chính sách bảo mật tài khoản

  • Bắt buộc sử dụng mật khẩu mạnh (độ dài tối thiểu, ký tự đặc biệt, chữ hoa/thường, số).
  • Mật khẩu phải được hash + salt trước khi lưu trong cơ sở dữ liệu.
  • Theo dõi và ghi log các lần đăng nhập bất thường.

3. Bảo vệ khỏi tấn công Brute Force

Tấn công brute-force là hình thức thử nhiều tổ hợp username + password để đoán đúng thông tin đăng nhập.

Biện pháp bảo vệ:

Biện phápMô tả
CAPTCHAThêm CAPTCHA vào form đăng nhập / đăng ký để ngăn bot.
Account LockoutKhoá tạm thời tài khoản sau một số lần đăng nhập sai.
2FA (Two-Factor Authentication)Thêm bước xác minh thứ hai (OTP, mã qua email, ứng dụng).
Strong Password PolicyBắt buộc người dùng tạo mật khẩu mạnh và khó đoán.

4. Bảo mật mật khẩu trong Joomla

4.1 Chính sách mật khẩu mạnh

  • Đặt yêu cầu tối thiểu về độ dài, ký tự đặc biệt, và độ phức tạp.
  • Khuyến khích người dùng đổi mật khẩu định kỳ.

4.2 Lưu trữ mật khẩu an toàn

  • Mật khẩu được hash + salt trong cơ sở dữ liệu.
  • Joomla sử dụng thuật toán bcrypt hoặc tương đương để mã hoá an toàn.

4.3 Đặt lại mật khẩu (Password Reset)

  • Cung cấp quy trình đặt lại mật khẩu an toàn: người dùng xác minh qua email hoặc CAPTCHA.
  • Không hiển thị thông báo lỗi cụ thể khi đặt lại (tránh lộ username tồn tại).

5. Tóm tắt biện pháp bảo mật người dùng

Biện phápMục tiêu
2FA (Two-Factor Auth)Ngăn truy cập trái phép dù có mật khẩu.
CAPTCHAChặn bot tự động đăng nhập / đăng ký.
Giới hạn đăng nhậpKhoá tài khoản tạm thời khi sai nhiều lần.
Lưu trữ mật khẩu hash/saltNgăn lộ mật khẩu thô trong DB.
Giám sát đăng nhậpPhát hiện hành vi đáng ngờ sớm.

6. Kết luận

Hệ thống người dùng và phân quyền của Joomla cho phép kiểm soát chi tiết từng vai trò và hoạt động.
Kết hợp cấu hình quyền hợp lý, 2FA, và chính sách mật khẩu mạnh sẽ giúp website tránh được phần lớn các tấn công khai thác người dùng.


IV.Joomla Core Enumeration — Thu thập thông tin lõi Joomla

Việc xác định phiên bản và cấu trúc các thành phần lõi của Joomla giúp phát hiện lỗ hổng và lập kế hoạch vá lỗi. Dưới đây là các phương pháp thực tế, ngắn gọn và dễ áp dụng.


1. Phát hiện phiên bản Joomla

1.1 joomla.xml

File chứa thông tin phiên bản thường nằm tại:

administrator/manifests/files/joomla.xml

Mẫu nội dung:

<extension type="file" version="3.9.20" method="upgrade">
  <name>Joomla</name>
  <version>3.9.20</version>
  <creationDate>July 2020</creationDate>
  <author>Joomla! Project</author>
</extension>

Các file XML của extension khác cũng nằm trong administrator/manifests/files/ và chứa version, tác giả, license.

1.2 Joomla API (REST)

Nếu API được bật, endpoint dưới đây có thể trả thông tin public của user:

/api/index.php/v1/users?public=true

Ví dụ phản hồi (JSON) có thể chứa id, name, username, email (tuỳ cấu hình quyền công khai).

1.3 Meta tags và HTML source

Kiểm tra mã nguồn HTML tìm thẻ:

<meta name="generator" content="Joomla! - Open Source Content Management" />

Thẻ này chỉ cho biết dùng Joomla (có thể kèm version).

1.4 readme.html

Tệp readme.html ở thư mục gốc đôi khi chứa thông tin phiên bản:

http://example.com/readme.html

1.5 Trang quản trị (Administrator)

Trang đăng nhập admin:

http://example.com/administrator/

Kiểm tra nguồn trang để tìm chuỗi hoặc file tham chiếu có chứa version.

1.6 CSS / JS files

Một số file có query string hoặc tên chứa version, ví dụ:

/media/system/js/mootools.js?version=1.6.0

Kiểm tra các đường dẫn tệp tĩnh trong HTML.


2. Các thành phần lõi (Core Components & Modules)

Một số component mặc định quan trọng:

  • com_content — Quản lý nội dung
  • com_users — Quản lý người dùng
  • com_weblinks — Web links
  • com_contact — Contact forms
  • com_newsfeeds — News feeds

2.1 Phát hiện phiên bản component

Kiểm tra file metadata của component, ví dụ:

/components/com_content/content.xml

Trong file XML có thể tìm thẻ <version>1.6.0</version>.


3. Phương pháp thu thập thông tin

3.1 Thủ công

  • Dùng Browser DevTools để kiểm tra nguồn HTML và đường dẫn file.
  • Dùng Burp Suite để bắt và phân tích request/response.
  • Dùng Postman để thử gọi API nếu có.

3.2 Công cụ tự động

  • JoomScan — công cụ chuyên quét Joomla:
joomscan --url http://example.com
  • CMSMap — đa CMS, có module Joomla:
cmsmap -t joomla -u http://example.com

4. Gợi ý khi thu thập thông tin

  • Nên thử nhiều nguồn: XML manifest, readme, meta tag, các file tĩnh, API, trang admin.
  • Một số site đã ẩn/giấu thông tin (xóa meta generator, chặn truy cập file manifest) — cần kết hợp phương pháp passive và active.
  • Luôn tuân thủ pháp luật: chỉ quét hệ thống bạn sở hữu hoặc được phép.

5. Kết luận ngắn

Xác định phiên bản Joomla và phiên bản các component là bước thiết yếu trước khi kiểm tra lỗ hổng. Kết hợp kiểm tra thủ công và công cụ tự động sẽ cho kết quả đầy đủ hơn.


V.Joomla Extension Enumeration — Thu thập thông tin về tiện ích mở rộng

Xác định các extension (components, modules, plugins) được sử dụng trong Joomla là bước quan trọng để đánh giá mức độ an toàn và lỗ hổng tiềm ẩn của website.


1. Phương pháp liệt kê tiện ích mở rộng (Extension Enumeration Methods)

Có hai cách chính để thu thập thông tin:

Phương phápMô tả
Thủ công (Manual)Kiểm tra trực tiếp mã nguồn, URL và phản hồi HTTP.
Tự động (Automated Tools)Dùng công cụ quét chuyên dụng để phát hiện nhanh và đầy đủ hơn.

2. Phương pháp thủ công (Manual Methods)

2.1 Kiểm tra mã nguồn HTML

Các file CSS hoặc JavaScript của component/module/plugin thường để lộ tên extension.

Ví dụ:

<link rel="stylesheet" href="/media/com_contact/css/style.css" type="text/css">
<script src="/media/com_content/js/script.js" type="text/javascript"></script>

→ Ta có thể suy ra site sử dụng com_contactcom_content.


2.2 Cấu trúc URL và tham số

Đường dẫn của Joomla thường chứa tham số option= thể hiện component đang dùng.

Ví dụ:

http://example.com/index.php?option=com_content&view=article&id=1

→ Thành phần option=com_content cho biết trang đang dùng component quản lý nội dung.


2.3 Header và phản hồi HTTP

Một số request có thể trả về thông tin extension trong header hoặc nội dung response.

Ví dụ:

GET /components/com_contact/ HTTP/1.1
Host: example.com

→ Gợi ý rằng component com_contact tồn tại.


3. Phương pháp tự động (Automated Tools)

3.1 JoomScan

Công cụ quét Joomla phổ biến, phát hiện component, module, plugin và lỗ hổng.

joomscan --url http://example.com

3.2 CMSMap

Công cụ đa nền tảng CMS (WordPress, Joomla, Drupal…), giúp xác định version và lỗ hổng.

cmsmap -t joomla -u http://example.com -f

3.3 JoomlaVS

Công cụ Python phát hiện version và extension Joomla.

python joomlavs.py -u http://example.com

4. Kết hợp kỹ thuật

Kỹ thuậtMục đích
Kiểm tra HTML & URLXác định component đang được render.
Quan sát request & headerPhát hiện đường dẫn đến thư mục extension.
Dùng tool tự độngPhát hiện version & so khớp CSDL lỗ hổng.

5. Gợi ý bảo mật

  • Xóa hoặc giới hạn quyền truy cập thư mục /components/, /modules/, /plugins/ để tránh bị lộ thông tin.
  • Xoá file readme.txt hoặc manifest.xml của extension nếu không cần thiết.
  • Thường xuyên cập nhật extension để tránh khai thác lỗ hổng đã biết.
  • Dùng công cụ kiểm thử định kỳ để rà soát các extension yếu kém.

6. Kết luận

Liệt kê và nhận diện extension Joomla giúp phát hiện nhanh các plugin lỗi thời hoặc chứa lỗ hổng.
Kết hợp kiểm tra thủ côngtự động sẽ cho kết quả toàn diện và chính xác hơn.


VI.Joomla Template Enumeration — Thu thập thông tin về giao diện Joomla

Template Enumeration là quá trình xác định template (giao diện) đang được sử dụng trong website Joomla.
Template quyết định giao diện và bố cục của trang web, nên việc nhận diện chúng giúp đánh giá nguy cơ bảo mật và lỗ hổng tiềm ẩn.


1. Phương pháp thủ công (Manual Methods)

1.1 Kiểm tra mã nguồn HTML

Phân tích mã nguồn của trang web có thể tiết lộ template đang được dùng thông qua các file CSS/JS đặc trưng.

Ví dụ:

<link rel="stylesheet" href="/templates/protostar/css/template.css" type="text/css">
<script src="/templates/protostar/js/template.js" type="text/javascript"></script>

→ Template protostar đang được sử dụng.


1.2 Cấu trúc URL và tham số

Cấu trúc URL trong Joomla đôi khi cho biết template đang hoạt động.

Ví dụ:

http://example.com/index.php?template=protostar

→ Tham số template=protostar xác nhận template đang dùng.


1.3 Header và phản hồi HTTP

Quan sát request/response có thể thấy đường dẫn file template.

Ví dụ:

GET /templates/protostar/css/template.css HTTP/1.1
Host: example.com

→ Request này tiết lộ template protostar.


2. Gợi ý thực hành an toàn

Biện phápMô tả
Ẩn đường dẫn /templates/Ngăn người khác liệt kê hoặc truy cập trực tiếp thư mục template.
Gỡ file readme.txt hoặc templateDetails.xmlCác file này thường chứa thông tin version hoặc tác giả.
Cập nhật template thường xuyênĐảm bảo vá lỗ hổng nếu có bản cập nhật bảo mật.
Sử dụng .htaccess bảo vệ thư mụcChặn truy cập file .xml, .txt, .php trong thư mục template.

3. Kết hợp với kiểm tra tự động

Một số công cụ có thể hỗ trợ xác định template đang dùng, chẳng hạn:

  • JoomScan — phát hiện component, template, module.
  • CMSMap — hỗ trợ Joomla và các CMS khác.
  • JoomlaVS — công cụ Python nhận diện version và template.
joomscan --url http://example.com
cmsmap -t joomla -u http://example.com
python joomlavs.py -u http://example.com

4. Kết luận

Phát hiện template Joomla giúp xác định phiên bản giao diện, tác giả, và khả năng tồn tại lỗ hổng.
Đối với pentester hoặc quản trị viên bảo mật, việc liệt kê template là bước quan trọng trong đánh giá rủi ro hệ thống Joomla.


VII.Joomla Hardening Techniques — Củng cố bảo mật Joomla

Các kỹ thuật hardening là bước quan trọng giúp tăng cường bảo mật và giảm thiểu rủi ro bị tấn công cho website Joomla. Dưới đây là những biện pháp bảo mật cốt lõi mà quản trị viên nên áp dụng.


1. Thường xuyên cập nhật (Regularly Perform Updates)

Cập nhật lõi Joomla (Joomla Core Updates)

  • Kiểm tra và cập nhật định kỳ qua bảng điều khiển quản trị:
    Components → Joomla! Update
  • Luôn cài đặt phiên bản mới nhất để vá các lỗ hổng đã biết.

Cập nhật Extension và Template

  • Cập nhật tất cả tiện ích mở rộng và giao diện qua:
    Extensions → Manage → Updates

2. Chính sách mật khẩu mạnh (Strong Password Policies)

Bảo vệ tài khoản người dùng bằng mật khẩu mạnh và phức tạp.

Yêu cầu mật khẩu:

  • Tối thiểu 8 ký tự.
  • Bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt.
  • Khuyến khích đổi mật khẩu định kỳ.

Băm (Hashing) và Salt mật khẩu:

  • Đảm bảo mật khẩu được hash + salt trong CSDL.
  • Dùng thuật toán hiện đại như bcrypt.

3. Sử dụng xác thực hai lớp (Two-Factor Authentication - 2FA)

2FA cung cấp lớp bảo mật bổ sung khi đăng nhập.

Cách kích hoạt:

  • Bật 2FA bằng Google Authenticator hoặc xác minh SMS.
  • Thực hiện qua: Extensions → Plugin Manager → Two Factor Authentication

4. Kích hoạt CAPTCHA chống bot

CAPTCHA giúp ngăn tấn công brute-force và đăng ký giả.

Cấu hình CAPTCHA:

  • Thêm CAPTCHA vào form đăng ký, đăng nhập, đặt lại mật khẩu.
  • Tích hợp Google reCAPTCHA hoặc công cụ tương tự.
  • Cấu hình qua: Extensions → Plugin Manager → CAPTCHA

5. Cấu hình quyền truy cập tệp và thư mục (File & Directory Permissions)

Đặt đúng quyền để ngăn truy cập trái phép.

Quyền khuyến nghị:

  • Thư mục: 755
  • Tệp: 644

Lệnh kiểm tra và thiết lập:

find /path/to/joomla -type d -exec chmod 755 {} \;
find /path/to/joomla -type f -exec chmod 644 {} \;

6. Sử dụng Extension bảo mật (Security Extensions)

Các extension này giúp tăng cường bảo mật Joomla.

TênMô tả
Akeeba Admin ToolsCung cấp công cụ bảo vệ nâng cao, quét lỗi cấu hình.
RSFirewall!Tường lửa mạnh mẽ, bảo vệ chống tấn công web.
JHackGuardNgăn chặn các mối đe dọa phổ biến (SQLi, XSS, RFI, v.v).

Cài đặt qua:
Extensions → Extension Manager → Install


7. Bảo vệ file cấu hình (configuration.php)

File này chứa toàn bộ thông tin cấu hình website — cực kỳ nhạy cảm.

Thiết lập quyền file:

chmod 640 /path/to/joomla/configuration.php

Chỉ cho phép chủ sở hữu đọc và ghi.


8. Sử dụng .htaccess để tăng bảo mật

File .htaccess giúp kiểm soát truy cập và chặn hành vi nguy hiểm trên máy chủ Apache.

1. Vô hiệu hoá liệt kê thư mục

Options -Indexes

2. Chặn truy cập file cấu hình

<Files configuration.php>
  Order allow,deny
  Deny from all
</Files>

3. Giới hạn truy cập loại file nguy hiểm

<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh|sql)$">
  Order Allow,Deny
  Deny from all
</FilesMatch>

9. Tổng kết

Biện phápMục tiêu
Cập nhật thường xuyênVá lỗi bảo mật, ngăn khai thác lỗ hổng cũ.
Mật khẩu mạnh + 2FABảo vệ tài khoản quản trị.
Phân quyền đúngNgăn ghi đè hoặc đọc file trái phép.
.htaccessKiểm soát truy cập ở cấp máy chủ.
Extension bảo mậtPhát hiện và ngăn tấn công tự động.

Kết luận:
Hardening Joomla là quá trình phòng thủ chủ động, giúp bảo vệ hệ thống khỏi các tấn công phổ biến như brute-force, SQLi, XSS và lộ thông tin nhạy cảm.
Thực hiện đầy đủ các bước trên giúp website an toàn và ổn định lâu dài.

Hacking Joomla

Author

Kai0Kid

Publish Date

10 - 08 - 2025

License

Unlicensed

Avatar
Kai0Kid

Bạn tìm gì ở tôi ?