Có (tương thích) cách để spoof (như root) các unix socket (socket hệ thống tập tin)thông tin ngang hàng mà có thể thu được bằng cách getsockopt()
, tùy chọn SO_PEERCRED
?Ổ cắm UNIX: Có thể giả mạo getockopt() SO_PEERCRED không?
Bối cảnh:
tôi cần phải kết nối với một ứng dụng máy chủ (mà tôi không thể sửa đổi) mà kiểm tra UID
của quá trình này kết nối với nó qua SO_PEERCRED
. Tôi muốn giả mạo thông tin để có thể để kết nối với ứng dụng làm gốc, quá.
CẬP NHẬT
Để làm rõ các câu hỏi:
tôi đang tìm kiếm một cách không xâm lấn mà server thấy một peer cụ thể UID
/GID
. Solutions đang nản mà cần phải thay đổi kernel (hoặc mất việc sử dụng các module kernel) hoặc được thay đổi quá trình máy chủ hoặc nó tải/quá trình liên kết trong bất kỳ cách nào (LD_PRELOAD
, chặn cuộc gọi hệ thống vv).
Về cơ bản, giải pháp sẽ hoạt động khi chạy trên bất kỳ máy chủ Linux nào (hoặc unix nói chung) mà không có bất kỳ yêu cầu đặc biệt nào. Quá trình máy chủ có thể đang chạy.
Nếu bạn là 'root', tại sao không chỉ' setuid'? Bạn có thể làm điều đó từ một quy trình con được kiểm soát hoàn toàn để bạn có thể tránh thực sự mất đặc quyền. – nneonneo
Tôi không chắc chắn, nhưng dưới Linux có một giá trị bát phân được đặt trước cờ trong '/ proc//fdinfo/'. –
alk
Bạn có thể kiểm soát sự bắt đầu của quá trình máy chủ, tức là, bạn có thể sử dụng LD_PRELOAD để sửa đổi hàm thư viện/syscall thunk để thay đổi thông tin đăng nhập được báo cáo không? –