傲游浏览器存在可信任路径漏洞
问题不大,就是个小问题。
事件描述
EN:
Maxthon Browser for Windows - Unquoted Search Path and Potential Abuses (CVE-2019-16647)
CN:
傲游浏览器存在可信任路径漏洞
路径劫持(path interception),中文名为可信任路径漏洞,这一漏洞的最常见形式如下:在Windows操作系统平台中,系统会等待例如“c:program.exe”形式的路径地址,并根据这一地址来提供服务,否则其他的应用程序将会使用没有加引号的路径地址来启动和运行。
如果没有使用引号来将路径地址括起来,那么系统会对给定的路径地址进行遍历,当给定的地址中存在空字符或者空格符的话,操作系统将会执行遍历路径下任何一个子字符串与给定路径匹配的应用程序。
类似的漏洞原理
Windows版Maxthon 5浏览器中发现了一个新漏洞CVE-2019-16647。具有管理员权限的攻击者通过漏洞可以利用技术植入任意的未签名的可执行文件,该可执行文件通过签名服务并以NT AUTHORITY\SYSTEM权限执行。
从某种意义上来讲,确实触手可及了。
起因
启动MxService服务后,傲游浏览器会以NT AUTHORITY\SYSTEM执行MxService.exe签名的进程。
但从运行的日志可以看出,在找到services.exe在找到并执行实际的可执行文件之前,它会先查找丢失的EXE文件(C:\Program.exe)
PoC
为了测试此特权升级漏洞,安全研究员编译了一个没有签名的EXE文件,将其放置在C:\Program.exe,主要功能创建一个,将执行该进程的用户以及加载进行的名称作为txt的文件,如下图所示,效果便是达到system权限。
漏洞成因
打开Maxthon浏览器的安装程序后,它会将名为MxInstall.exe的可执行文件写入临时文件夹。而该可执行文件会使用WinAPI CreateServiceW函数创建服务。
在此之前,它调用sprintf以便格式化包含服务可执行文件路径的缓冲区:
sprintf(&BinaryPathName,"%sBin\\MxService.exe",MaxthonPath);
并将BinaryPathName缓冲区传递给CreateServiceW:
因为下面路径里面有空格,触发漏洞便会搜索
C:\Program Files (x86)\Maxthon5\Bin\MxService.exe
所以函数就会自动搜索,如一开始的图片所示,变成了请求C:\Program.exe
根据MSDN中的CreateServiceW函数文档:
lpBinaryPathName
服务二进制文件的标准路径。如果路径包含空格,则必须用引号引起来,以便正确解释它。
例如,将
"d:\my share\myservice.exe"
定义为
""d:\my share\myservice.exe""
影响版本与利用方式
适用于Windows的Maxthon Browser 5-5.1.0至5.2.7
利用方式:
白名单绕过
该漏洞使攻击者能够通过签名服务执行恶意有效载荷。攻击者可能出于不同目的(例如执行和逃避)滥用此功能,例如:应用程序白名单绕过。
攻击持久化
该漏洞还使攻击者能够在每次加载服务时以持久的方式执行恶意有效负载。这意味着一旦攻击者在我们前面提到的路径之一中释放了恶意EXE文件,该服务将在每次重新启动时加载恶意代码。这样,安全产品可能不会检测到恶意Payload,因为执行攻击者Payload的服务进程是已签名并通过本机权限运行。
所以,攻击者无需采取可疑的操作。一旦启动,serviceit就会执行恶意可执行文件。
特权提升
该漏洞使攻击者能够以管理员身份获得NT AUTHORITY\SYSTEM权限。
*目前该漏洞仍未修补。
而同样类型的漏洞,也被这个安全厂商在9月份报道Forcepoint VPN Windows客户端的一个未加引号的搜索路径漏洞。
还有好久好久之前的金*,联*等等,以前很流行,现在很少见了。
上期阅读
▲