freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Linux提权系列5:[训练营]利用 SUID 二进制文件获取根用户 Shell
奶牛安全 2023-04-19 15:34:16 153718
所属地 广东省

在上一篇文章中,已经解释了文件上的 suid 位,并通过 C++ 程序演示了它的用法。在本文中,将使用相同的知识利用 SUID 权限配置错误的漏洞来提权。

第一个实验

查看当前目录,发现有两个root用户的文件。

图片

运行欢迎文件只是打印一条消息。

通过strings命令来查看welcome文件,发现它执行greetings程序

图片

任何设置了 SUID 位并从 PATH 环境变量调用另一个程序的二进制文件都是提权的明确标志。所能做的就是简单地在路径变量前面加上恶意可执行文件所在的路径,它就会出现一个root shell。

由于greetings程序就在student用户拥有的目录下,所以PATH环境变量不需要更改。只需要rm -fr greetings

图片

现在创建包含以下内容的greetings文件。执行此操作后,请确保使用chmod +x ./greetings使文件可执行

#!/bin/bash

/bin/bash -i

重新运行welcome

图片

获得了root shell

第二个实验

大多数情况下,不会像在上一个实验中那样幸运。需要首先找到易受攻击的二进制文件,然后利用它们

find / -type f -perm -4001 -exec ls -h {} \; 2> /dev/null

上面的命令将在根目录(/)中找到设置了 suid位和全局可执行权限(-perm -4001)的文件(-type f)并执行 ls -l-exec ls -l {} \;) 显示每个匹配项,并把标准错误重定向到 /dev/null(2> /dev/null) 产生类似于下图的输出

图片

当打开 vim.tiny /etc/shadow时,不要让 vim.tiny中的 [readonly]欺骗了


图片

已经以 root用户身份运行vim.tiny,所需要做的就是从 OpenSSL工具创建密码并更新 /etc/shadow文件

图片

现在通过执行 su - root更改用户并使用刚才从 OpenSSL工具生成的密码登录

图片

获得了 root 用户的 shell

第三个实验

在查找 SUID二进制文件时,会发现 /usr/bin/find二进制文件与其他标准二进制文件不同。因此,这可能用于提升权限

图片

现在已经熟悉了 find命令,对于每一项,都可以使用 -exec参数对其执行命令。在这种情况下,只需要使用 -exec /bin/bash -ip参数来获得特权用户交互式 bash shell

图片

第四个实验

这是一个非常冗长的实验,因为先必须执行水平权限提升(获取另一个非特权用户的 shell)并获得对不同用户的访问权限,然后从该用户获取特权用户的shell(垂直权限提升)。

在搜索 suid二进制文件时,发现用户 john拥有一个二进制文件 /userfiles/john/notebook

图片

执行它生成了一个 john的 shell

图片

现在再次搜索 suid二进制文件并期待其他结果。在这种情况下,将看到 /home/john/imroot归 root用户所有

图片

在执行程序文件时,它什么也没做,只是简单地打印No root for you!!。也许它需要一些参数

图片

不幸的是,有一个imroot.c文件,但它只能由 root用户读取。

图片

由于安装了GDB,在调试时首先发现它正在执行strlen函数并比较长度为0x4的字符串。所以得到命令参数的长度必须是 4 个字符的想法。

图片

进一步检查,发现它正在反复比较一些十六进制字符串 4 次,这是输入的长度。所以把它复制到某个地方

图片

得到\x63\x6d\x64\x3dASCII字符后,发现等于cmd=

图片

当尝试 cmd=<command>时,它以 root用户身份执行。所以第二个命令是生成一个特权 shell

图片

以 root 用户身份获得特权 shell!

# 渗透测试 # 系统安全 # 内网渗透 # 漏洞分析 # CTF
本文为 奶牛安全 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
linux提权
奶牛安全 LV.4
个人公众号:奶牛安全
  • 34 文章数
  • 27 关注者
美国NSA超级后门`Bvp47`的隐身技能:网络隐身2
2023-05-05
美国NSA超级后门`Bvp47`的隐身技能:网络隐身1
2023-05-02
美国NSA超级后门Bvp47隐身技能:进程隐身
2023-05-02
文章目录