su和sudo
su全称:switch user
#root用户可以很方便的切换到任意用户
su - test
exit #退出,又回到root用户
#普通用户切换到root用户,必须输入root密码
#不带-也可以,带-的话,就是切换完用户之后,直接到用户家目录下,不带-就不是家目录
sudo全称:supersuser do,它的作用是用来授权的,就是给普通用户最高级别权限用的。原因是很多操作,如果都需要root用户去做,太麻烦了,所以可以给普通用户做一些授权,普通用户操作就方便了。授权就用到了sudo,sudo并不是一下子给用户很多权限,而是一个命令一个命令的授权。
sudo需要修改配置才能开启。
#root用户才能修改这个配置
1.配置/etc/sudoers
#直接visudo就能编辑这个文件
用户名 所有终端=运行的用户身份 命令ALL #ALL是所有指令,不能给所有的,不然权限太高了
例:
#在100行下添加如下内容
test ALL=(ALL) /bin/systemctl,/bin/vim,/sbin/reboot #单独给指令权限,并且要写指令的绝对路径,逗号分隔
#vim权限最好别给
#修改完配置文件,保存退出之后,立马就生效了,不需要重启或者重新登录
#切换到普通用户,查看可以使用的授权命令
sudo -l
普通用户在使用这些授权命令的时候,要在指令前加上sudo
Linux普通用户提权
sudo提权,就是进行sudo授权时给的授权太高,或者给授权时控制的不合理,就会被普通用户利用来提权。
例1:
vim
#命令模式执行:!/
#通过vim修改/etc/sudoers 授权ALL
#再通过vim进入一个文件
#:输入指令,可以直接输入系统指令,前面加一个!即可,比如创建一个文件!touch 111.txt
#查看111.txt信息如下:
发现是以root用户身份创建的文件
#如果在vim文件时,执行!/bin/bash 就进入到了root的命令终端,可以为所欲为
#这就是sudo提权,但是sudo提权需要借助到可以执行系统指令的交互式的功能,比如vim
例2:
find
#sudo find . -exec bash \; # . 表示任意一个文件,直接进入root的命令终端,这个指令退出root终端可能要退好几次才行,看find找到了几个文件,找到几个就输入几次exit才行
例3:
awk
#sudo awk 'BEGIN {system("/bin/bash")}' 文件名 #直接进入到root命令终端,exit直接退出
脏牛提权
dcow全称dirty cow,脏牛,原理:Linux内核的内存子系统在处理写入时复制(copy-on-write,COW,组合起来是牛的意思)时产生了竞争条件,恶意用户可利用此漏洞,来获取最高权限,对只读内存映射进行写访问,所以管这个提权方式叫脏牛提权。
https://github.com/gbonacini/CVE-2016-5195