C:通过支持此程序升级Linux中的权限

时间:2016-02-23 18:53:02

标签: c privilege-elevation

此计划的漏洞是什么?

我目前陷入黑客攻击,不知道该怎么做!

您如何看待'路径'手段?因为我认为这很重要。

#include <fcntl.h>
#include <limits.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(int argc, char *argv[])
{
  char buf[1024], path[PATH_MAX + 1];
  int fd, i;

  strcpy(path, getpwuid(getuid())->pw_dir);
  strcat(path, "/script.sh");

  strcpy(buf, "#!/bin/bash\necho Hello.\ndate\nrm \"$0\"\n");

  umask(0);
  if ((fd = open(path, O_CREAT | O_EXCL | O_WRONLY, 02760)) < 0) {
        perror("open");
        return 1;
  }
  write(fd, buf, strlen(buf));  
  close(fd);

  printf("please wait for us to run your script");  
  fflush(stdout);
  for (i = 0; i < 5; i++) {
        printf(".");
        fflush(stdout);
        sleep(1);
  }
  printf(" starting script\n");

  execl("/bin/sh", "/bin/sh", path, (char *) 0); 
  perror("execl");
  return 0;
}

1 个答案:

答案 0 :(得分:1)

好。

该程序编写一个脚本,稍后使用该用户的权限执行该脚本。

umask(0)系统调用实际上使该文件成为世界可写的(隐含地 - 开放调用使其成为可写组 - 感谢Daniel Jour指出这一点 - 但是如果第一个命令是你的组中的任何人都会注入该文件将是一个chmod,它可以升级)。

正如评论中指出的那样,来自您小组的任何人都能够通过简单地将所有命令写入该命名文件,以用户的权限注入他想要执行的任何内容,并代表用户程序非常好,等待五秒钟让他这样做。

  

简短评论“不要帮助人们进行黑客攻击” - 评论:OP正在做的是试图了解程序中可能存在的漏洞,我们仍然处于一个非常基本的水平这里。任何程序员如果意识到他的代码中存在这样的可能缺陷,应该感激不尽。试图将这些内容保留在引擎盖下只会帮助黑客并且不会使任何更安全的东西。