# Introduction
## Intro
### Penetration Testing Process
- **Pre-Engagement**: Trong giai đoạn này, mọi thứ cần thiết cho quá trình pentest thực tế được thảo luận, phát triển, xác định và ghi lại bằng văn bản. Ở đây chúng ta có được các quyền cần thiết để thực hiện các cuộc tấn công hack trên các hệ thống được xác định trước và mô phỏng một cuộc tấn công mạng thực sự.
- **Information Gathering**: Trong giai đoạn này, chúng ta thu thập càng nhiều thông tin càng tốt về công ty mục tiêu để hiểu chính xác cách thức cấu trúc, cách thức hoạt động của nó, những gì nó phụ thuộc vào và những tài nguyên kỹ thuật cần thiết.
- **Vulnerability Assessment**: Sau khi thu thập càng nhiều thông tin càng tốt, điều này phải được phân tích cẩn thận và tương quan để xác định các vectơ tấn công tiềm năng có thể dẫn đến một cuộc tấn công thành công.
- **Exploitation**: Các vectơ tấn công được xác định là mục tiêu và các cơ chế phòng thủ được bỏ qua.
- **Post-Exploitation**: Khi chúng ta đã có quyền truy cập vào một hệ thống mục tiêu để kiểm soát nó từ bên trong và thu thập đủ thông tin nội bộ, chúng ta cố gắng leo thang các đặc quyền đến mức cao nhất có thể.
- **Lateral Movement**: Giai đoạn này xảy ra khi chúng ta sử dụng hệ thống bị xâm phạm để di chuyển qua mạng nội bộ.
- **Proof-of-Concept**: Từ tất cả các ghi chú, ảnh chụp màn hình và tài liệu của chúng ta, một báo cáo được tạo ra với các bước riêng lẻ để tái tạo hành động của chúng ta để xác định thành công từng lỗ hổng.
- **Post-Engagement**: Đây là giai đoạn mà chúng ta show báo cáo cho khách hàng và cùng nhau thảo luận, trả lời các câu hỏi và giúp họ đóng các lỗ hổng được tìm thấy.

