Linux sudo 提权之软链接攻击

软链接提权的原理

低权限用户能够以 root 用户的权限执行某个脚本,该脚本中又使用到了诸如 chown 等命令修改文件的权限,且该文件又能够被低权限的用户所修改。因此低权限的用户可以删除该文件,然后创建一个同名的文件,但是这个文件是指向一个高权用户才能修改的文件,例如 /etc/passwd。这样在低权用户在执行命令的时候就能够修改 /etc/passwd 这个文件的权限了,这样就相当于低权限用户能够越权操作了。

实验验证

  • Linux上创建一个低权限用户 testuser,然后创建一个文件 sudotest,该文件的属主是 testuser
    image.png
  • 创建一个脚本文件 test.sh,该脚本的属主是 testuser2testuser 有权限执行该脚本。 配置 sudo 免密切换执行,使得 testuser 能够免密切换到 root 执行 test.sh
    Linux sudo 提权之软链接攻击_第1张图片
    image.png
  • 使用 root 用户在 /etc 目录下创建文件 zsudotest,然后切换到 testuser用户,删除 sudotest 文件,然后创建一个软链接指向 /etc/zsudotest
    image.png
    image.png
  • 执行脚本,可以看到脚本执行完成之后,本来是高权用户的文件/etc/zsudotest的属主被修改为了低权用户。
    image.png
    image.png

    问题规避

    针对这种提权的问题,我们可以有如下的方式来减少提权的风险:

  • 对于 chown 命令,我们使用的时候可以使用参数 -h,这样的话只会修改软链接这个文件的权限,不会修改链接到的文件的权限。
  • 如果还有其它的高危命令,比如 rmmv 这些命令,最好是能够切换到文件对应的用户,然后再执行操作

你可能感兴趣的