幽灵利用“狂野”

2021-03-01 20:25:52

有人愚蠢到足以在VirusTotal上上传适用于Linux(还有一个我没有看过的符号的Windows)的有效幽灵(CVE-2017-5753)漏洞,所以这是我周日下午的快速懒惰分析。

二进制文件的-h选项被删除,可能在#define后面,以避免检测,但是它的某些参数是显而易见的,例如指定要泄漏的文件或内核基地址。作者没有检查(或关心)日志记录功能尚未完全优化,只剩下一堆字符串有助于反转过程。

在/ etc / shadow(可能是默认选项)的情况下,通过在后台连续运行以下命令将文件的内容推入内存:return system(&echo \" whatever \ n \&# 34; | su-2> / dev / null")。在我的实验室中,该漏洞利用程序在几分钟内成功转储了/ etc / shadow。当下。我没有设法理解为什么该漏洞在存在时会失败。

该漏洞利用的关键是在0x4092f0,使用cpuid作为串行化指令,使用rdtsc进行定时,并使用mfence / lfence作为障碍,如本文所述。它还使用一些技巧来最大程度地减少读取的次数,例如特定于类型的函数,例如内核地址具有特定的格式。

出现时,可以通过查看/ proc / kallsyms来绕过KASLR,该特权可用于非特权用户,例如Fedora上的情况,直到最近为止,或者使用Gruss从prefetch侧边通道的通用旁路,以及从一个名为的库中创建。 libkaslr。有趣的是,这种方法仍然可以在最新的Linux上运行,再次证明了KASLR毫无用处。对于无法访问/ proc / kallsym文件的系统,漏洞利用依赖于硬编码的偏移量,而只有Fedora,ArchLinux目前支持Ubuntu和Ubuntu,有检查Debian和CentOS的功能。在2021年任意读取的漏洞利用中看到硬编码的偏移量真是令人惊讶。