什么是提权
提权是在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:
查看Kali使用的Shell:
除了这些默认Shell之外,在系统中还提供了很多其它类型的Shell可供我们选择,这些Shell的信息都存放在/etc/shells文件中,比如下面就是CentOS系统中提供的所有Shell:
除了/bin/bash之外,/bin/sh也是一个经常使用的Shell,在之后的操作中,经常会用到这两个Shell。
从黑客的角度,其最终目的是获取对服务器的操作权限,这就需要获取到服务器的Shell。
那又该如何获取到服务器的Shell呢?
只需要能够设法在服务器上执行/bin/bash或/bin/sh即可。
只要运行了这些程序,就是打开了一个Shell,也就获得了一个系统的操作界面。
回到靶机,我们之前已经使用alice账号通过SSH服务成功登录上了靶机,这时alice其实就是获得了一个Shell。
可以查看,当前所使用的正是Bash Shell:
之前说过,alice这种普通用户在系统中的权限非常小,所以黑客的目标是要获得系统权限,也就是要把权限提升到root。
提权的总体思路就是要设法以root用户的身份去执行/bin/bash或/bin/sh,这样所获取到的就是具有root权限的Shell。
而如何能够以root身份去执行Shell?这就是我们接下来所要学习的提权操作。