介绍
在渗透测试或脆弱性评估过程中最重要的一个阶段就是权限提升。在这一步,黑客和安全研究人员试图找出一种方法(溢出漏洞,bug,错误配置)来提升用户的权限。当然纵向提权才是是终极目标。对于许多安全研究人员来说,这是一个迷人的阶段。
接下来我们会看到几个提权的真实例子,我们将使用由Vulnhub提供的测试环境。在这里,我们假设已经获得了普通用户权限,在此之上进行提权。
我们会手动执行提权操作,但这并不意味着不能使用工具进行自动提权。文章中会给出工具和相关论文。在你开始阅读如何提权之前,我建议你看一下由非常有才华的g0tmi1k编写的提权圣经:G0tmi1k: Basic LinuxPrivilege Escalation。
本文的目的是告诉你如何提权而不是提权的原理,因为原理说来话长,g0tmi1k等人已经写过相关文章。
Lab1:VulnOS 2
这个环境就是常见的溢出提权了。
我们要做的操作是:
1、 检查操作系统发行版本
2、 查看内核版本
3、 检查用户列表以及当前用户权限
4、 列出SUID文件。相关阅读:Common Linux Misconfigurations –InfoSec Resources – InfoSec Institute
5、 查看已安装的包,程序和运行的服务。版本过期的可能会有漏洞。
好的,我们先执行命令:lsb_release –a,查看发行版本。
执行:uname –a,查看内核版本。
在提权过程中,要尽可能使用每一种方法。比如系统的溢出漏洞,服务的溢出漏洞,暴力破解等。
我们现在知道操作系统是ubuntu 14.04.4 LTS,内核版本为3.13.0-24-generic,我们尝试的第一个方法是使用流行的溢出漏洞overlayfs,支持ubuntu 12.04/14.04/14.10/15.04和内核版本大于3.13.0小于3.19。我想应该会溢出成功。
我们切换到tmp目录下,并创建溢出代码并编译它:
$cd /tmp $touch exploit.c $vim exploit.c $gcc exploit.c –o exploit
然后$./exploit 运行溢出程序
正如你所看到的,溢出程序执行成功了,我们获得了root权限。通过执行$ python -c ‘import pty; pty.spawn(“/bin/bash”)’获得了root权限的会话。
也有更新版本的利用程序:
Linux Kernel 3.13.0 < 3.19 (Ubuntu12.04/14.04/14.10/15.04) – ‘overlayfs’ Local Root Shell Linux Kernel 4.3.3 (Ubuntu 14.04/15.10) –‘overlayfs’ Local Root Exploit Linux Kernel 4.3.3 – ‘overlayfs’ LocalPrivilege Escalation
Lab2: Mr.Robot
Mr.Robot是另一个提权挑战并且是作者最喜欢的之一。我决定展示其特权升级部分,因为它将帮助您了解SUID文件的重要性。
进入会话后如下,我们要从daemon提权。
操作系统是ubuntu 14.04,内核版本是3.13.0-55-generic。所有的溢出程序都执行失败了。
我们该想想其他版本,正如在上面提到的。我们检查是否有配置不当的SUID文件。运行
$find / -perm –u=s –type f 2>/dev/null
在这里,我们列出了所有的SUID文件。你可以注意到一些奇怪的地方吗?为什么Nmap有SUID标识,让我们细看。查看nmap的版本。
$ /usr/local/bin/nmap –version
一个老的过时的版本。但是这要怎么帮助我们提权呢?
早些时期,Nmap支持所谓的“互动”选项。该选项使用户能够通过使用nmap的“shell”(交互式shell)执行shell命令。很多时候,安全研究人员使用此选项,以避免在bash的历史日志文件记录自己的nmap命令。下面是如何启用nmap的交互shell:
!号紧跟着我们要执行的命令。于是我们执行!sh,因为Nmap有SUID标识,我们可以获得一个root权限的会话。
但是在实际环境中你很少会碰到设置了SUID的Nmap。这个例子教会你要检查SUID的重要性。Vulnhub的测试环境里面还有其他的也使用了SUID的程序,可以去尝试下。
Lab3:PwnLab-Init
这里我们使用的是kane用户。
检测了下当前环境后,操作系统没有溢出利用。SUID文件下有一个位于Kane的Home目录下,叫做msgmike。
列出下当前目录下的文件。
Msgmike是一个ELF32-bitLSB可执行文件,当我们尝试执行的时候报错了。
错误提示告知程序尝试调用cat命令来查看msg.txt文件的内容。
有一个方法就是修改bash的环境变量$PATH来提权。比如用.(代表当前目录)替换掉原有的/usr/local/bin,/usr/bin等,看看会发生什么?
当前的环境变量是
然后我们创建一个cat文件。
并赋予执行权限。$chmod +x cat
然后将当前目录添加到环境变量中。
当我们再次执行./msgmike时,获得了mike权限的会话。
但是挑战到这里并没有结束,接下来如何获得root权限并不难,但是很难解释清楚什么叫做“命令注入攻击”。
还没有评论,来说两句吧...