linux 提权防护
linux 用户提权
利用系统漏洞或者程序等方面的缺陷使一个低权限用户,获得他们原本不具有的权限或者得到root权限
下面介绍几种可能得到root访问权限的方式
1, 内核开发
防护:及时更新补丁
臭名昭著的脏牛(DirtyCow)漏洞可在Linux内核3.19.0-3.73.8之间利用
原理:Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞。
实现:通过编辑/etc/passwd文件,将"root"用户替换为新用户"rash"
2,利用正在以root身份运行的服务
ps -aux | grep root #显示以root用户身份运行的服务
netstat -antup #该命令可以显示所有打开并正在监听的端口,我们可以通过此命令检查是否有可以利用的本地服务
利用以root身份运行的受漏洞影响MySQL来获取root访问权限:
MySQL UDF动态库漏洞利用可以允许我们从MySQL Shell执行任意命令。如果MySQL是以root权限运行的,那么这些命令就会以root身份来执行。
一些网络管理员的最大失误,就是运行具有root权限的网络服务器
但root用户程序进行二进制利用的风险要比内核利用小得多,原因在于即使服务崩溃,主机也不会崩溃,并且服务可能会自动重启。
防范:除非真正需要,否则绝不要以root身份运行任何服务,特别是Web、数据库和文件服务器
3,利用可执行文件SUID
SUID 即 Set User ID(设置用户ID),它允许用户使用指定用户的权限来执行文件。
例如,Linux中的ping命令通常需要root权限才能打开原始的网络套接字。如果将ping程序的SUID标记为root用户,就可以让低权限用户在执行程序时,直接以root权限执行。
-rwsr-xr-x- 如果其中的x字符被s替代,则证明设置了相应的SUID
find / -perm -u=s -type f 2>/dev/null #查看设置了SUID位的可执行文件。
给文件赋予SUID权限的两种方式
chmod 4xxx test.file (后面xxx中任何一个有可执行权限即可)
chmod u+x test.file
撤销权限就直接重新赋予权限
防范方法:
不应将SUID位设置为允许转到Shell的任何程序。
不应该在任何文件编辑器、编译器、解释器上设置SUID位,这样可以让攻击者轻松读取、覆盖系统上存在的任何文件。
4,利用sudo权限/用户
如果攻击者不能通过其他技直接获得root访问权限,那么他可能会尝试破坏任何拥有SUDO访问权限的用户。一旦攻击者有权访问任何SUDO用户,那么他基本上就可以使用root权限执行任何命令。
sudo -l #查看允许sudo运行的命令
我们可以以SUDO运行find、cat和python。这些命令在用SUDO时会以root用户身份运行。如果我们可以通过这些命令,以某种方式逃逸到Shell,那我们就可以获得root权限。
sudo find /home -exec sh -i \; #find命令的exec参数可用于任意代码执行。
防范:
不要将SUDO权限授予任何允许逃逸到Shell的程序。
不要将SUDO权限赋予vi、more、less、perl、ruby、gdb等命令。
5,利用未正确配置的CRON任务
cron任务,linux定时任务的一种
参考:
https://zhuanlan.zhihu.com/p/33927828