我正在开发一个运行系统(“ls -la /dir")命令的SUID根目录二进制'app‘,并通过编写恶意的ls来获取根目录,并更改用户的环境路径以将其设置为比内核的环境路径更高的优先级,从而成功地利用了该命令。
我注意到,作为用户执行它会返回root shell,而使用sudo "./example“执行它会使用root的路径,并简单地列出dir中的文件。据我所知,setuid继承了用户的所有者权限(在本例中是root权限),sudo以root权限执行。
这样的漏洞叫什么?应用程序开发人员如何对其进行修补?有没有办法强制用户使用sudo ./app来执行程序?
发布于 2018-05-12 11:54:53
我建议您将app更改为使用它运行的命令的绝对路径。例如:
system("/bin/ls -la /dir");即使用户使用sudo命令来执行它,他们也可以使用sudo参数(-- preserve -env)来保留自己的路径。
如果您希望用户使用sudo运行应用程序,那么二进制文件不需要是SUID root。
https://stackoverflow.com/questions/50302349
复制相似问题