2012-06-17 3 views
0

가능한 중복 :
How to programmatically gain root privileges?요청 루트 액세스 프로그램

리눅스를 통해 C에서 사용자 프로그래밍 루트 액세스를 요청하는 방법은 없나요?

원시 소켓을 사용하고 있으므로 루트 액세스가 필요합니다.

+0

죄송합니다. 찾을 수 없습니다. –

+0

7 개의 질문이 있고 [수락 대답]이 없습니다 (http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work)? 안좋다. – glglgl

답변

1

관용적 인 방법은 프로그램을 suid-root로 만들고, 처음 두 줄의 main이 원시 소켓을 열고 루트를 버리는 것입니다.

이 이후, 보안 관점에서 이상적 여전히 작 :

  1. 나중에 아마도, 많은 악의적 인 목적으로 사용될 수있는 원시 소켓에 공격자가 액세스를 제공 할 프로그램의 타협 권한 상승을위한 충분한 정보 획득.

  2. 모든 suid-root 바이너리는 main 이전에 실행되는 동적 링커 또는 시작 코드의 결함으로 인해 취약 할 수 있습니다. 이들이 점점 희귀 해지는 동안, 작년에도 glibc의 링커에서 LD_AUDIT을 사용하여 다시 발견되었습니다. 많은 보안 의식이있는 시스템 (예 : Openwall Linux)은 suid-root 바이너리를 완전히 금지합니다.

더 안전한하지만 더 복잡한 방식이 될이 프로그램은 높은 (하지만 여전히 최소한의) 권한이있는 데몬으로 실행하고 CLI 인터페이스는 유닉스를 통해 데몬과 통신 단지 사소한 래퍼 수있을 것으로 소켓을 사용하여 취약성을 기계적으로 검사 할 수 있습니다.