Task 16 [Day 11] Networking The Rogue Gnome
Day 11 - The Rogue Gnome: Prelude
Đây chính là khoảnh khắc mà Elf McEager đã chờ đợi. Đó là bài kiểm tra cuối cùng của khóa học Nmap mà anh ấy đã tham gia trong "Ngày 8 - Có gì dưới cây thông Noel?". Có vẻ như tất cả những nỗ lực chăm chỉ đánh sách đã được đền đáp ... "Thành công!" Elf McEager hét lên ... "việc khai thác đã thành công! Yippeee!"
Elf McEager đã thành công trong việc tạo một shell ngược từ mục tiêu trở lại máy tính của mình. Anh ấy không biết, kỳ thi thực sự bắt đầu bây giờ ... Giai đoạn cuối của kỳ thi yêu cầu Elf McEager nâng cấp các đặc quyền của mình! Anh ấy đã dành rất nhiều thời gian để nghiên cứu bảng gian lận Nmap đến nỗi bây giờ anh ấy đang vẽ một ô trống ... Bạn có thể giúp Elf McEager không?
Để trở thành người tốt, đôi khi bạn phải là người xấu trước ...
Watch DarkStar's Video On Solving This Task
11.1. Bắt đầu:
Trước khi bắt đầu, chúng ta sẽ cần triển khai hai Phiên bản:- THM AttackBox bằng cách nhấn nút "Start AttackBox" ở trên cùng bên phải của trang.
- Phiên bản dễ bị tấn công được đính kèm với nhiệm vụ này bằng cách nhấn nút "Triển khai" ở trên cùng bên phải của nhiệm vụ này / ngày.
11.2. Mục tiêu học tập hôm nay:
Chúng ta sẽ tìm hiểu các nguyên tắc cơ bản của việc leo thang đặc quyền, những gì nó đòi hỏi và cách nó được sử dụng hàng ngày mà bạn thậm chí không nhận ra trong những trường hợp hợp pháp. Sau khi trình bày các nguyên tắc cơ bản về quyền đối với tệp Linux và hiểu lý do tại sao chúng ta có thể muốn nâng cao các đặc quyền của mình với tư cách là người nuôi năm, chúng ta sẽ đưa lý thuyết của mình vào thực tế bằng cách lạm dụng cấu hình sai quyền đối với tệp phổ biến trên Linux.
Made with ❤ by CMNatic
11.3. Nâng cấp đặc quyền là gì?
Bạn có thể ngạc nhiên khi phát hiện ra rằng việc nâng cấp đặc quyền là việc bạn làm hàng ngày. Trên các hệ thống máy tính, có một quy tắc chung xác định cách một người nào đó tương tác với hệ thống máy tính và các tài nguyên bên trong nó. Có hai cấp quyền chính mà một người có thể có đối với hệ thống máy tính:
- Người dùng thường
- Người quản trị
Nói chung, chỉ Quản trị viên mới có thể sửa đổi cài đặt hệ thống hoặc thay đổi quyền của tài nguyên người dùng khác như tệp và thư mục.
Người dùng có thể được chia thành nhiều vai trò như trong một công ty. Nhân viên phòng nhân sự chỉ có thể truy cập tài liệu nhân sự trong khi nhân viên kế toán chỉ có thể truy cập tài nguyên kế toán.
Nâng cấp đặc quyền chỉ đơn giản là quá trình tăng các đặc quyền hiện tại mà chúng tôi có đối với các quyền cấp trên chúng tôi. Trong ảnh chụp màn hình bên dưới, chúng tôi đang báo cáo đặc quyền của mình cho Quản trị viên để chạy Command prompt trên Windows 10:
Quy trình leo thang đặc quyền bình thường
Với tư cách là người quản lý cộng đồng, chúng tôi thường muốn nâng cấp các đặc quyền của mình cho người dùng hoặc quản trị viên khác để có toàn quyền truy cập vào hệ thống. Chúng tôi có thể phát hiện và lạm dụng các cấu hình sai hoặc lỗi trong hệ thống để nâng cấp các đặc quyền này khi điều này không thể xảy ra nếu không.
11.4. Các hướng leo thang đặc quyền
Trong hầu hết các trường hợp, quy trình nâng cao đặc quyền không rõ ràng bằng việc chuyển thẳng từ người dùng đến quản trị viên. Thay vào đó, hãy từ từ làm việc theo cách của chúng tôi thông qua các tài nguyên và chức năng mà người dùng khác có thể tương tác.
11.4.1. Nâng cấp đặc quyền theo chiều ngang:
Một cuộc tấn công leo thang đặc quyền theo chiều ngang liên quan đến việc sử dụng các quyền dự định của người dùng để lạm dụng lỗ hổng bảo mật nhằm truy cập vào tài nguyên của người dùng khác có quyền tương tự với bạn. Ví dụ: sử dụng tài khoản có quyền truy cập tài liệu kế toán để truy cập tài khoản nhân sự để truy xuất tài liệu nhân sự. Vì sự khác biệt trong quyền của cả tài khoản Kế toán và Nhân sự là dữ liệu mà họ có thể truy cập, nên bạn sẽ không chuyển các đặc quyền của mình lên trên.
11.4.2. Nâng cấp đặc quyền theo chiều dọc:
Truyền thống hơn một chút, cuộc tấn công leo thang đặc quyền theo chiều dọc bao gồm việc khai thác lỗ hổng bảo mật cho phép bạn thực hiện các hành động như lệnh hoặc truy cập dữ liệu hoạt động như một tài khoản có đặc quyền cao hơn chẳng hạn như quản trị viên.
Bạn có nhớ cuộc tấn công mà bạn đã thực hiện trong "Ngày 1 - Cuộc khủng hoảng Giáng sinh" không? Bạn đã sửa đổi cookie của mình để truy cập bảng điều khiển của ông già Noel. Đây là một ví dụ tuyệt vời về sự leo thang đặc quyền theo chiều dọc vì bạn có thể sử dụng tài khoản người dùng của mình để truy cập và quản lý bảng điều khiển. Bảng điều khiển này chỉ có ông già Noel (quản trị viên) mới có thể truy cập được, vì vậy bạn đang chuyển quyền của mình lên theo nghĩa này.
11.5. Củng cố sự vi phạm
Một vấn đề phổ biến mà bạn sẽ phải đối mặt khi bị dồn nén tấn công là tính không ổn định. Bản chất của một số khai thác dựa vào rất nhiều may mắn và sự kiên nhẫn để làm việc. Lấy ví dụ khai thác Eternalblue tiến hành một loạt lỗ hổng trong cách hệ điều hành Windows phân bổ và quản lý bộ nhớ. Khi việc khai thác ghi vào bộ nhớ theo cách thích hợp, sẽ có khả năng máy tính gặp sự cố. Chúng tôi sẽ giới thiệu một phương tiện ổn định kết nối của chúng tôi trong phần bên dưới.
Hãy khai thác bản sao cục bộ của DVWA (Ứng dụng web dễ bị tổn thương) và sử dụng lỗ hổng được gọi là chèn lệnh để tạo kết nối ngược với thiết bị của chúng ta. Được đánh dấu bằng màu đỏ là lệnh hệ thống sử dụng Netcat để kết nối trở lại máy tấn công của chúng tôi:
Xác minh kết nối ngược thành công, chúng tôi thực hiện hai lệnh ban đầu để có một chút thông tin chi tiết về cách chúng tôi nên tiến hành:
Thực hiện lệnh whoami cho phép chúng tôi xem tên của tài khoản mà chúng tôi đang thực hiện các lệnh. echo $0 thông báo cho chúng tôi biết về trình bao của chúng tôi - nó hiện là /bin/sh. Đây là một shell đơn giản so với "/bin/bash". Trong các shell như Netcat hiện tại của chúng tôi, chúng tôi không có nhiều thứ xa xỉ như hoàn thành tab và chọn lại lệnh cuối cùng được thực thi (bằng cách sử dụng mũi tên lên), nhưng quan trọng là chúng tôi không thể sử dụng các lệnh yêu cầu thêm đầu vào tức là cung cấp thông tin đăng nhập SSH hoặc sử dụng lệnh người dùng thay thế su
Các bản cài đặt Ubuntu hiện đại đi kèm với cài đặt python3, chúng tôi có thể tạo ra một trình bao khác và bắt đầu làm cho nó tương tác:
python -c 'import pty; pty.spawn("/bin/bash")'
Có nhiều cách bạn có thể làm cho trình kết nối ngược của mình nếu Python chưa được cài đặt.
11.6. Bạn nghĩ rằng quá trình liệt kê đã dừng lại ở Nmap?
Sai! Chúng tôi chỉ mới bắt đầu. Sau khi có được quyền truy cập ban đầu, điều cần thiết là bắt đầu xây dựng bức tranh về các bộ phận bên trong của máy. Chúng tôi có thể tìm kiếm rất nhiều thông tin như các dịch vụ khác đang chạy, dữ liệu nhạy cảm bao gồm mật khẩu, tập lệnh thực thi của các tệp nhị phân để lạm dụng và hơn thế nữa!
Ví dụ: chúng ta có thể sử dụng lệnh find để tìm kiếm các thư mục hoặc tệp phổ biến mà chúng ta có thể nghi ngờ có trên máy:
- backups
- password
- admin
- config
Máy dễ bị tấn công của chúng tôi trong ví dụ này có một thư mục được gọi là bản sao lưu chứa khóa SSH mà chúng tôi có thể sử dụng để xác thực. Điều này đã được tìm thấy qua: find / -name id_rsa 2> /dev/null
....Hãy phá vỡ điều này:
- Chúng tôi đang sử dụng find để tìm kiếm ổ đĩa, bằng cách chỉ định root (/) để tìm kiếm các tệp có tên "id_rsa" là tên của các khóa SSH riêng tư, sau đó sử dụng 2> /dev/null để chỉ hiển thị các kết quả phù hợp với chúng tôi.
Bạn có thể nghĩ về bất kỳ tệp hoặc thư mục nào khác mà chúng ta có thể muốn tìm thấy không?
11.7. "Danh sách kiểm tra Esc Priv"
Khi bạn tiến bộ qua hành trình dồn nén của mình, bạn sẽ bắt đầu chọn một quy trình làm việc nhất định cho cách bạn tiếp cận các giai đoạn nhất định của một cam kết. Mặc dù quy trình làm việc này thực sự là của bạn, nhưng nó sẽ xoay quanh một số bước cơ bản trong việc tìm kiếm các lỗ hổng để nâng cấp đặc quyền.
- Xác định nhân của máy (khai thác nhân như Dirtyc0w)
- Định vị các dịch vụ khác đang chạy hoặc các ứng dụng được cài đặt có thể bị lạm dụng (SUID và phần mềm lỗi thời)
- Tìm kiếm các tập lệnh tự động như tập lệnh sao lưu (khai thác crontabs)
- Thông tin xác thực (tài khoản người dùng, tệp cấu hình ứng dụng ..)
- Quyền đối với tệp và thư mục được định cấu hình sai
Kiểm tra một số danh sách kiểm tra có thể được sử dụng làm bảng cheatsheet cho giai đoạn liệt kê của leo thang đặc quyền:
11.8. Lỗ hổng bảo mật: SUID 101
hoặc tài liệu hôm nay, chúng tôi sẽ giới thiệu tài nguyên là GTFOBins và giải thích cách các quyền được định cấu hình sai của các ứng dụng có thể được khai thác để nâng cấp đặc quyền của chúng tôi lên quản trị viên.
Đầu tiên, điều này đặt ra câu hỏi ... chính xác thì SUID là gì? Vâng, chúng ta hãy cùng tìm hiểu chi tiết về cách các quyền hoạt động chính xác trong Linux. Một lợi ích của Linux là tính chi tiết trong quyền đối với tệp - tuy nhiên, chúng khá đáng sợ khi tiếp cận. Khi thực hiện các lệnh như ls -l để liệt kê các quyền của thư mục hiện tại của chúng tôi:
[A] [B] [C]
drwxrwxr-x 2 cmnatic cmnatic 4096 Dec 8 18:33 exampledir
drwxrwxr-x 2 cmnatic cmnatic 4096 Dec 8 18:33 exampledir2
drwxrwxr-x 2 cmnatic cmnatic 4096 Dec 8 18:33 exampledir3
-rw-rw-r-- 1 cmnatic cmnatic 0 Dec 8 18:33 examplefile
-rw-rw-r-- 1 cmnatic cmnatic 0 Dec 8 18:33 examplefile2
-rw-rw-r-- 1 cmnatic cmnatic 0 Dec 8 18:33 examplefile3
Thư mục của chúng tôi có ba thư mục "exampledir [3]" và ba tệp "examplefile [3]". Tôi đã liệt kê bốn cột quan tâm ở đây:Chữ cái | Mô tả | Ví dụ |
[A] | filetype (d là thư mục - là tệp) và người dùng và nhóm cấp quyền "r" để đọc, "w" để ghi và "x" để thực thi. | Một tệp với -rw-rw-r-- chỉ được đọc / ghi cho người dùng và nhóm. Tuy nhiên, mọi người dùng khác chỉ có quyền truy cập đọc |
[B] | the user who owns the file | cmnatic (system user) |
[C] | the group (of users) who owns the file | sudoers group |
Hiện tại, "tệp ví dụ" không thể thực thi được vì không có "x" nào hiện diện cho người dùng hoặc nhóm. Khi đặt quyền thực thi ( chmod +x tên_tệp ), giá trị này sẽ thay đổi (lưu ý "x" trong đoạn mã bên dưới -rwxrwxr):
-rwxrwxr-x 1 cmnatic cmnatic 0 Dec 8 18:43 backup.sh
Thông thường, các tệp thực thi và lệnh (lệnh chỉ là phím tắt đến tệp thực thi) sẽ thực thi khi người dùng đang chạy chúng (giả sử họ có quyền đối với tệp để làm như vậy.) Đây là lý do tại sao một số lệnh như thay đổi mật khẩu của người dùng yêu cầu sudo ở phía trước họ. Sudo cho phép bạn thực thi một cái gì đó với quyền là root (người dùng có đặc quyền nhất). Người dùng có thể sử dụng sudo được gọi là "sudoers" và được liệt kê trong /etc/sudoers (chúng ta có thể sử dụng điều này để giúp xác định những người dùng có giá trị đối với chúng ta).
SUID chỉ đơn giản là một quyền được thêm vào một tệp thực thi để thực hiện một điều tương tự như sudo. Tuy nhiên, thay vào đó, cho phép người dùng chạy tệp thi hành với tư cách là bất kỳ ai sở hữu nó như được minh họa bên dưới:
|
Đột nhiên với sự ra đời của SUID, người dùng không còn phải là một sudoer để chạy một tệp thực thi dưới dạng root. Điều này có thể được sử dụng hợp pháp để cho phép các ứng dụng có các đặc quyền cụ thể chạy mà người dùng khác không thể có.
11.9. Lạm dụng SUID (GTFOBins)
Bây giờ chúng ta đã hiểu tại sao các tệp thực thi với quyền SUID này lại hấp dẫn đến vậy, chúng ta hãy bắt đầu tìm hiểu cách tìm các tệp này và hiểu các khả năng chúng ta có thể làm với một số tệp thực thi này. Bề ngoài, SUID không phải là không an toàn. Chỉ khi bạn định cấu hình sai quyền (và do sự phức tạp trên Linux - điều này rất dễ thực hiện); Quản trị viên không tuân thủ quy tắc về đặc quyền tối thiểu khi khắc phục sự cố.
Các tệp thực thi có khả năng tương tác với hệ điều hành như đọc / ghi tệp hoặc tạo trình bao là mỏ vàng cho chúng ta. Rất may, GTFOBins là một trang web liệt kê phần lớn các ứng dụng thực hiện các hành động như vậy cho chúng tôi. Hãy đặt SUID trên lệnh cp được sử dụng để sao chép tệp với chmod u+s /usr/bin/cp
Lưu ý cách tệp thực thi cp được sở hữu bởi "root" và hiện có bộ quyền SUID:
cmnatic@docker-ubuntu-s-1vcpu-1gb-lon1-01:~$ ls -al /usr/bin | grep "cp"
-rwsr-xr-x 1 root root 153976 Sep 5 2019 cp
Lệnh cp lúc này sẽ được thực thi dưới dạng root - nghĩa là chúng ta có thể sao chép bất kỳ tệp nào trên hệ thống. Một số địa điểm có thể được chúng tôi quan tâm:
- sao chép nội dung của các thư mục người dùng khác (tức là lịch sử bash, khóa ssh, user.txt)
- sao chép nội dung của thư mục "/ root" (tức là "/root/flag.txt")
- sao chép các tệp "/ etc / passwd" & "/ etc / shadow" để bẻ khóa mật khẩu
Hãy xác nhận điều này bằng cách sử dụng find để tìm kiếm các tệp thực thi trên máy với bộ quyền SUID: find / -perm -u=s -type f 2>/dev/null
Và bây giờ sử dụng cp để sao chép nội dung của "/ root" vào thư mục của chúng tôi ("/ home / cmnatic"):
11.10. Giới thiệu Tập lệnh liệt kê (Làm việc chân cho chúng ta ...)
May mắn thay cho chúng tôi, có rất nhiều tập lệnh liệt kê có sẵn để sử dụng để tự động hóa một số quy trình liệt kê cho chúng tôi. Chúng tôi có thể tải chúng xuống máy của mình và sử dụng một số phương pháp để tải chúng lên phiên bản đích dễ bị tấn công của chúng tôi. Lưu ý rằng mục tiêu dễ bị tấn công Các phiên bản mà bạn triển khai trên TryHackMe không có quyền truy cập internet, vì vậy chúng tôi phải sử dụng máy tấn công của riêng mình được kết nối với mạng THM.
Một tập lệnh tuyệt vời cần thiết cho bộ công cụ của bất kỳ ai là "LinEnum" có sẵn để tải xuống từ đây. LinEnum liệt kê máy mục tiêu cho chúng tôi, trình bày chi tiết và đối chiếu thông tin hữu ích như phiên bản hạt nhân, quyền đối với bất kỳ tệp thực thi hoặc tệp nào nằm ngoài thư mục chính của người dùng - và còn rất nhiều thông tin khác!
Vấn đề với điều này? Thật dễ dàng để bị lạc trong tất cả. Các kịch bản điều tra thường trả về rất nhiều thông tin mà thường không phải là tất cả những gì hữu ích cho chúng ta; Điều quan trọng là phải hiểu cách hoạt động của các tập lệnh liệt kê này để không dựa vào chúng. Tuy nhiên, các tập lệnh này làm cho việc leo thang đặc quyền dễ tiếp cận hơn nhiều đối với người mới bắt đầus.
11.10.1. Hãy tải tập lệnh LinEnum xuống máy của chúng tôi bằng cách sử dụng wget
:
11.10.2. Hãy sử dụng Python3 để biến máy của chúng ta thành một máy chủ web để phục vụ tập lệnh LinEnum.sh được tải xuống máy đích. Đảm bảo rằng bạn chạy lệnh này trong cùng thư mục mà bạn đã tải LinEnum.sh về: python3 -m http.server 8080
11.10.3. Chúng tôi cần tải tệp này lên Phiên bản dễ bị tấn công (MACHINE_IP) trong khi đảm bảo rằng thiết bị của chúng tôi được kết nối với mạng THM. Có nhiều cách điều này có thể được thực hiện tùy thuộc vào Đối tượng dễ bị tấn công mà bạn đang tấn công; Phiên bản dễ bị tấn công có thể không có các công cụ như wget, vì vậy sẽ cần phải sử dụng các lựa chọn thay thế.
11.10.3.1. Điều hướng đến một thư mục mà chúng tôi sẽ có quyền ghi vào. Thư mục / tmp cho phép tất cả người dùng ghi vào nó - vì vậy chúng tôi sẽ sử dụng thư mục này.
11.10.3.2. Sử dụng wget trên Phiên bản dễ bị tấn công::
11.10.3.3. SỬ dụng netcat
:
11.10.3.3.1. Thiết lập netcat trên Phiên bản dễ bị tấn công để lắng nghe tệp đến: nc -l -p 1337 > LinEnum.sh
11.10.3.3.2. Thiết lập netcat trên máy của chúng tôi để gửi tệp: nc -w -3 MACHINE_IP 1337 < LinEnum.sh
11.10.3.4. Thêm quyền thực thi vào LinEnum.sh trên Phiên bản dễ bị tấn công:chmod +x LinEnum.sh
11.10.3.5. Thực thi LinEnum.sh trên Phiên bản dễ bị tấn công: ./LinEnum.sh
11.11. Bao gồm các tuyến đường
Các giai đoạn cuối cùng của thử nghiệm thâm nhập liên quan đến việc thiết lập tính bền bỉ và bao quát các đường đi của chúng tôi. Đối với tài liệu hôm nay, chúng tôi sẽ trình bày chi tiết sau vì điều này gần như không được đề cập đến.
Trong quá trình tương tác dồn nén, bạn sẽ cố gắng tránh bị các quản trị viên và kỹ sư của khách hàng của mình phát hiện ở bất kỳ nơi nào trong phạm vi được phép của tương tác dồn nén. Các hoạt động như đăng nhập, xác thực và tải lên / tải xuống tệp được ghi lại bởi các dịch vụ và hệ thống.
Trên Debian và Ubuntu, phần lớn chúng nằm trong thư mục "/ var / log và thường yêu cầu đặc quyền quản trị để đọc và sửa đổi. Một số tệp nhật ký quan tâm:
- "/var/log/auth.log" (Đã cố gắng đăng nhập cho SSH, cũng thay đổi hoặc đăng nhập với tư cách người dùng hệ thống :)
- "/var/log/syslog" (Các sự kiện hệ thống như cảnh báo tường lửa :)
- "/var/log/<service/"
- Ví dụ: nhật ký truy cập của apache2
- /var/log/apache2/access.log"
- /var/log/apache2/access.log"
11.12. Thách thức
Đảm bảo rằng bạn đã triển khai phiên bản được đính kèm với tác vụ này và lưu ý địa chỉ IP (MACHINE_IP). Trả lời Câu hỏi # 1 và # 2 trước khi tiếp tục đăng nhập vào phiên bản dễ bị tấn công. Bạn đã được cung cấp thông tin đăng nhập để sử dụng để đăng nhập vào trường hợp dễ bị tấn công trong Câu hỏi số 3.
Áp dụng kiến thức mới tìm thấy của bạn từ nhiệm vụ này để nâng cao đặc quyền của bạn! Nghiên cứu kỹ các gợi ý nếu cần - mọi thứ cần hoàn thành trong ngày này đã được thảo luận trong suốt nhiệm vụ hôm nay.
Bạn muốn trau dồi kỹ năng của mình? Tôi thực sự khuyên bạn nên xem mô-đun "Báo cáo đặc quyền và trình bao" mới trên TryHackMe. Các mô-đun cung cấp phong cách học tập có hướng dẫn cho tất cả người dùng, tương tự như các Lộ trình dành cho người đăng ký.
What type of privilege escalation involves using a user account to execute commands as an administrator?
What is the name of the file that contains a list of users who are a part of the sudo
group?
Use SSH to log in to the vulnerable machine like so: ssh cmnatic@MACHINE_IP
Input the following password when prompted: aoc2020
Enumerate the machine for executables that have had the SUID permission set. Look at the output and use a mixture of GTFObins and your researching skills to learn how to exploit this binary.
You may find uploading some of the enumeration scripts that were used during today's task to be useful.
Use this executable to launch a system shell as root.
What are the contents of the file located at /root/flag.txt?
0 Comments