2020-2021-1 20209324《Linux内核原理与分析》第十二周作业

《linux内核原理与分析》第十二周作业

这个作业属于哪个课程 2020-2021-1 Linux内核原理与分析
这个作业要求在哪里 2020-2021-1Linux内核原理与分析第十二周作业
这个作业的目标 完成安全实验
作业正文 本博客链接

1.没有Set-UID机制的情况

把某些命令拷贝到自己的目录下,发现它们不是Set-UID程序

2.运行Set-UID程序

以 root 方式登录,拷贝 /usr/bin/zsh 到 /tmp, 同时设置拷贝到 tmp 目录下的 zsh 为 set-uid root 权限,然后以普通用户登录,运行 /tmp/zsh
再拷贝 /bin/bash 到 /tmp 目录,同时设置 /tmp 目录下的 bash 为 Set-UID root 权限,然后以普通用户登录,运行 /tmp/bash

3.Bash的内在保护机制

4.PATH环境变量的设置

可以具有 root 权限,把 /bin/sh 拷贝到 /tmp 目录下面重命名为 ls(先要确保 /bin/ 目录下的 sh 符号链接到 zsh,而不是 bash),将环境变量 PATH 设置为当前目录 /tmp,运行编译的程序 test

先恢复环境变量 PATH ,然后修改 /bin/sh 使得其返回到 /bin/bash,重复上面的攻击

5.system() 和 execve() 的不同

'''

include <string.h>

include <stdio.h>

include <stdlib.h>

int main(int argc, char *argv[])
{
char *v[3];
if(argc < 2)
{
printf("Please type a file name.\n");
return 1;
}
v[0] = "/bin/cat"; v[1] = argv[1]; v[2] = 0;
//Set q = 0 for Question a, and q = 1 for Question b
int q = 0;
if (q == 0)
{
char *command = malloc(strlen(v[0]) + strlen(v[1]) + 2);
sprintf(command, "%s %s", v[0], v[1]);
system(command);
}
else execve(v[0], v, 0);
return 0 ;
}
'''
分别令函数中的q=0和q=1来编译运行程序

6.LD_PRELOAD 环境变量

7.消除和清理后台

posted @ 2020-12-21 08:34  20209324  阅读(98)  评论(0编辑  收藏  举报