Unix / C: superando permissões de root como grupo

0

Eu tenho acesso a uma pasta como grupo (incluindo senha). Existem dois arquivos: file & segredo: estas são as permissões:

-rwsr-sr-x 1 root root 8.9K Apr 29 2016 file

-r--r--r-- 1 root root 944 Apr 28 2016 file.c

-rw------- 1 root root 33 May 14 22:31 secret

Eu devo obter o conteúdo do segredo. Parte do arquivo.c é o seguinte código:

{
    if(argc !=2){
        printf("%s [executable to run on the grid]\n",argv[0]);
        exit(0);
}

FILE *fp = fopen("key", "r");
if (getuid() == 0) {
    /* process is running as root, drop privileges */
    initgroups("filepointers",1003);
    if (setgid(1003) != 0)
        printf("setgid: Unable to drop group privileges:");
    if (setuid(1003) != 0)
        printf("setuid: Unable to drop user privileges:");
}

Depois disso, ele abre o segredo e os garfos + execls - deixei de fora algum código irrelevante.

if (pid ==0){
    int error = execl(argv[1],"command",NULL);
    if(error ==-1)
        perror("execl");
    }
exit(0);
}

Alguma ideia de como superar as permissões? Sudo seria a resposta lógica, mas desde que não está dentro de minhas permissões, não é uma opção. Eu acho que preciso fazer algo com setuid - mas não faço ideia de como. Qualquer dica seria apreciada. :)

    
por user8059680 25.05.2017 / 12:30

0 respostas