常见的提权方式
文章介绍了Windows和Linux系统的多种提权方法:Windows通过at命令、SC命令、绕过UAC模块、烂土豆漏洞实现提权;Linux则利用脏牛漏洞(CVE-2016-5195)、SUID权限机制及sudo配置不当获取root权限。 2025-8-11 07:10:0 Author: www.freebuf.com(查看原文) 阅读量:6 收藏

Windows系统

先从简单的说起

  • at命令

Windows XP, Windows2000,Windows 2003 这三种系统可以直接用at命令提权

Windows XP为例:打开命令行。 at 时间 /interactive cmd

1754882132_689960542c1988102b1f2.png!small?1754882133410

果不其然 在11:12的时候 弹窗 成功获取system权限

1754882209_689960a17cb5cdc2a64e0.png!small?1754882211054

但是桌面还是原来的权限

1754882258_689960d258cf7d4faa749.png!small?1754882260309

  • SC命令

Windows 7、Windows 8、Windows Server 2003、Windows Server 2008、Windows Server 2012、Windows Server 2016 、Windows XP

在命令行中

sc Create systemcmd binPath= "cmd /K start" type= own type= interact

会发现Success

1754883890_68996732214a072e56835.png!small?1754883890977

最后也是提权成功

  • 绕过UAC提权

打开kali

msf绕过uac利用方式

msf中内置了几个用于绕过uac的模块
search bypassuac
1754892989_68998abd8b0f909b56242.png!small?1754892990883

use exploit/windows/local/bypassuac_windows_store_reg
set lport 5555
set session1
run

1754893203_68998b9363886e705d55a.png!small?1754893205155

  • 烂土豆(Rotten Potato) MS16-075 提权是一个本地提权,只针对本地用户,不支持域用户

适用版本:Windows 7、8、10、2008、2012

https://github.com/foxglovesec/Potato

当拿到webshell使用msf上线时,由于此时是web权限,不能进行常规令牌窃取,权限不够,这时候需要借助烂土豆漏洞来进行提权。

将烂土豆文件上传到网站根目录(目标服务器内),并在msf中继续执行命令:

#查看当前目录是否上传烂土豆成功
ls

#执行烂土豆程序
execute -cH -f ./potato.exe
#加载窃取功能
use incognito
#查看可窃取的令牌
list_tokens -u
#使用令牌
impersonate_tokn "NT AUTHORITY\SYSTEM"

获得了令牌,就可以在不提供密码或其他凭证的情况下访问网络和系统资源

可以使用getuid命令查看当前用户 ID,若显示为 SYSTEM,则表示提权成功,也可以使用shell命令获得一个交互式 cmd shell,通过whoami命令再次确认权限。

1754893788_68998ddca6c2c1fbe7033.png!small?1754893789706

Linux

  • 脏牛提权

原理:该漏洞是 Linux内核的内存子系统在处理写时复制(修改数据时才真正分配内存空间)时存在条件竞争漏洞, 导致可以破坏私有只读内存映射。黑客可以在获取低权限的的本地用户后,利用此漏洞获取  其他只读内存映射的写权限,进一步获取 root 权限。

如果你的内核版本低于以下版本,则还存在此漏洞

Centos7/RHEL7     3.10.0-327.36.3.el7
Cetnos6/RHEL6     2.6.32-642.6.2.el6
Ubuntu 16.10      4.8.0-26.28
Ubuntu 16.04      4.4.0-45.66
Ubuntu 14.04      3.13.0-100.147
Debian 8          3.16.36-1+deb8u2
Debian 7          3.2.82-1

查询对应的版本,猜测是否可能存在脏牛漏洞

1754890968_689982d80b96e5250fd67.png!small

靶场为例:将exp下载到本地,使用gcc -pthread dirty.c -o dirty -lcrypt命令对dirty.c进行编译,生成一个dirty的可执行文件。

https://github.com/gbonacini/CVE-2016-5195

然后运行该文件。

如果成功的话,会返回一个root权限的shell,如下图

1754891556_6899852440b514d030f5a.png!small?1754891558242

获取了root用户密码为 dirtyCowFun

  • suid提权

原理:suid是 Linux 系统中的一种特殊权限机制,允许用户在执行某些文件时临时获得文件所有者的权限。所以用户凭借root权限进行提权。

1.find / -user root -perm -u=s -type f 2>/dev/null 查找用户所有者为root的文件 匹配具有 SUID 权限的文件,u=s表示设置了 SUID 位。

如图:

1754890081_68997f6134cd08c217936.png!small?1754890082043

可以看到usr/bin/find被赋予了suid权限,而他的所有者为root,我们可以这样获取一个root权限的shell:

find /etc/passwd -exec /bin/bash -p \;

成功

1754890178_68997fc2c03c6d7e27ac9.png!small?1754890179248

网上截图来的:不只find命令,有很多赋予suid权限的文件可以达到权限提升的效果(实际上也和rbash逃逸、sudo提权那些获取shell的命令相似),这里列举几个:

1754890225_68997ff1a3f066e40ff40.png!small?1754890226410

SUDO提权

普通用户一般无法使用root用户命令,使用sudo命令可以让普通用户拥有root权限,但是一般都需要输入用户的密码。管理员为了运营方便可能会对sudoer文件进行不合理的配置,使普通用户不需要输入密码就可以使用sudo命令,从而导致权限提升的问题产生。

创建一个新用户

1754894643_68999133e9509a8c40004.png!small?1754894644619

vim /etc/sudoers

插入user1 ALL=(root) ALL

:wq!保存后退出 切换到user1

如图

1754895768_6899959809661bfcbe258.png!small?1754895768469

总结

在操作系统提权领域,Windows 和 Linux 系统各有其典型的提权方法。

对于 Windows 系统,老旧版本如 Windows XP、2000、2003 可直接利用 at 命令,通过创建指定时间的交互式任务弹出 SYSTEM 权限的命令行窗口实现提权;而覆盖 XP、7、8 及多个 Server 版本的 SC 命令,则能通过创建以 SYSTEM 权限运行的系统服务达成提权目的。此外,借助 Metasploit 框架中的 bypassuac 模块可绕过用户账户控制实现提权,针对 Windows 7、8、10 及部分 Server 版本的烂土豆(Rotten Potato)漏洞(MS16-075),则通过上传程序执行后窃取本地 SYSTEM 令牌,让低权限用户获取高权限,不过该漏洞仅支持本地用户。

在 Linux 系统中,脏牛(Dirty Cow)漏洞(CVE-2016-5195)利用内核内存 “写时复制” 机制的条件竞争漏洞,使低权限用户获取只读内存写权限进而篡改文件获取 root 权限,其适用于内核版本低于特定安全版本的 CentOS、Ubuntu、Debian 等系统,通过编译运行 EXP 即可实现提权。SUID 提权则依托 Linux 的特殊权限机制,当 root 用户的文件被设置 SUID 权限时,低权限用户可借助 find 等此类文件临时获得 root 权限;而 sudo 提权多因管理员对 sudoer 文件配置不当,使普通用户无需密码即可通过 sudo 命令获取 root 权限。这些方法均围绕系统权限机制或漏洞,实现从低权限到高权限的提升。


文章来源: https://www.freebuf.com/articles/system/443765.html
如有侵权请联系:admin#unsafe.sh