什么是提权

提权是在shentou测试后期的一项非常重要的操作,因为通过前期的shentou测试,我们很可能会得到一个拥有系统普通权限的用户账号,比如之前得到的alice账号。但这种普通用户在系统中的权限非常小,能执行的操作也非常有限,而黑客的目标是要控制整个服务器,这就必须要拥有root权限。

在已经拥有了一个普通用户账号的基础上,通过各种漏洞和相关操作,从而达到最终获取root权限的目的,这就是提权。

提权是一项比较困难的操作,能否成功提权存在很大的不确定性。在具体的shentou测试过程中,也只能是根据已经掌握的提权方法挨个进行尝试。在本课程中将结合不同的靶机分别介绍一些主流的提权方法,对于当前靶机,可以采用sudo提权。

下面将首先对在提权过程中经常涉及的一些概念做下简单介绍。

什么是Shell

Shell是在shentou测试中经常会见到的一个概念,从现在开始,我们必须要逐渐加深对Shell的认识和理解。

Shell从字面理解是“外壳”的意思,在计算机领域,Shell主要是对提供了系统操作界面的一类程序的统称,比如我们在Windows系统中使用的图形操作界面,在Linux系统中使用的命令行操作界面,这些都属于是Shell。

由于目前互联网中的大部分服务器都是使用了Linux系统,所以我们通常所说的Shell基本上都是专指可以对Linux系统进行操作的命令行界面。

需要强调的是,Shell是一个统称,具体可以提供Shell这种功能的软件有很多。比如在CentOS系统中默认使用的是Bash Shell,在Kali系统中默认使用的则是Zsh Shell。

Linux专门提供了一个环境变量$SHELL,查看该变量的值就可以知道系统当前使用的是什么Shell。

查看CentOS使用的Shell:

[root@Web ~]# echo $SHELL
/bin/bash

查看Kali使用的Shell:

┌──(root㉿kali)-[~]
└─#
echo $SHELL
/usr/bin/zsh

除了这些默认Shell之外,在系统中还提供了很多其它类型的Shell可供我们选择,这些Shell的信息都存放在/etc/shells文件中,比如下面就是CentOS系统中提供的所有Shell:

[root@Web ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

除了/bin/bash之外,/bin/sh也是一个经常使用的Shell,在之后的操作中,经常会用到这两个Shell。

从黑客的角度,其最终目的是获取对服务器的操作权限,这就需要获取到服务器的Shell。

那又该如何获取到服务器的Shell呢?

只需要能够设法在服务器上执行/bin/bash或/bin/sh即可。

只要运行了这些程序,就是打开了一个Shell,也就获得了一个系统的操作界面。

回到靶机,我们之前已经使用alice账号通过SSH服务成功登录上了靶机,这时alice其实就是获得了一个Shell。

可以查看,当前所使用的正是Bash Shell:

┌──(root㉿kali)-[~]
└─#
ssh alice@192.168.80.128
alice@192.168.80.128's password:
Last login: Mon Jan 16 17:33:00 2023
from 192.168.80.137
alice@gfriEND:~$ echo $SHELL
/bin/bash

之前说过,alice这种普通用户在系统中的权限非常小,所以黑客的目标是要获得系统权限,也就是要把权限提升到root。

提权的总体思路就是要设法以root用户的身份去执行/bin/bash或/bin/sh,这样所获取到的就是具有root权限的Shell。

而如何能够以root身份去执行Shell?这就是我们接下来所要学习的提权操作。