Linux系统中的用户是分角色的,用户的角色是由UID和GID来识别的(也就是说系统是识别的是用户的UID、GID,而非用户用户名),一个UID是唯一(系统中唯一如同身份证一样)用来标识系统的用户账号(用户名)。
目前创新互联已为上1000+的企业提供了网站建设、域名、雅安服务器托管、成都网站托管、企业网站设计、山亭网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
文件的用户与用户组分为超级管理员,普通用户和系统用户。
1)超级管理员的UID=0,GID=0,也可以这么说系统只要是识别出某个用户的UID\GID都为0时,那么这个用户系统就认为是超级管理员。
2)普通用户(管理员添加的),默认它的UID\GID是从500-65535,权限很小,只能操作自己的家目录中文件及子目录(注:nobody它的UID\GID是65534)。
3)系统用户,也称虚拟用户,也就是安装系统时就默认存在的且不可登陆系统,它们的UID\GID是1-499。
我们可以通过cat /etc/passwd命令来查看所有的用户信息,例如下图,第三列是UID,第四列是GID:
创建用户
useradd user1 创建用户user1
useradd -e 12/30/2021 user2 创建用户user2,有效期到2021-12-30
设置用户密码
passwd user1 设置密码,有设置密码的用户不能用
这里设置密码时可能会碰到密码保护机制问题,这里需要注释掉保护机制的问题
这个时候需要在编辑/etc/pam.d/system-auth文件,将其中的password requisite
和password sufficient两行注释掉,如下图:
创建用户组
groupadd –g 888 users 创建一个组users,其GID为888
groupadd users 不用g参数,使用默认的组ID
命令 gpasswd为组添加用户
只有root和组管理员能够改变组的成员:
gpasswd –a user1 users 把 user1加入users组
gpasswd –d user1 users 把 user1退出users组
命令groupmod修改组
groupmod –n user2 user1 修改组名user1为user2
groupdel删除组
groupdel users 删除组users
真正从安全性角度上来考虑的话,是要控制用户一定执行命令的权限,也就是哪些用户可以执行哪些命令,不可以执行哪些命令,因此也就有了sudo这个应用,对于sudo提权,也就是修改/etc/sudoers的配置文件。
1.查找具有root权限的SUID文件,不同系统对应不同的命令,可以依次尝试
利用这些具有root的权限的文件特性进行提权
常用的提权文件有:
我的版本比较高,没有这个漏洞,所以没有成功。
反弹shell参考:
安全提示:SUID是通过一些拥有root权限的可执行文件来是实现的,利用的是文件的特性(本身的功能)。防范方式:升级系统版本,root权限慎用。
在 Linux 系统中,提升权限的常用命令是 sudo。
sudo (superuser do)是一种 Linux 命令,允许普通用户在需要时执行具有特殊权限的命令,而无需切换到超级用户帐户。
例如,要执行具有特殊权限的命令,如安装软件或修改系统配置文件,可以在命令前面加上 sudo。 例如 :
sudo apt-get install package-name
这个命令会让你输入你的密码,如果你是一个有权限的用户,那么你的命令将会被执行。
需要注意的是,使用sudo命令需要输入密码,并且在一定时间内不需要再次输入密码,所以使用sudo需要谨慎,并且如果使用错误可能会破坏系统。
最近想着学习linux提权的一些姿势,这里简单分享学习SUID提权的一些知识点。
先来父复习一下linux文件的权限分配。
ls命令用来查看系统上面的文件、目录的权限。
字段的第一个字符表示对象的类型。
之后是每三个字符为一组,每一组定义了3种访问权限。
这三组分别表示文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
然后规定用数字4、2和1表示读、写、执行权限。即r=4,w=2,x=1。
所以
chmod改变权限
chown用来更改某个目录或文件的用户名和用户组
该命令需要root权限运行
而文件权限除了r、w、x外还有s、t、i、a权限。
SUID
当执行的文件被赋予了s权限,就被称为Set UID,简称为SUID的特殊权限。八进制数为4000。
举个例子:
linux修改密码的passwd就是个设置了SUID的程序。因为如果普通账号cseroad需要修改密码,就要访问/etc/shadow,但是该文件只有root能访问。那他是怎么修改的呢?原理:
查看该程序,发现被赋予了s权限。当cseroad需要修改自己的密码时,passwd程序的所有者为root,cseroad用户执行passwd 程序的过程中会暂时获得root权限,所以可以修改/etc/shadow文件。
SGID
而当s标志出现在用户组的x权限时则称为SGID。八进制数为2000。
当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。(父目录跟随)
SBIT
就是Sticky Bit,出现在目录的其他用户执行权限X上,标记为T,八进制数为1000。对目录有效,使用者只能对自己创建的文件或目录进行删除/更名/移动等动作,而无法删除他人文件(除非ROOT)
赋予s权限:chmod 4755 filename 或者 chmod u+s /usr/bin/find
取消s权限:chmod 755 filename 或者 chmod u-s /usr/bin/find
以centos为例。
还有额外的几个命令
我们就可以通过覆盖/etc/passwd文件,提权为root
默认该命令没有s权限
find命令
假如find命令被赋予s权限。
创建a.txt文件,执行 /usr/bin/find a.txt -exec /bin/bash -p \; ,成功提权。
这里注意的是新版Linux系统对子进程的suid权限进行了限制,不同的操作系统结果也会不一样。
具体细节参考
利用python可反弹得到root权限的shell
python命令
根据 查找python利用姿势。
条件是sudo安装时需要输入当前用户密码。
在实战过程中,多查看 是否存在SUID提权,以及使用searchsploit命令查看某程序是否存在本地提权漏洞。