Web渗透测试(4)—本地提权方法

之前有几个面试官问我,怎么在Linux上本地提权,想了下脚本提权的倒是有几种方法,而通过溢出的方法获取root权限,说下思路。下面依次介绍:溢出的方法获取root权限、sudo提权、setuid 提权、crontab 提权、链接提权、enviroment提权。

溢出的方法获取root权限

首先获取linux的版本号和内核版本

  1. 获取版本号
lsb_release -a
Web渗透测试(4)—本地提权方法_第1张图片
获取Linux版本号.png
  1. 获取内核版本
uname -a

3.网上搜索内核版本的cve提权POC,有能力的自己去挖掘内核提权CVE。

Sudo提权

这种方法是最长规的提权方法了。
sudo 是 Linux 下允许普通用户使用超级用户权限的工具,其配
置文件为 /etc/sudoers。在该配置文件中可以定义执行 sudo 命令 的账户、作为超级用户能够访问的应用程序、是否需要密码验证等。

我们下面看一个例子:
如在/etc/sudoers配置文件中,添加如下行——test 用户无需输入用户口令 即可以任意用户身份执行任意命令。

Web渗透测试(4)—本地提权方法_第2张图片
添加test all.png

可以看到test用户,现在可以执行任何命令,查看任何文件了。
Web渗透测试(4)—本地提权方法_第3张图片
root权限.png

可以使用sudo /bin/bash切换到root权限下。

setuid 提权

黑客留后门的常用方法。
set user id(setuid) 在 Linux 内核中允许一个进程以调用 setuid
程序的方式来改变自身的有效用户 ID,被设置了 setuid 权限位的程 序允许其他用户以该文件属主的身份来运行。该权限位常用于设置所 有者为 root 的相关程序,让普通用户可以以 root 用户身份运行原本 只有 root 权限才能运行的程序或命令。

crontab 提权

Linux 下的任务调度命令 crontab 用于周期性的执行预设指令,与 Windows 下的计划任务功能类似。其默认的配置文件为 /etc/ crontab,该文件中可定义指定命令的运行周期及具体时间,同时 /etc 下 的 cron.hourly、cron.daily、cron.weekly、cron.monthly 目 录分别用于存放每小时、每天、每周、每月需定期执行的脚本。通过查看目录下的脚本,看普通用户是否有修改权限,然后添加用户权限。

链接提权

我的独门绝技,看好了。
链接提权的原理是,root用户创建了软链接,但是没有源文件或者删除了源文件,而普通用户可以通过更改源文件得到提权。看下示例:

  1. 创建软链接
    首先old.file 是不存在的
ln -s old.file soft.link
创建软链接.png
  1. 普通用户创建old.file
echo "this is a file "
普通用户创建文件.png

看到源文件已经被改变了。

  1. 看下文件属性
    任何用户都可以编辑,执行了。


    查看文件属性.png

环境变量提权

环境变量 (environment) 用于给系统和部分应用程序设置运行
相关的一些参数,如版本信息、路径设置、命令参数等。Linux 环 境变量按照生存周期可划分为永久型和临时型,前者主要通过修改 相关配置文件来实现,如 /etc/profile、/etc/environment 等 ;而后 者只需要用 export 命令声明即可,但声明的变量只对当前用户的当 前 shell 生效,当关闭 shell 或新建 shell 时之前声明的变量均无效。
Linux 中的 bash 支持变量 PROMPT_COMMAND 和 BASH_ ENV,前者将在用户提示符前被执行,而后者在 shell 脚本执行前会 首先执行变量中设置的文件。

  1. export 命令可用于查看当前用户环境变量信息。
  2. 通过 export 命令设置 PROMPT_COMMAND 变量后,该变量 包含的命令将在 shell 提示符前自动执行,unset 用于取消临时环境 变量。
  3. 查看用户命令历史记录文件,系统管理员经常通过 su 而非 su – 切换至 root 用户,当通过 su 命令进行切换时,root 用户环境变量 将仍为当前用户。
  4. 变量 PROMPT_COMMAND 中的命令被成功执行,通过 su – r00t 命令切换到 root 用户时,查看当前环境变量为 root 用户
  5. 但上述通过 export 命令增加临时变量的方法,只对当前 shell 有效,用户退出及新建 shell 时均不生效。
  6. 可通过在 .bash_profile 文件中添加相应 export 命令,使用户 每次登录时均可在环境变量中新增变量 PROMPT_COMMAND。
  7. 普 通 用 户 登 录 并 执 行 su 命 令 切 换 至 root 后, 上 述 变 量 PROMPT_COMMAND 中预设命令被成功执行。
  8. 若当前用户执行 su 命令后,以 root 权限执行了相关 shell 脚 本,此时还可通过设置变量 BASH_ENV 的方式进行提权,这与变 量 PROMPT_COMMAND 的利用方法类似。
  9. 设置变量 BASH_ENV 为包含相关提权命令的脚本文件,通过 su 命令以 root 权限执行相关 shell 脚本后,变量 BASH_ENV 指向 文件中的提权命令被成功执行。

参考文献:

  1. 详细的提权方法
  2. 软链接和硬链接

你可能感兴趣的:(Web渗透测试(4)—本地提权方法)