题目要求
ssh访问靶机IP,用户名test,密码123
利用system函数对PATH环境的作用,编写一个可执行程序,并对此程序赋予suid权限,这样在执行程序的过程中让PATH环境变量优先遍历我们伪造的命令,从而进行提权,从普通用户变为root用户
flag在/root目录下
资料搜集
找到两篇关于suid结合环境变量漏洞提权的文章:
跟着他的步骤做了一遍但是执行已赋予suid权限的可执行文件发现,我的身份还是普通用户。
因为我在赋权限的时候是以靶机普通用户的身份,估计不行。
了解原理
阅读一些文献后,得知环境变量漏洞提权原理:
执行命令时shell会先从PATH中检查是否是系统内部命令,如果不是再查是否属于应用程序。
那么如果我们在环境变量中写一个自己定义的环境变量,劫持已有的命令,达到提权目的。
实验步骤
原本想自己写程序来劫持等等,但由于我现在只是普通用户,没法真正给可执行文件赋suid权限。
在查看整个系统中suid权限的文件时,发现了突破点:
其他都可以忽略,实验环境里本来就有一个/home/test/flag是suid权限啊!为何不直接利用它提权!
执行一下flag看看:
这个输出怎么如此熟悉?
不就是ps命令嘛!
现在一切都清楚了。flag可执行文件执行的就是ps命令,那我就可以用写一个提权的恶意程序,再环境变量劫持ps命令,就可以获得root权限了呀!
按照以下命令操作:
记得要在垃圾桶里执行flag,开启一个shell。
最后whoami发现我已经是root啦!
以root权限查看我们心心念念的flag.txt
得到flag!