Foxit Reader

  • 阅读pdf文件的软件 游戏电脑问题解决分享!

    阅读pdf文件的软件有哪些,这里给大家收集了8款可以用来打开PDF文件的软件,一起来了解一下吧。 轻快PDF阅读器 轻快PDF阅读器是一款简单易用的PDF阅读器,适用于安卓设备,支…

    2020年9月11日
    17
  • 织梦DedeCms快速入门视频教程(官方通用版)分享


      [适合对象]织梦初学者  [教程格式]视频(SWF)+手册(PDF)  [发布地址]http://help.dedecms.com/video/quickstart/

    织梦CMS教程 2020年5月11日
    96
  • 利用Foxit Reader的PDF Printer实现提权,网站安全分享!


    去年年中,我在一篇文章中讲述了在Foxit Reader中挖掘UAF漏洞的过程,以及如何利用该漏洞发送远程代码执行攻击。之后,我又在一篇文章中介绍了Foxit Reader SDK ActiveX中的一个命令注入漏洞。本着不放弃不抛弃的精神,在同年晚些时候我又对Foxit Reader的一个新组件进行了深入的研究。令我惊讶的是,在这个组件中又发现了几个允许有限提升权限的漏洞,其中一个漏洞尤其严重,所以,本文就诞生了。
    摘要
    我们将通过发送一个精心构造的proxyDoAction请求,来详细考察CVE-2018-20310(它是位于PDF Printer中的一个基于堆栈的缓冲区溢出漏洞)的攻击向量、漏洞分析和利用方法。
    软件版本
    文中描述的方法已经在9.3.0.912版本的Foxit Reader软件进行了测试,其中FoxitProxyServer_Socket_RD.exe二进制文件的SHA1值为:0e1554311ba8dc04c18e19ec144b02a22b118eb7。该版本是撰写本文时的最新版本。
    攻击向量
    PDF Printer是Foxit Reader中的一个功能,主要用于处理来自应用程序的PDF文件打印请求。安装Foxit Reader后,Foxit PDF Printer就会成为处理打印作业的默认打印机。

    从Chrome打印文档
    这实际上意味着FoxitProxyServer_Socket_RD.exe二进制文件启动后,会在中等完整性级别运行片刻。

    从应用程序打印文档时,FoxitProxyServer_Socket_RD.exe将在中等完整性级别运行
    只在这个级别运行片刻的原因是服务器默认监听localhost端口50000并且只接受一个请求。一旦发出请求,它就会关闭端口并终止执行。当用户尝试使用Foxit PDF Printer打印到PDF时,攻击者就能够在渲染选项卡中执行代码。
    在对该问题进行深入考察之后,发现可以从沙盒进程发出未公开的ALPC请求,以使用默认打印机启动打印作业。这意味着,攻击者根本不需要向FoxitProxyServer_Socket_RD.exe二进制文件发送竞争请求。
    漏洞分析
    在从浏览器打印页面时,我们截获了许多发送到端口50000的请求样本;此后,我们又发现了一个重要的函数,即sub_41DBA0。

    sub_41DBA0的代码流程
    这个函数用于处理多种不同类型的请求,其中,相应的处理程序在上图中用蓝色突出加以显示,其中包括:
    · proxyDoAction
    · proxyPreviewAction
    · proxyPopupsAction
    · proxyCPDFAction
    · proxyUpdatePreview
    · proxyFinishPreview
    · proxyCollectSysFont
    · proxyGetImageSize
    · proxyCheckLicence
    · proxyGetAppEdition
    · proxyInitLocalization
    · proxyCreateDirectoryCascade
    · proxyIEMoveFileEx
    · proxySendFileAsEmailAttachment
    虽然其中一些处理程序确实是高度可利用的,但并不总是能够到达易受攻击的API,这里,我们将以proxyIEMoveFileEx为例进行介绍。该函数接受三个参数,它实际上就是一个MoveFileExW调用,并且没有对参数进行任何检查。不过,由于它无法正确解析提供的数据包结构,因此,该函数实际上是无法利用的。通常情况下,软件开发人员在发布软件之前会进行相应的测试,以确保它们能正常工作!以下是这个底层API所在的位置:
    .text:00420C85 loc_420C85:                             ; CODE XREF: sub_420930+331
    .text:00420C85                 push    ebx             ; dwFlags
    .text:00420C86                 push    edi             ; lpNewFileName
    .text:00420C87                 push    eax             ; lpExistingFileName
    .text:00420C88                 call    ds:MoveFileExW
    在进行了更加深入的逆向分析之后,我们发现proxyDoAction也是一个非常让人感兴趣的函数,因为攻击者可以利用它的操作码抵达5条不同的代码路径。以下是检查请求数据包中的proxyDoAction字符串的相关代码:

     sub_41DBA0函数会检查proxyDoAction请求
    也就是说,只要能够提供正确格式的请求,我们最终可以到达该处理程序:

    用于到达处理程序的proxyDoAction请求
    在处理程序内部,我们可以看到它具有3个参数:

    2020年4月27日 网站安全
    202