2014-08-30 6 views
0

Set-UID 권한있는 프로그램을 테스트 중이며 프로그램이 자체 소유자 권한으로 실행되는 것처럼 보입니다. 예 : passwd는 루트 사용자에 속하므로 섀도 파일을 읽고 쓸 수 있습니다. 다른 프로그램에 대해 이와 같은 정보를 어떻게 찾을 수 있습니까?프로그램 소유자는 누구입니까?

답변

0

getuid(2), geteuid(2), getresuid(2) 및 해당 setuid(2), setreuid(2)을 적절하게 사용하십시오. capabilities(7)credentials(7) & 신중하게 execve(2)을 참조하십시오. proc(5)

읽고 Setuid 위키피디아를 읽으십시오. setuid 실행 파일을 실행하는 프로세스는 seteuid을 호출하여 권한을 얻을 수 있습니다.

+0

내 문제는 다음과 같습니다. Linux에서 Set-UID 쉘 프로그램을 실행하고 관찰 내용을 설명하고 설명합니다. (a) 루트로 로그인하고/bin/zsh를/tmp에 복사 한 다음 권한 4755로 set-root-uid 프로그램으로 만듭니다. 그런 다음 일반 사용자로 로그인하고/tmp/zsh를 실행합니다. 루트 권한을 얻을 수 있습니까? 관찰 내용을 설명해주십시오. 내가 루트로 이동하면 프로그램에 루트 권한이 있다는 것을 의미합니까? 하지만 그것을 증명할 방법을 찾고 있어요! –

+0

'루트 '라면 일반 사용자가 할 수없는'mkdir/hacked'와 같은 것을 할 수 있습니다. – tripleee

+1

'/ tmp' 파일 시스템은 종종 바이너리의 setuid 비트가 존중되지 않도록 마운트됩니다. 이러한 종류의 해킹을 정확하게 사용하지 못하게하는 보안 기능입니다. '마운트 | grep nosuid' – tripleee

0

실행 파일에 대한 사용자 ID (4755 모드) 권한을 설정하면이 파일을 실행하는 프로세스에 파일 소유자를 기반으로 액세스 권한이 부여됩니다.

이 경우 루트 사용자로/bin/zsh를 복사 한 다음 4755 모드를 설정하면/tmp/zsh가 사용자 권한이 아닌 파일을 실행할 사용자에게 루트 권한을 부여합니다.

이 특수 권한을 통해 사용자는 일반적으로 소유자 만 사용할 수있는 파일 및 디렉토리에 액세스 할 수 있습니다.

물어 보았습니까?

+0

제 시도는 다음과 같습니다 : 루트 사용자를 사용하여 파일 (zsh)을 복사했고 일반 사용자로 실행하려고했습니다. 그래서, 나는 명령 (이 예제에서는 passwd 명령)을 실행하는 프로그램을 수행했다. 내 생각에,이 명령이 루트로 실행 중이면 다른 사용자의 암호를 변경할 수 있습니다. 루트 사용자가이 작업을 수행 할 수 있으므로이 스크립트를 실행하는 일반 사용자로 수행 할 수 있다면 분명히 보안이 깨질 수 있습니다. 하지만 ... 할 길이 없어요. 루트 사용자를이 프로그램의 소유자로 만들려고했지만 루트 사용자가 아닌 일반 사용자로 제대로 실행할 수 없습니다. –