设置用户ID的程序调用system危险
来源:互联网 发布:dota2数据库 编辑:程序博客网 时间:2024/06/06 08:38
system函数实现调用了fork, exec和waitpid。如果调用system的程序设置了用户ID,那么在fork,exec后的进程,保存了父进程的权限。当一个进程执行某个程序时,如果程序设置来用户ID,那么进程的有效用户ID将被设置为程序文件的实际用户ID,那么进程将拥有该文件拥有者的权限。这个权限在调用system后,被子进程继承来下来。
例如:systest.c
int main(int argc,char *argv[]){ int status; ... status = system(argv[1]); ... }
被system函数调用的程序:test.c
int main(){ int status; if((status = mkdir("/root/rub",S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)) == -1){ perror("mkdir error"); exit(-1); }//需要有超级用户权限 exit(0)}
$ gcc -o systest systest.c
$gcc -o test test.c
$./systest ./test
mkdir error: Permission denied
$su root //OK后
#chown root systest
$./systest ./test
mkdir error: Permission denied$chmod u+s systest
$./systest ./test
$ls /root
rub
当一个进程生成另一个进程的时候,一定要保持其最小权限原则,防止权限被不断的复制。
- 设置用户ID的程序调用system危险
- 8_25 设置用户id或组id的程序绝对不能再调用system函数。安全漏洞
- 浅析为什么设置用户ID程序中不能直接调用system函数?
- 保存的设置用户ID
- 实际用户ID,有效用户ID,保存-设置-用户ID,文件的所有者ID
- 用户id,有效id,设置id的区别
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”的区别
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语的区别
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语的区别
- 掌握Linux之实际用户ID 有效的用户ID 保存的设置用户ID
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语的区别
- unix的实际用户id,有效用户id,及保存的设置用户id
- 用户实际ID,有效用户ID,保存的设置用户ID(zhuan)
- linux 中实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语
- 实际用户ID,有效用户ID,保存的设置用户ID 使用
- linux 中实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语
- unix环境 实际用户ID 有效用户ID 设置用户ID 的问题。
- 实际用户ID、有效用户ID、设置用户ID的区别
- 页面静态化
- 比尔.盖茨退休前留给职场青年的警言之一
- 比尔.盖茨退休前留给职场青年的警言之二
- 杭电ACM HDU 3351 Seinfeld
- 指向函数的指针(续) - C语言
- 设置用户ID的程序调用system危险
- 一个io性能分析案例
- 创建自己的控件
- 串的简单处理
- 使用top查看进程和系统负载信息
- 使用pidstat查看进程资源使用情况
- 改变flex tree节点图标
- 饭后笑资1
- 使用iostat分析IO性能