# Pre-Engagement
## Scope Definition
### Non-Disclosure Agreement
Thỏa thuận không tiết lộ (NDA) là một tài liệu pháp lý đóng một trong những vai trò quan trọng nhất trong thử nghiệm thâm nhập. Đó là một hợp đồng bằng văn bản giữa hai bên, người kiểm tra thâm nhập và công ty (khách hàng) - đảm bảo bất kỳ thông tin nhạy cảm nào được chia sẻ giữa họ vẫn được bảo mật. Khi chúng ta nhìn vào các hệ thống của một công ty, chúng ta có thể gặp phải nhiều chi tiết nhạy cảm khác nhau, chẳng hạn như:
- Điểm yếu bảo mật có thể được khai thác.
- Thông tin công ty tư nhân và bí mật thương mại.
- Dữ liệu của khách hàng
- Cách thức hoạt động của hệ thống công ty
## Rules of Engagement
The Rules of Engagement (RoE) là một tài liệu giải thích cách kiểm tra thâm nhập sẽ được thực hiện. Đó là một thỏa thuận giữa khách hàng và nhóm thử nghiệm nêu rõ những gì được phép và những gì không. Tài liệu này rất quan trọng vì nó giúp tránh sự nhầm lẫn và đặt ra những kỳ vọng rõ ràng.
## Agreement & Preparation
Trước khi bắt đầu kiểm tra thâm nhập, chúng ta cần một thỏa thuận rõ ràng giữa nhóm thử nghiệm và tổ chức. Thỏa thuận/hợp đồng này bao gồm tất cả mọi thứ đã được thảo luận trước đây và giúp mọi người hiểu điều gì sẽ xảy ra trong quá trình thử nghiệm. Thỏa thuận có thể được chia thành ba loại, mỗi loại bao gồm một số phần quan trọng:
- Legal
- A Non-Disclosure Agreement (NDA)
- Permission to test
- Contact information
- Scope & Rules
- A scoping questionnaire and document
- Rules of engagement (ROE)
- Contract
- Timeline
- Responsibilities
- Deliverables
# Network: Information Gathering
## Publicly Available Data
Trước khi bắt đầu bất kỳ liệt kê và phân tích mạng nào, điều quan trọng trước tiên là phải hiểu công ty hoặc tổ chức mà bạn đang xem. Điều này giúp đảm bảo phân tích của bạn được tập trung và có liên quan. Bước đầu tiên tốt là thu thập thông tin có sẵn công khai về công ty, điều này có thể cho chúng ta biết về hệ thống, công cụ và điểm yếu tiềm năng của họ. Nói một cách đơn giản, thu thập thông tin công khai là chìa khóa để hiểu một công ty trước khi kiểm tra bảo mật mạng của mình. Nghiên cứu này có thể giúp bạn trong cả việc lập kế hoạch và thực hiện bài kiểm tra của bạn. Sử dụng các nguồn như trang web, phương tiện truyền thông xã hội và kho lưu trữ mã giúp tạo ra một bức tranh hoàn chỉnh về thiết lập của công ty và các điểm yếu bảo mật có thể.
### Gathering Public Data
OSINT: https://academy.hackthebox.com/course/preview/osint-corporate-recon
### Understanding Connections
Sau khi thu thập thông tin này, bạn có thể thấy những gì các công ty và công cụ khác mà tổ chức phụ thuộc vào. Điều này bao gồm các đối tác kinh doanh, nhà cung cấp và phần mềm họ sử dụng. Những kết nối này có thể có rủi ro bảo mật cần được kiểm tra. Nhìn vào bài đăng công việc và hồ sơ nhân viên có thể cho bạn biết công ty sử dụng phần mềm nào. Danh sách công việc thường đề cập đến các chương trình hoặc hệ thống máy tính cụ thể mà nhân viên cần biết. Điều này cung cấp cho bạn manh mối về công nghệ của họ.
## Network and Service Scanning
Quét mạng và dịch vụ là một bước nền tảng trong kiểm tra thâm nhập và đánh giá bảo mật. Nó liên quan đến việc xác định các máy chủ hoạt động, cổng mở và các dịch vụ chạy trong phạm vi xác định và được sử dụng để có được sự hiểu biết toàn diện về môi trường đích.
### Understanding the Assigned Scope
Trước khi bắt đầu quét, điều quan trọng là phải xác định và hiểu phạm vi đánh giá. Phạm vi thường bao gồm một loạt các địa chỉ IP, tên miền hoặc hệ thống mà khách hàng đã ủy quyền để thử nghiệm. Ví dụ: một phạm vi có thể bao gồm một mạng con, chẳng hạn như 10.129.12.0/24, bao gồm tất cả các địa chỉ IP từ 10.129.12.0 đến 10.129.12.255. Hiểu phạm vi đảm bảo rằng việc kiểm tra vẫn nằm trong ranh giới pháp lý và đạo đức và tập trung vào các hệ thống liên quan đến các mục tiêu của khách hàng.
__Using Nmap for Network Scanning__: https://academy.hackthebox.com/course/preview/network-enumeration-with-nmap
```
duongquanghao@htb[/htb]$ nmap -sV -p- 10.129.12.0/24 -oA network-scan
Starting Nmap 7.94 ( <https://nmap.org> )
Nmap scan report for 10.129.12.10
Host is up (0.0012s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.7 (Ubuntu Linux; protocol 2.0)
80/tcp open http nginx 1.18.0 (Ubuntu)
443/tcp open ssl/http Apache httpd 2.4.52 ((Ubuntu))
8000/tcp open ssl/http Golang net/http server (Go-IPFS json-rpc or InfluxDB API)
8001/tcp open ssl/vcom-tunnel?
8080/tcp open http Apache httpd 2.4.52 ((Ubuntu))
8889/tcp open ssl/http Golang net/http server
Nmap scan report for 10.129.12.20
Host is up (0.0015s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH for_Windows_9.5 (protocol 2.0)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows Server 2019 Standard 17763 microsoft-ds
3000/tcp open http Golang net/http server
3389/tcp open ms-wbt-server Microsoft Terminal Services
5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
5986/tcp open ssl/http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
8000/tcp open ssl/http Golang net/http server (Go-IPFS json-rpc or InfluxDB API)
8889/tcp open ssl/http Golang net/http server
49669/tcp open msrpc Microsoft Windows RPC
Nmap done: 256 IP addresses (2 hosts up) scanned in 12.34 seconds
```
# Network: Vulnerability Assessment
## Low Hanging Fruits
Trong bối cảnh kiểm thử xâm nhập, "low hanging fruits" đề cập đến một lỗ hổng hoặc cấu hình sai tương đối dễ dàng để xác định, khai thác hoặc khắc phục.
# Linux
## Linux Information Gathering
```
duongquanghao@htb[/htb]$ ftp 10.129.12.10 21
Connected to 10.129.12.10.
220 ProFTPD Server (Debian) [10.129.12.10]
Name (10.129.12.10:pwnbox): anonymous
331 Anonymous login ok, send your complete email address as your password
Password: anonymous
230 Anonymous access granted, restrictions apply
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
```
__FTP__
- Access and Environment
- Anonymous FTP access was enabled on port 21
- We identified this as a home directory for user john
- Several important configuration and history files were accessible
__Critical Files__
- .bash_history file revealed potential credentials: john:SuperSecurePass123
- SSH private key (id_rsa) was obtained and is not password protected
- WordPress setup documentation revealed temporary FTP configuration
__Security Implications__
- Exposed SSH private key could allow unauthorized system access
- FTP server was intended to be temporary but remained accessible
- Internal documentation exposed system configuration details
- Command history revealed sensitive operations and potential credentials
__WordPress__
- Running WordPress version 6.7.2 (Latest version)
Server: Apache/2.4.52 (Ubuntu)
- XML-RPC enabled and accessible
- Theme: twentytwentyfive v1.0
- Plugin: hash-form v1.1.0 - vulnerable to RCE (CVE-2024-5084)
## Linux Initial Access
Before we continue, let’s take another look at the information we’ve written down.
__Access and Environment__
- Anonymous FTP access was enabled on port 21
- We identified this as a home directory for user john
- Several important configuration and history files were accessible
- .bash_history file revealed potential credentials: john:SuperSecurePass123
- SSH private key (id_rsa) was obtained and is not password protected
- WordPress setup documentation revealed temporary FTP configuration
Our goal at this point is to test if the information we’ve found leads to a successful exploitation. In this case, we have three approaches that we can use.
1. WordPress exploit from the Metasploit Framework
2. SSH private key
3. Credentials
Three successful methods were demonstrated for gaining initial access to the target system.
WordPress Hash Form plugin (v1.1.0) was vulnerable to RCE, allowing Meterpreter shell access as www-data user.
SSH access was achieved using both John's private key and credentials found in .bash_history file.
Initial reconnaissance through FTP provided all the necessary information to gain system access.
System revealed to be Ubuntu 22.04.4 LTS running kernel 5.15.0-135-generic.
## Linux System Enumeration