Windows 全系列高危CTF 漏洞,20岁高龄 -- 记事本
···
You can pwn a Windows box via Notepad.exe
···
原作:公众号Hackerhub
今天起床就被Notepad弹窗吸引到了,略激动。。。再次膜拜Google Project 0 的Tavis 大神。
屁颠颠找文章,原文太长太长,先简略地找些关键信息翻译翻译。
半天前,Google Project 0的Tavis 发布了一篇题为:
呃....
《Down the Rabbit-Hole...》
(走进兔子窝...)
头一段是一句引用:
···
Sometimes, hacking is just someone spending more time on something than anyone else might reasonably expect.
···
翻译过来是:找程序漏洞就是,专注于某些事情比别人预期花的时间更加的多
···
Windows 的 CTextFramework 简称 CTF,并不是 《亲爱的,热爱》中的CTF哈,两者没有关系
这个漏洞已经有20年高龄,可以追溯到Windows XP时代,且影响范围包括XP到现在的Windows 10全系列Windows
在役系统。
这个漏洞存在于MSCTF 客户端与服务端的交互过程中,允许一个非常低权限(甚至是沙盒程序)的应用去读和写内容到一个更高权限的应用里面。
MSCTF是 操作系统中 Text Services Framework (TSF)的一个模块,用来管理输入方法,键盘布局和打字以及语音识别的。
简单来说,当你登录你的Windows系统,它就会启动一个CTF监控服务,这个监控服务以一个中心管理的角色,去处理各个客户程序的沟通,这实际上是让每个进程运行在同一个session里面。
'''
你可能已经发现,cftmon服务就出现在任务管理器里。它负责同志应用程序关于键盘布局的改变,或者数据方法的变化。内核会在应用程序启动时,强制应用程序去连接ctfmon服务,然后才跟其他应用程序交互信息,并接收这个服务的通知
'''
Tavis 发现这个漏洞,起因是发现这个过程没有任何的访问控制,或者说没有任何校验过程。
任何程序,任何用户甚至是沙盒都可以:
'''
连接CTF session(会话)
读和写任何窗口的文本,无论是哪个session的都可以。
假冒它们自己的线程ID,进程ID或者HWND
假装成一个CTF服务,追踪其他应用,甚至是特权应用,并去连接它,或者
沙盒逃逸,提权
···
Tavis 表示
'''
CTF没有任何访问控制,所以你可以连接到其它用户的活跃session里面,然后控制其它应用,或者等待一个管理员登录然后去搞它的 session
事实证明,session间的相互触达和侵犯 NT 安全边界的漏洞,已经差不多20年了,但却没有人留意
'''
如果进一步发掘,CTF协议的漏洞还允许攻击者绕过用户接口权限隔离User Interface Privilege Isolation (UIPI),让一个非特权程序作出:
```
读其他应用窗口的敏感信息,包括密码和对话框
攫取SYSTEM权限
控制UAC(用户访问控制)授权对话框
给管理员控制session发送命令,或者
逃逸 IL/AppContainer 沙盒,通过给非沙盒窗口发送输入字符来做到。
```
这里有一个POC视频,展示,利用CTF漏洞,在Windows获得SYSTEM权限。
(额,视频上传失败 ...到下面Github页看吧)
taviso 还在github 放出了CTF利用工具,并有与之相关的众多描述。
CTF利用工具
'''
https://github.com/taviso/ctftool
···
关于CTF漏洞的原文:
···
https://googleprojectzero.blogspot.com/2019/08/down-rabbit-hole.html
··