回归最本质的信息安全

渗透测试中的Linux提权

2016年8月26日发布

3,215
0
0

导语:在渗透测试或脆弱性评估过程中最重要的一个阶段就是权限提升。在这一步,黑客和安全研究人员试图找出一种方法(溢出漏洞,bug,错误配置)来提升用户的权限。

介绍

在渗透测试或脆弱性评估过程中最重要的一个阶段就是权限提升。在这一步,黑客和安全研究人员试图找出一种方法(溢出漏洞,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权限并不难,但是很难解释清楚什么叫做“命令注入攻击”。

​本文翻译于infosecinstitute,如若转载,请注明来源于嘶吼: http://www.4hou.com/technology/2422.html

点赞 0
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

Change

Change

嘶吼编辑

发私信

发表评论