美文网首页
Web渗透测试(4)—本地提权方法

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

作者: Magicknight | 来源:发表于2017-12-26 17:53 被阅读319次

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

    溢出的方法获取root权限

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

    1. 获取版本号
    lsb_release -a
    
    获取Linux版本号.png
    1. 获取内核版本
    uname -a
    

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

    Sudo提权

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

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

    添加test all.png
    可以看到test用户,现在可以执行任何命令,查看任何文件了。
    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)—本地提权方法

          本文链接:https://www.haomeiwen.com/subject/bxfrixtx.html