SuDump: Exploiting suid binaries through the kernel笔记
Table of Contents
今天看到一个案例,简单分析一下:
https://alephsecurity.com/2021/10/20/sudump/
https://www.openwall.com/lists/oss-security/2021/10/20/2
简介
这个案例通过suid以及coredump来达到向任意目录写入coredump文件的目的.
实现原理
在任意目录升成coredump文件
- suid的root用户可执行文件
- 该可执行文件会调用 setuid(0) and setgid(0)
- 该程序会通过execve来运行其他的可执行文件
满足上述条件之后,我们就可以达到在任意目录写入文件的目的.
文章中发现sudo命令刚好可以满足要求
在coredump中加入可以自定义的脚本
XAUTHORITY这个环境变量,在sudo中可以原封不动的通过带到子进程中, 通过设置这个环境变量,就可以在coredump中带入任意的字符串
执行coredump中的脚本
- 需要有其他的程序来执行我们生成的coredump中的shell脚本/其他命令
Logrotate刚好可以满足要求.
- 这个程序配置文件中可以写入脚本,命令
- 这个程序在读取配置文件时可以跳过非字符串的内容, 不会因为里边有不合法内容而崩溃.
- 这个程序配置文件中可以写入脚本,命令
- 在logrotate重启后,我们生成的coredump伪装的配制文件就会被加载,进而执行通过XAUTHORITY环境变量自定义的shell
总结
在这个例子中,通过一些小组合就可以成功获取到root权限. 漏洞中可能的解决方案是在内核中将suid进程的RLIMIT_CORE设置成0,但是这样会有很多之前能正常产生coredump的地方就无法再升成coredump了。
在这里案例中,后续的fix是个大问题,既不能修改以前合理的功能要求,又要封堵掉这个漏洞,贴子中的解决方案看似已经是影响最小的了。