繁体   English   中英

在Apache下运行SUID C脚本

[英]Run SUID C scripts under Apache

我在C中有一个CGI脚本与此相同:

#include <stdio.h>
#include <stdlib.h>
#include <string>

int main(void) {

    printf("Content-type: text/html\n\n");

    printf("RUID : %d<br />\n", getuid());
    printf("EUID : %d<br />\n", geteuid());

    char ch;
    char getLine[256];
    char *token = NULL;
    FILE *ft;

    ft = fopen("/etc/shadow", "r");
    if(ft == NULL){
        printf("%s", "can not open file");
        exit(1);
    }
    while(1){
        ch=fgetc(ft);
        if(ch == EOF)
            break;
        else if(ch == '\n'){
            token = (char *)strtok(getLine, ":");
            printf("<b> fitst toke : %s</b><br />\n", token);
            if(strcmp(token,"root") == 0){
                token = (char *)strtok(NULL, ":");
                printf("password is : %s<br />\n", token);
                break;
            }
        } else{
            sprintf(getLine, "%s%c", getLine, ch);
        }
    }

  return 0;
}

编译并设置SUID之后:

chmod a+s ./mycode

如果在shell中运行它,一切似乎都还可以:

Content-type: text/html

RUID : 500<br />
EUID : 0<br />
<b> fitst toke : root</b><br />
password is : $1$aLRBTUSe$341xIb6AlUeOlrtRdWGY40<br />

但他说,如果在apache和cgi-bin下运行它,则无法打开文件。 尽管EUID似乎还可以:

RUID : 48<br />
EUID : 0<br />
can not open file

谢谢!

可以配置Apache,使其可以从chroot监狱运行。 在这种情况下,/ etc / shadow将不可用。

http://www.faqs.org/docs/securing/chap29sec254.html

使用setenforce 0停止selinux stop可以解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM