# Cách mà kẻ tấn công đã leo thang đặc quyền lên root thông qua việc lợi dụng lệnh sudo iptables

## **Tổng quan**

Có thể bạn cũng biết, trong nhiều hệ thống Linux, quản trị viên thường cấu hình `sudo` để cấp cho người dùng quyền chạy một số lệnh cụ thể mà không cần mật khẩu. Một trong những công cụ phổ biến được cấp quyền như vậy là `iptables`, dùng để cấu hình tường lửa. Nhưng điều gì sẽ xảy ra nếu quyền này bị khai thác để đạt được **hoàn toàn quyền root?**

Bài viết này sẽ phân tích quá trình khai thác một quyền sudo tưởng như vô hại để leo thang đặc quyền lên root. Qua đó, chúng ta sẽ thấy tầm quan trọng của việc hiểu rõ hành vi của các lệnh hệ thống và quản lý chính sách sudo cẩn trọng hơn

![](https://www.shielder.com/img/blog/why_root.png align="center")

Một khi đã có được quyền Root thì những kẻ tấn công có thể dễ dàng

* Thao tác và điều khiển mọi tiến trình đang chạy trên hệ thống, không giới hạn user nào.
    
* Thay đổi cài đặt mạng, mở cổng, chạy các chương trình bắt gói tin, chỉnh iptables, spoof MAC/IP, v.v.
    
* Đôi khi là "khoe khoang" kỹ năng hack hoặc quyền kiểm soát hệ thống với bạn bè – vì root không chỉ là kỹ thuật, mà còn là phong cách.
    

## **Bối cảnh thực hiện**

Chúng tân cần hiểu `iptables` sẽ được lưu trữ cấu hình thông qua các công cụ:

* `iptables-save`: xuất toàn bộ cấu hình iptables hiện tại ra dạng text.
    
* `iptables-restore`: đọc file cấu hình và thiết lập lại toàn bộ iptables.
    

Câu hỏi đặt ra là: **liệu iptables có hỗ trợ việc thực thi mã tùy ý không?**

Câu trả lời là **gián tiếp có**, thông qua mô-đun `xtables-addons` hoặc thao tác với các thư viện hoặc file đặc biệt trong `/proc`. Tuy nhiên, con đường phổ biến và đơn giản hơn chính là **sử dụng** `iptables` để ghi đè file root hoặc tạo điều kiện thực thi mã tùy ý bằng cách kết hợp với `shell script`.

![](https://www.shielder.com/img/blog/fusion.jpeg align="center")

## **Cách khai thác**

Trong các chiến dịch được ghi nhận, các nhà phần tích đã tìm ra hai kỹ thuật khai thác chính để thực hiện leo thang đặc quyền lên root.

**Kỹ thuật 1: Ghi đè** `/etc/passwd` **thông qua** `iptables-save`

* Như đã đề cập bên trên, `iptables` cho phép thêm các bình luận vào quy tắc thông qua module `comment`. Khi sử dụng `iptables-save`, các bình luận này được ghi lại trong đầu ra. Bằng cách chèn một dòng giả mạo vào bình luận và ghi đè lên `/etc/passwd`, ta có thể tạo một người dùng `root` với mật khẩu do mình đặt.
    
* Ban đầu kẻ tấn công sẽ thực hiện tạo một mật khẩu mã hóa cho `root`. Kết quả thu được sẽ là một chuỗi mã hóa
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749182377750/39635247-7597-4e1e-8e41-63e40b0ad0f7.png align="center")
    
* Sau đó kẻ tấn công sẽ sử dụng chuỗi mã hóa vừa được tạo để triển khai dòng giả mạo cho `root` và thêm Rule với một Comment chứa dòng giả mạo trên.
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749182395222/ff906d77-49bf-4489-a0df-7d89e3111269.png align="center")
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749182406216/cefea9a5-6d3b-43ef-a30b-b4812ffe323e.png align="center")
    
