Ducker

Trở về

AlfredBlur image

Truy cập ban đầu#

Sử dụng công cụ nmap mình phát hiện 3 port TCP đang mở, trong đó có 2 port đang chạy dịch vụ web.

Đối với port 80, kiểm tra sơ qua thì mình không tìm thấy gì đặc biệt.

img

Tại port 8080 xuất hiện một trang đăng nhập, kiểm tra sơ bộ thì không có lỗ hổng gì nên mình sử dụng Burp Suite để brute force tài khoản.

img

Các request có thông tin đăng nhập sai sẽ được chuyển hướng đến /loginError nên mình sẽ thêm xử lý để phân biệt giữa request đăng nhập không thành công và đăng nhập thành công.

img

Các thành phần mình thực hiện brute force như sau:

Khi brute force sẽ có một request không chuyển hướng đến /loginError mà chuyển hướng đến / và đây cũng là usernamepassword hợp lệ.

img

Dùng nó để đăng nhập thì mình được chuyển hướng đến dashboard của admin.

img

Khám phá một xíu thì mình phát hiện bên trong có một trang cho phép thực thi lệnh trên hệ thống và trả kết quả.

img

Mình thực thi lệnh sau để mở reverse shell, lệnh này có 2 nhiệm vụ:

  • Đầu tiên kết nối đến Simple HTTP Server của mình và tải script thực hiện kết nối ngược (reverse shell) về máy mình.
  • Tiếp theo thực thi script đó và bắt đầu kết nối.

img

Simple HTTP Server mình mở tại port 6565 khi thực thi lệnh sẽ thấy script đã được tải.

img

Đồng thời khi tải xong, tại netcat mình đang mở listener ở port 7304 cũng đã thực hiện kết nối thành công và mình đã chiếm được quyền truy cập ban đầu ở người dùng bruce.

img

Flag được đặt tại thư mục Desktop của người dùng này.

img

Chuyển đổi shell#

Để có thể linh hoạt hơn khi sử dụng shell, thay vì dùng raw shell mình sẽ sử dụng Metasploit để nâng cấp lên meterpreter shell.

Lệnh mà mình sẽ thực thi trên web sẽ tải về một file độc hại từ máy mình.

img

Trước đó, mình sử dụng msfvenom tạo một file độc hại sử dụng để kết nối ngược về máy mình và nâng cấp lên meterpreter shell.

img

Khi server web thực thi và tải về file độc hại mà mình đã tạo, mình sẽ tạo một listener bằng công cụ msfconsole với module exploit/multi/handler kèm payload windows/meterpreter/reverse_tcp.

img

Mọi thứ đã chuẩn bị xong, mình quay trở lại session netcat lúc nãy và chạy file rv-shell.exe (Start-Process rv-shell.exe) mà server đã tải về.

Khi file này được thực thi, một reverse shell đã kết nối thành công và được nâng cấp lên meterpreter shell.

img

Leo thang đặc Quyền#

Bây giờ, mình sẽ dùng kỹ thuật mạo danh token để chiếm quyền SYSTEM.

Windows sử dụng các token để đảm bảo các tài khoản có đúng quyền để thực hiện các hành động cụ thể. Token thường được gán cho tài khoản khi người dùng đăng nhập hoặc được xác thực. Điều này thường được thực hiện bởi lsass.exe.

Access token này bao gồm:

  • User SIDs (Security Identifier).
  • Group SIDs
  • Đặc quyền

Đọc thêm tại đây

Có 2 loại access token:

  • Primary access tokens: được liên kết với tài khoản người dùng và được tạo khi đăng nhập.
  • Impersonation tokens: cho phép một tiến trình cụ thể (hoặc luồng trong tiến trình) có quyền truy cập vào các tài nguyên bằng cách sử dụng token của người dùng khác.

Đối với impersonation token, có nhiều cấp độ khác nhau:

  • SecurityAnonymous: người dùng hiện tại không thể mạo danh người dùng khác.
  • SecurityIdentification: người dùng hiện tại có thể lấy danh tính và đặc quyền của người dùng khác nhưng không thể mạo danh.
  • SecurityImpersonation: người dùng có thể mạo danh bối cảnh bảo mật trên hệ thống cục bộ (local system).
  • SecurityDelegation: người dùng có thể mạo danh bối cảnh bảo mật trên hệ thống từ xa (remote system).

Các đặc quyền của một tài khoản (được cấp cho tài khoản khi được tạo hoặc kế thừa từ một nhóm) cho phép người dùng thực hiện các hành động cụ thể. Một số đặc quyền bị làm dụng phổ biến nhất:

  • SeImpersonatePrivilege
  • SeAssignPrimaryPrivilege
  • SeTcbPrivilege
  • SeBackupPrivilege
  • SeRestorePrivilege
  • SeCreateTokenPrivilege
  • SeLoadDriverPrivilege
  • SeTakeOwnershipPrivilege
  • SeDebugPrivilege

Đọc thêm tại đây

Sử dụng lệnh whoami /priv mình nhận được một số đặc quyền đang được cho phép như:

  • SeDebugPrivilege
  • SeChangeNotifyPrivilege
  • SeImpersonatePrivilege
  • SeCreateGlobalPrivilege

img

Sử dụng module incognito để khai thác lỗ hổng này.

Mình liệt kê các tokens hiện có thì phát hiện token BUILTIN\Administrators.

img

Sau đó mình thực hiện mạo danh token này và chiếm được quyền SYSTEM.

img

Flag sẽ nằm tại c:\Windows\System32\config\

img