[英]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將不可用。
使用setenforce 0
停止selinux stop可以解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.