* Tiếp theo kẻ tấn công sẽ sử dụng sudo để ghi đè file `/etc/passwd` bằng `iptables-save` và cuối cùng có thể đăng nhập với người dùng `root` mới tạo.
    
    ![](https://www.shielder.com/img/blog/iptables_passwd_overwrite.png align="left")
    

![](https://www.shielder.com/img/blog/iptables_privesc_successful.png align="center")

**Kỹ thuật 2: Thực thi lệnh tùy ý thông qua** `--modprobe`

* Khi `iptables` cần nạp một module kernel mà không có sẵn, nó sử dụng `modprobe` để tải module đó. Nếu có thể chỉ định chương trình `modprobe` tùy ý, ta có thể thực thi lệnh dưới quyền `root`.
    
* Ban đầu kẻ tấn công sẽ thực hiện tạo một script độc hại trên hệ thống
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749184287462/bdf74f60-2212-4562-b148-cb27a8cc9c3c.png align="center")
    
* Bước tiếp theo kẻ tấn công sẽ sử dụng `iptables` với `--modprobe` để trỏ đến script vừa được tạo như trên.
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749184485695/829c32a0-8315-4ae0-9714-fa35e7fd5897.png align="center")
    
* Và cuối cùng kẻ tấn công có thể thực thi Shell với quyền `root`
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749184576196/96a1db77-0778-404c-a076-dc0bb9d6ebfb.png align="center")

Khi đã hoàn tất quá trình leo thang đặc quyềm, kẻ tấn công sẽ thực hiện xóa bỏ dấu vết bằng cách xóa các rule `iptables` đã thêm cũng như xóa các file và script đã tạo trong quá trình khai thác.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749190414015/f74bbadb-3775-492b-bc8a-b79ed4500ad9.png align="center")

## **Kết luận**

Quyền `sudo` cho `iptables` tưởng chừng vô hại nhưng thực tế có thể bị khai thác dẫn tới chiếm quyền root trên hệ thống. Qua bài viết này, bạn đã thấy được:

* Cách tìm hiểu và phân tích quyền hạn sudo.
    
* Cách khai thác `iptables` để ghi file hoặc thực thi mã độc.
    
* Kỹ thuật leo thang đặc quyền trong thực tế.
    

Chính vì thế các tổ chức và người dùng hãy luôn kiểm tra kỹ quyền `sudo` và cấu hình hệ thống thật cẩn thận để tránh trở thành nạn nhân của các khai thác như vậy.

## **Khuyến nghị**

1. **Không cấp quyền** `sudo` **trực tiếp cho** `iptables`
    
    * **Xóa quyền** `sudo` đối với `iptables` trừ khi thực sự cần thiết.
        
    * Nếu bắt buộc, hãy sử dụng các giải pháp thay thế như:
        
        * **iptables wrapper script** (một script an toàn chỉ cho phép vài rule cơ bản).
            
        * Sử dụng `sudoers` kèm **option cụ thể** để giới hạn lệnh.
            
2. **Cấu hình** `sudoers` **đúng cách**
    
    * **Dùng** `NOEXEC` để chặn việc gọi shell từ chương trình:
        
        * Defaults!/sbin/iptables noexec
            
    * **Hạn chế đường dẫn thực thi (**`secure_path`):
        
        * Defaults secure\_path="/usr/sbin:/usr/bin:/sbin:/bin"
            
3. **Phân quyền hợp lý**
    
    * Đừng cấp quyền `ALL` nếu không cần thiết.
        
    * Chia role: user quản trị mạng chỉ có quyền mạng, không có quyền hệ thống.
        
    * Dùng sudo theo **nhóm** thay vì user cá nhân.
        
4. **Cập nhật hệ điều hành và kernel thường xuyên**
    
    * sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
        
    * sudo dnf update # RHEL/Fedora
        

## **Tham khảo**

1. [Shielder - A Journey From &lt;code&gt;sudo iptables&lt;/code&gt; To Local Privilege Escalation](https://www.shielder.com/blog/2024/09/a-journey-from-sudo-iptables-to-local-privilege-escalation/)
    
2. [Privilege Escalation on Unix – Lisandre](https://lisandre.com/archives/3142)
