tsfshell(tsfshell桌面)

···

You can pwn a Windows box via Notepad.exe

···


今天一早就被Notepad弹shell吸引到了,略激动。。。再次膜拜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

··