# Expressway ## Recon Đầu tiên, mình sẽ tiến hành scan địa chỉ IP: `10.10.11.87` * Scan TCP port ![image](https://hackmd.io/_uploads/r1KIVjkall.png) * Scan UDP port ![image](https://hackmd.io/_uploads/SyHdjo1pxe.png) **Tóm tắt** - Mở TCP ssh, port 22 - Mở UDP isakmp, port 500 * Tìm hiểu thông tin về ứng dụng đang mở trên host ### SSH ![image](https://hackmd.io/_uploads/ByUEzhJ6xg.png) ### ISAKMP ![image](https://hackmd.io/_uploads/SJ3EXn16ex.png) Như vậy mình thử thực hiện khai thác **ISAKMP** ## Khai thác Theo thông tin ở trên thì **ISAKMP** sẽ làm nhiệm vụ thực hiện thiết lập thống nhất các giao thức, thuật toán mã hóa, xác thực,... Còn việc thực hiện trao đổi khóa sẽ do **IKE** đảm nhận. Sử dụng tool `ike-scan` với options `-M` là **Main Mode** nó sẽ trả về handshake. ![image](https://hackmd.io/_uploads/SkS6S3yaxx.png) Tiếp tục dùng option `--aggressive` để nó trả về nhiều thông tin hơn như ID/KeyExchange/HASH_R. ![image](https://hackmd.io/_uploads/HkNCUhJTxx.png) Nhìn thấy có: - ID(Type=ID_USER_FQDN, Value=ike@expressway.htb) - Hash(20 bytes) Khai thác lấy hash dựa trên id `ike@expreesway.htb` sau đó ghi lại thông tin qua file với option `-P` ![image](https://hackmd.io/_uploads/rJnzOhkTlg.png) Như vậy thì nó đã lưu hash vào trong file `psk.txt` ![image](https://hackmd.io/_uploads/rJCNOhJagx.png) Mình sẽ thử crack hash này. ![image](https://hackmd.io/_uploads/r19tdhy6xg.png) Tìm ra được password là **freakingrockstarontheroad** Dùng credentials thu thập được là: `ike@freakingrockstarontheroad` login vào ssh. ![image](https://hackmd.io/_uploads/HyVxKhy6ll.png) Như vậy thì tiếp tục khai thác trên host này. ![image](https://hackmd.io/_uploads/rJUFF2ypxl.png) Nhìn thấy thì chưa leo lên được **root** Giờ mình cần leo quyền. ![image](https://hackmd.io/_uploads/r143h2yaxl.png) Sau khi kiểm tra qua các lệnh trên thì nó không có thông tin gì. Nên mình thử tìm 1 file có ít nhất 1 quyền thực thi file thường sẽ là **root** ![image](https://hackmd.io/_uploads/SkAla3kTll.png) Nhìn thấy thì có file `/usr/local/bin/sudo`. Sau khi, kiểm tra thì nó có version là **1.9.17** ![image](https://hackmd.io/_uploads/rJ7L62k6le.png) Tìm thông tin trên mạng thì nó liên quan đến 1 **CVE-2025-32463** ![image](https://hackmd.io/_uploads/H1K202ypxe.png) **Chi tiết lỗ hổng**: là một lỗ hổng nâng quyền cục bộ (local privilege escalation) trong sudo liên quan đến file `/etc/nsswitch.conf` — cụ thể là lỗ hổng liên quan đến tùy chọn --chroot (options -R) — cho phép người dùng thông thường leo lên quyền root trong một số điều kiện đặc biệt. ### Các bước thực hiện nâng quyền 1. Tạo 1 file **.so** (shared object) là file thư viện trong linux (giống như file dll trong windows) trong đó chứa `__attribute__((constructor))` để có thể khởi chạy payload nâng quyền (nó là module NSS). 2. Xây dựng 1 chroot directory với `/etc/nsswitch.conf` mà mình đã custom (để khi hệ thống tra cứu tên, loader sẽ tìm thư viện đó trong chroot) 3. Đặt file **.so** đã biên dịch vào đúng tên và đường dẫn khớp với cấu trúc chroot (ví dụ `libnss_/exploit.so.2`) 4. Chạy **sudo** SUID bị vuln với tùy chọn chroot (ví dụ `--chroot`) đối với một lệnh vô hại; khi **sudo** load NSS bên trong chroot, constructor của **.so** độc hại sẽ chạy với quyền root. ### Xây dựng khai thác 1. Chuẩn bị 1 file C payload (payload này dùng constructor để chạy khi **.so** được load lên): ![image](https://hackmd.io/_uploads/S19vKBbTle.png) 2. Tiếp tục tạo 1 chroot directory layout và build share library: ```bash mkdir -p exploit_stage/fsociety/etc exploit_stage/libnss_ echo "passwd: /fsociety123" > exploit_stage/fsociety/etc/nsswitch.conf cp /etc/group exploit_stage/fsociety/etc ``` ```bash # compile share object (từ directory bao gồm exploit.c) gcc -shared -fPIC -Wl,-init,exploit -o exploit_stage/libnss_/fsociety.so.2 exploit.c ``` Sau đó, cuối cùng chạy **sudo** có lỗ hổng (ví dụ `/usr/local/bin/sudo` và sudo chroot option -R) ![image](https://hackmd.io/_uploads/HyM9xIWpex.png) ![image](https://hackmd.io/_uploads/r1M6eL-pgx.png)