提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
一、内核漏洞提权
(1)例子:
二、SUID提权
(1)SUID的解释
(2)例子:
三、计划任务提权
(2)任务提权步骤:
四、环境变量劫持提权
(1)例子:
总结
前言
提示:这里可以添加本文要记录的大概内容:
如今的操作系统一般都为多用户操作系统,用户之间都有权限控制,当你控制了一个低权限的shell,还需要通过一些操作系统漏洞或错误配置进行提权,本文主要做个Linux系统提权的简单总结。
提示:以下是本篇文章正文内容,下面案例可供参考
一、内核漏洞提权
内核漏洞提权指的是普通用户访问操作系统内核,利用内核漏洞将权限提高为root权限,一般首先需要知晓操作系统的内核,内核的版本等信息,再寻找内核漏洞的EXP进行提权
linux常用查看系统信息命令
uname -a 查看系统全部信息
uname -r 查看内核版本
cat /proc/version 查看内核信息
cat /etc/*-realease 查看CentOS版本
cat /etc/issue 查看Ubuntu版本
cat /etc/redhat-release 查看RedHat版本
env 查看环境变量
echo $PATH 查看当前环境变量
awk -F: '($3==0){print $1}' /etc/passwd 查找UID为0的用户
find / -user root -perm -4000 -exec ls -ldb {} \; 查找设置了SUID的文件
(1)例子:
1,查看系统的内核版本
2,使用kali的searchsploit寻找对应的内核漏洞或网上寻找相应的内核漏洞
3,使用gcc将C语言程序编译成可执行文件,上传至靶机,执行即可提权至root权限
二、SUID提权
SUID是对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有宿主的权限,若是对一些特殊命令设置了SUID,存在被提权的风险。常见的SUID提权命令有vim,find,bash,more,less等
(1)SUID的解释
标记:当 s 标志出现在文件拥有者的 x 权限 上时,就被为SUID的特殊权限
SUID 权限对于一个文件的特殊功能如下:
- SUID 权限仅对二进制程序( binary program) 有效
- 执行者对于该程序需要具有 x 的可执行权限
- 本权限仅在执行该程序的过程中有效 ( run-time)
- 执行者将具有该程序拥有者 ( owner) 的权限
举个例子:
9 8 7 6 5 4 3 2 1
- r w s r - x r - x
第9位表示文件类型,可以为p、d、l、s、c、b和-:
p表示命名管道文件
d表示目录文件
l表示符号连接文件
-表示普通文件
s表示socket文件
c表示字符设备文件
b表示块设备文件
第8-6位、5-3位、2-0位分别表示文件所有者的权限,同组用户的权限,其他用户的权限。
x表示可执行,w表示可写,r表示可读,例中8-6位文件所有者权限的x被s标记替换,为SUID权限,当文件所有者为root,普通账户在使用这个命令的时候会暂时获得其拥有者(root)的权限。
(2)例子:
1,先查找目标机上设置了SUID的权限文件
find / -user root -perm -4000 -exec ls -l {} \;
2,存在sudo,su,phexec命令被设置了SUID权限,存在phexec漏洞提权
当前用户暂时变成了root
三、计划任务提权
linux的计划任务提权与windows的思路一致,查找权限配置不当的计划任务,前提条件是执行的某个计划任务以root身份运行,并且此计划任务可以被低权限用户编辑。
(2)任务提权步骤:
1,通过命令查看计划任务
cat /etc/crontab 或 crontab -l
2,查找是否有可编辑的root用户执行的定时任务文件,比如存在test.py
3,修改编辑文件,如test.py,将bash命令设置为SUID
import os
import sys
try:
os.system('chmod u+s bin/bash')
except:
sys.exit()
4,定时计划的脚本执行后,查看是否设置了SUID,运行bash -p,新开的shell提权成root
四、环境变量劫持提权
linux的环境变量提权跟window的环境变量提权的思路也是一致的,当执行某个命令时,Shell会按PATH环境变量的路径依次搜索命令,搜到即停止。因此,可以将同名命令加入到PATH中,实现环境变量的劫持提权。
(1)例子:
1,先搜索设置了SUID命令的文件
find -user root -perm -4000 -exec ls -l {} \;
2,查看clean,发现clean文件中调用了 cat命令,尝试劫持cat命令
export是将环境变量设置为当前目录变量,chmod 777是赋予文件权限。
第一个数字表示文件所有者的权限。
第二个数字表示与文件所有者同属一个用户组的其他用户的权限。
第三个数字表示其它用户组的权限。
权限分为三种:读(r=4),写(w=2),执行(x=1)
chmod 4755与chmod 755 的区别在于开头多了一位,这个4表示其他用户执行文件时,具有与所有者相当的权限。
3,再运行clean文件时,它会调用cat首先找当前目录下的cat,当前的cat为/bin/bash为新开shell,从而以新身份打开一个Shell,因为clean文件设置了SUID权限 ,运行clean文件具有与root相当权限。书中成功了,演示时未成功,可能由于版本变化,有待探究。
总结
不管是Window还是linux,提权的思路都差不多,根据系统信息寻找EXP是比较靠谱的,其它方式的提权源于管理员疏忽或错误的配置,可以成为一种拓展。