0X01工具介绍 1.traitor https://github.com/liamg/traitor 自动化探测漏洞并且尝试提权工具,也会进行一些信息收集,但是漏洞库数量较少 不带参数运行寻找可能存在的漏洞 带-a参数运行寻找漏洞并尝试执行,如果已知当前用户密码可以加-p参数 2.LinEnum
3.linux-exploit-suggester.sh https://github.com/The-Z-Labs/linux-exploit-suggester 漏扫脚本,查看是否有可以利用的漏洞
4.Linux Exploit Suggester 2
5.beroot https://github.com/AlessandroZ/BeRoot BeRoot是一个后期开发工具,用于检查常见的Windows的配置错误, 以方便找到提高我们提权的方法。 0X02提权手法 1.利用suid提权 具有suid权限的文件在执行时,可以使调用者暂时获得该文件拥有者的执行权限,也就是说,具有suid权限的属于root用户的文件,在执行时,不管你当前是不是root用户,都可以以root权限执行,利用这个特性,我们就可以找一些具有suid权限切可以执行我们自定义命令的程序进行提权。 手动查看有suid权限的程序
可以用来提权的命令 Nmap Vim find Bash More Less Nano cp find利用
其他利用手法参考该网站 https://pentestlab.blog/2017/09/25/suid-executables/ 2.环境变量提权 管理员编译程序的时候,给了程序管理员权限运行的权限,通过对程序的运行调试得到程序运行的大概逻辑,尝试对程序调用的环境变量进行复制后覆盖。导致程序调用环境变量过程中会调用到我们的想执行的程序,通常是我们的木马后门. 提权流程:
具体操作 先写一段c程序,调用ps命令,设置uid和gid为0是要使用root权限来执行后续的操作 #include<unistd.h> #include<stdlib.h> void main() { setuid(0); setgid(0); system('ps');
}
可以发现我们刚才编译的程序 这时我们切换到普通用户权限,利用这个普通用户权限进行提权 使用cp命令把bash复制到/tmp/ps ,相当于把bash复制到tmp目录下并改名为ps 我们再把tmp目录添加到环境变量 可以发现此时执行ps返回的是一个shell 那么此时我们执行mytest程序它调用的ps就会执行bash返回给我们一个shell,因为他是以root权限执行的,所以就会返回给我们一个root权限的shell. 可以看到我们成功从普通用户提到了root权限 3.定时任务提权 3.1定时任务文件覆盖提权 利用定时任务有时候也可以达到提权的目的,修改有root权限的定时任务程序进行提权. 需要具备的条件 有root权限执行的定时任务 有权限修改root权限执行的定时任务
实操 添加定时任务,直接修改/etc/crontab添加,添加定时任务还可以使用crontab -e添加,但是crontab -e添加的定时任务只有当前用户可以看见,所以这种提权方式需要直接修改/etc/crontab添加定时任务,并以root权限执行
这里添加一个定时清楚目录下所有文件的脚本,也可以使用sh等脚本,这里使用python */1 * * * * root /usr/bin/python3 /root/test/cleanup.py
在普通用户下也可以编译定时任务执行的文件 可以把命令替换成 chmod u+s /bin/dash 赋予dash以suid权限(如果不能修改,有删除权限的话可以直接删掉,写入一个同名文件即可),返回给我们一个root权限的shel,需要加上-p参数才能提权,dash -p find `which find` -exec whoami \; 3.2定时任务Tar命令通配符注入提权
接下来模拟攻击者提权,发现存在定时任务压缩后,在add目录下执行以下三个命令,创建三个文件 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 此时等待定时任务完成即可发现在/tmp目录下多了一个bash文件 使用 /tmp/bash -p 即可提权 这个方法利用了命令的一些特性,例如,目录下存在一个--help文件时,我们使用cat --help会执行cat的帮助文档,不会获取文件的信息,这边也是一样,在执行过程中会发生以下的事情
在压缩这两个名字的时候,会把checkpoint设为1,且执行我们的test.sh文件,由于定时任务以root权限运行,那么我们就可以利用这个特性,在test.sh写入我们想执行的任何命令,达到提权的一个效果 还有另一种情况 nano /etc/crontab */1 * * * * root tar -zcf /root/back/add.tgz /root/add/* 这时候需要我们在执行完上面的操作后,对add目录下的文件进行一个归档,才可以成功解析我们的命令,具体操作如下
执行完后,只需要等待定时任务触发即可执行我们的test.sh 4.Rsync 5.Docker提权 如果用户具有docker权限,可以利用docker的挂载,实现容器和主机共享目录,从而修改访问主机文件,添加用户,等功能,完成提权 6.SUDO提权 在linux中,可能会给普通用户sudo权限,以便使用sudo进行root权限才可以进行的操作,/etc/sudoers文 件是sudo权限的配置文件,其中存储了哪些用户以及命令可以以sudo权限执行 这三条得意思分别是: root ALL=(ALL:ALL) ALL : 允许用户root在任何主机上以任何用户身份(ALL:ALL)执行任何命令。这授予了最高的权限。
%admin ALL=(ALL) ALL : 允许属于admin组的用户在任何主机上以任何用户身份执行任何命令。这是通过%admin表示组权 限,ALL表示可以在任何主机上执行,(ALL) ALL表示可以以任何用户身份执行任何命令。
%sudo ALL=(ALL:ALL) ALL : 允许属于sudo组的用户在任何主机上以任何用户身份执行任何命令。与admin组的权限相似,这 里也使用了%sudo表示组权限。 在实战中,目标可能会给普通用户分配sudo权限,可能是 ALL=(ALL:ALL) ALL ,也可能是针对某个命令可 以使用sudo权限,如 ALL(ALL:ALL) /usr/bin/find 这种sudo提权的方式就和suid提权的方式有点相识,但是使用sudo提权需要两个必备条件 知道当前用户的密码 有sudo权限执行任意命令,或者sudo可以执行特定可以提权的命令 如果sudo可以执行任何命令,那么我们可以直接 sudo bash 获取root权限的shell,如果不能,需要查 看/etc/sudoers配置文件中可以执行哪些命令,上文中可以使用suid提权的命令在此处也是适用的 例如:find提权
sudo find /home -exec bash \; 或者直接调用bash来获取shell ★ 欢 迎 加 入 星 球 ! 代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员 进成员内部群 星球的最近主题和星球内部工具一些展示 |
|