Czy istnieje (kompatybilne) sposobem fałszywej (jako root) w gniazda Unix (gniazd File System)poświadczeń rówieśnicze, który można otrzymać przez getsockopt()
opcja SO_PEERCRED
?Gniazda UNIX: czy można sfałszować getsockopt() SO_PEERCRED?
Tło:
muszę podłączyć do serwera aplikacji (których nie można modyfikować), który sprawdza UID
procesu, który łączy się z nim za pośrednictwem SO_PEERCRED
. Chciałbym sfałszować informacje, aby móc podłączyć do aplikacji jako root, również.
UPDATE
wyjaśnić kwestię:
Szukam nieinwazyjny sposób, że serwer widzi konkretnej sieci peer UID
/GID
. Rozwiązania są zniechęcony które trzeba zmienić jądra (lub wziąć użycie modułów jądra) lub które zmienia proces serwera lub jego załadunku/proces łączenie w jakikolwiek sposób (LD_PRELOAD
, przechwyceniu wywołania systemowego itd.).
Zasadniczo rozwiązanie powinno działać, gdy działa na dowolnym serwerze Linux (lub unixie w ogóle) bez żadnych specjalnych wymagań. Proces serwera może już być uruchomiony.
Jeśli jesteś "root", dlaczego nie po prostu "setuid"? Możesz to zrobić z całkowicie kontrolowanego procesu potomnego, aby uniknąć utraty przywileju. – nneonneo
Nie jestem pewien, ale pod Linuksem jest ustawiona liczba ósemkowa z flagami w '/ proc//fdinfo/'. –
alk
Czy można kontrolować uruchamianie procesu serwera, tj. Czy można użyć LD_PRELOAD do zmodyfikowania funkcji biblioteki/sashcunk thunk w celu zmiany poświadczonych poświadczeń? –