一个概念验证扫描器,用于检查 RDP 网关服务器是否存在 CVE-2020-0609 与 CVE-2020-0610 漏洞。
扫描内存损坏漏洞存在风险,可能导致系统崩溃。 尽管本工具在设计上尽量避免导致崩溃,但无法 100% 保证稳定性。 请自行承担使用风险,并且仅可扫描你拥有测试权限的系统。
python3 RDGScanner.py <ip> <port>
要理解这些漏洞,你可以阅读我在此处的文章: https://www.kryptoslogic.com/blog/2020/01/rdp-to-rce-when-fragmentation-goes-wrong/
CONNECT_PKT_FRAGMENT 消息允许将连接消息分片到多个数据包中。每个数据包都有一个字段,用于指定该数据包在序列中的位置(fragment_id)以及序列中的数据包总数(num_fragments)。
CVE-2020-0610 是一个越界写入漏洞,当 fragment_id 大于 64 时触发。为缓解该漏洞,已添加检查,当 fragment_id 或 num_packets 大于 64 时判定失败。
通过将 num_fragments(而非 fragment_id)设置为大于 64 的值,我们可以在不冒利用该漏洞风险的情况下使安全检查失败。在已打补丁的系统上,我们会以错误代码 0x8000ffff 断开连接,而在未打补丁的系统上则不会发生任何事情。