Linux提权精讲(一)

Linux提权简介

        Linux提权是渗透过程中非常重要的一个阶段,如果我们利用好这个手段,我们将可以在服务器中做出一些很强大的操作。

        大多数计算机系统设计为可与多个用户一起使用。特权是指允许用户执行的操作。普通特权包括查看和编辑文件或修改系统文件。特权升级意味着用户获得他们无权获得的特权。这些特权可用于删除文件,查看私人信息或安装不需要的程序,例如病毒。通常,当系统存在允许绕过安全性的错误或对使用方法的设计假设存在缺陷时,通常会发生这种情况。

        特权提升是利用操作系统或软件应用程序中的错误,设计缺陷等等来获得对通常受到应用程序或用户保护的资源的更高访问权限的行为。结果是,具有比应用程序开发人员或系统管理员想要的特权更多的应用程序可以执行未经授权的操作。

特权升级有两种类型:水平垂直。水平升级中,您从一个用户转移到另一个用户。在这种情况下,两个用户都是通用的,而在垂直方式中,我们将特权从普通用户提升为管理员。

简单来说就是

即用户无法访问(读取/写入/执行)不允许访问的文件。但是,超级用户(root)可以访问系统上存在的所有文件。为了更改任何重要的配置或进行进一步的攻击,首先,我们需要在任何基于Linux的系统上获得root用户访问权限

为什么我们需要执行特权升级?

  • 读/写任何敏感文件

  • 重新启动之间轻松保持

  • 插入永久后门

因此,我们来简单介绍四种种提权方法

一、可读shadow文件提权

        当我们以普通用户进入靶机时,此时我们的目标是提权至root用户进行操作,那么我们可以考虑到/etc/shadow这个文件。

(1)首先我们利用命令来查看/etc/shadow文件的详细信息

        /etc/shadow文件为存储Linux密码文件,若所有人可读,则所有人可以查看到密码存储情况

        ls -liah /etc/shadow        命令用于查看shadow文件的详细信息,我们发现此文件在其他人权限下为可写

(2)查看一下/etc/shadow下的密码文件

        cat /etc/shadow        查看/etc/shadow文件内容

(3)将root用户的密码取出放入一个特定文件夹,名字为shadow

    

(4)在kali中自带一些非常强大的字典,可以让我们利用进行爆破,其中John the Ripper工具是一个非常好用的工具 

john工具具体的使用方法:https://blog.csdn.net/2401_84254133/article/details/137765440

        我们先进入/usr/share/wordlists/文件夹,查看当前目录文件夹发现rockyou.txt.gz压缩包,其中包含着非常强大的字典集,我们将其解压。

        sudo gzip -d rockyou.txt.gz

(5)解压完成后我们利用john工具和rockyou.txt字典进行爆破

        利用 john 命令,设置关键字典对哈希值进行爆破,获得密码
        sudo john --wordlist=/usr/share/wordlists/rockyou.txt shadow

        爆破后却显示No password hashes loaded (see FAQ),上网查阅资料后发现密码中带有 '$y$'则表明密码已使用 yescrypt 进行哈希处理,所以我们更换命令

参考连接:破解工具john提示No password hashes loaded (see FAQ)-CSDN博客

        john --format=crypt shadow爆破出密码为root,其中--format表示加密类型

(6)得到密码为root后可以直接登入

二、可写shadow文件提权

(1)利用 ls -liah /etc/shadow 命令查看shadow文件详细信息,发现所有权限下都为可写可读

(2)cat /etc/shadow  cat /etc/passwd  发现是以哈希值加密 

(3)利用命令mkpasswd -m sha-512 root 生成哈希加密的密码

        其中,-m设置:设置加密类型将root改成sha-512加密形式

(4)将这个密文贴到/etc/shadow 上,即可替换密码登入root用户

(5)尝试登入用户,登入成功

三、可写passwd文件提权

(1)利用 ls -liah /etc/passwd 命令查看passwd文件详细信息,发现所有人权限下都为可写

(2)利用openssl生成密码的哈希值 (openssl工具)

        以passwd的密码形式将明文kali生成对应的哈希值

(3)查看/etc/passwd,把生成密码的哈希值贴入root的x中

替换为:

(4)尝试登入root账号成功,提权成功

四、sudo环境变量提权

(1)利用sudo -l 命令查看系统环境变量 (查看当前用户能执行哪些系统命令)

env_reset:重置环境变量

env_keep:环境变量保持

LD_PRELOAD:预加载动态链接库

env_keep+=LD_PRELOAD:在保持原有环境变量的同时再附加一个动态链接器(能够预加载共享库)

因此,环境变量能够预加载共享库,那我们可以试着定义一个共享库

(2)利用c语言建立一个共享库

void _init():函数为比main函数还优先加载的函数

其中setgid(0)和setuid(0)分别代表将用户放入root组和成为root用户

实现提权的操作:system("/bin/bash")启动一个新的bash

unsetenv("LD_PRELOAD"):因为是预加载,所有我们只需要让此加载一次即可,卸掉预加载

(3)gcc -fPIC -shared -o shell.so shell.c -nostartfile(以共享库的形式编译)

-f:代码无关位置

PIC:运行内存会被映射到不同的内存空间

-nostartfile:因为我们启用共享库需要用到自己的shell,所以不需要其他功能

此时只解决了提权的逻辑问题

(4)上面有可以不用密码就可以使用的root工具,我们来挑选一个使用

        sudo LD_PRELOAD=/home/user/shell.so find

shell.so:为我们刚刚编译的共享库

其中提权的具体操作在我们写的共享库中完成

其中原理为利用sudo的权限加载find指令然后预加载了共享库,所以实现了提权

总结一下我们可以利用上面没有密码就可以执行的任务来实现提权,重要的是要怎么写提权逻辑,我们需要在执行find命令之后给它一个提权的逻辑即可提权成功

(5)执行之后我们发现提权成功

以上是这一次分享的全部内容,第一次投稿请大家多多支持~

参考内容:b站红队笔记大佬视频笔记https://www.bilibili.com/video/BV1Es4y1M7ZL/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=5f256adf95071d24bd58c325406d36c6

若有侵权请联系我!

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值