打印机漏洞


该漏洞可以通过创建打印机驱动和端口,实现任意文件写入,用于提权或者写入后门。

打印机调用流程:client通过RPC调用server的spoolsv.exe,spoolsv.exe是system权限,容易产生EOP漏洞。

通过powershell可以直接创建打印机驱动和端口。

系统中添加一台新打印机

Add-Printer -Name "PrintDemon" -DriverName "Generic / Text Only" -PortName "c:\windows\tracing\myport.txt"

输出到文件

"Hello,Printer!" | Out-Printer -Name "PrintDemon"

CVE-2020-1048

“AddPort函数浏览网络以查找现有端口,并弹出对话框供用户选择。AddPort函数应该经过调用EnumPorts来验证用户输入的端口名称,以确保不存在重复的名称。AddPort函数的调用方必须具备访问端口所链接的服务器的SERVER_ACCESS_ADMINISTER权限。要添加端口而不显示对话框,可调用XcvData函数而不是AddPort”。

经过控制面板添加打印机在底层是调用了AddPort函数,该函数会触发spooler程序对端口的合法性校验。经过PowerShell命令添加打印机在底层则是直接调用XcvData函数,该函数不会触发spooler程序对用户添加的端口进行安全校验。这个函数可以将port name设置为任意文件而不被检查。

Add-PrinterPort -Name c:\windows\system32\ualapi.dll

在PowerShell窗口中执行即可.

CVE-2020-1337

经过补丁后,紧随其后的CVE-2020-1337又有姿势可以绕检查

从github上获取样本分析

https://github.com/math1as/cve-2020-1337-exploit

powershell -ep bypass ``-F` `C:\CVE-2020-1337-exploit-master\exploit.ps1

在查看了公布的脚本文件可以发现

它的命令也是非常的简单,在执行上述过程中添加了一条命令创建一个系统目录软联接

cmd /c mklink /J c:\users\test\mytarg5 C:\Windows\system32

无论是AddPort还是修复后的XcvData函数进行检查时,都是判断当前用户是否具有对目标路径的访问权限的。

将port name指向 c:\users\test\myfolder\xxx.dll ,通过检查后,再将mytarg5作为一个软链接重定向到目标的系统路径中,即可完成对补丁的绕过。

创建一个软连接,将文件打印位置改为 c:\users\test\mytarg5,便会在C:\Windows\system32下成功创建ualapi.dll.

利用方法

可以使用dll劫持方法。利用目标服务调用特定dll的特性,写入恶意dll,实现权限维持等功能。

[原创] 【漏洞利用】cve-2020-1048、cve-2020-1337漏洞原理及利用-二进制漏洞-看雪论坛-安全社区|安全招聘|bbs.pediy.com

CVE-2021-1678

远程调用打印机漏洞。

RPC协议:

此处的RPC为0x02未添加保护措施,易被中间人攻击。

客户端向恶意服务器发起NTLM协商时,黑客会通过打印机远程过程调用 (RPC) 绑定处理远程 Winspool 接口,然后重放ntlm请求登录。随后就可以远程利用打印机漏洞。

print spooler LPF 打印机漏洞的更多相关文章

  1. print spooler 服务无法启动 打印机全部消失

    这往往是失败的打印任务导致的. 打开 C:\Windows\System32\spool\PRINTERS ,这个目录下的文件全是打印缓存,失败的任务也保存在这里.把这里的文件全部删除,然后再重新启动 ...

  2. win7系统服务print spooler 无法启动解决方法(开启及关闭方法)

    以下是小编从新浪博客一个大雕博客中找到的“print spooler 无法启动”解决方法,请您仔细参考. 在下的系统是Windows7正式版,因为经常要制作PDF文件,所以对虚拟打印机使用较多,在下的 ...

  3. Windows打印体系结构之Print Spooler概念与架构

    Windows打印体系结构之Print Spooler概念与架构Windows 思杰之路(陶菘) · 2016-09-06 22:07 房子好不好,对我而言始终都是肉体的栖居.对于灵魂,我从来不知道该 ...

  4. 开启打印服务Print Spooler

    windows系统需要开启Print Spooler才能进行打印,如果不开启,可能造成很多现象和原因,比如windows打印机队列的打印机全部消失,用Lodop打印的时候提示"Printer ...

  5. Print Spooler 服务自动停止

    1)先在服务里停止并禁用Print Spooler : 2)删除此文件夹下的所有文件,C:\Windows\System32\spool\PRINTERS\ : 3)删除注册表 HKEY_LOCAL_ ...

  6. 无法启动print spooler服务,错误2,系统找不到指定的文件

    来自百度: 无法启动print spooler服务,错误2,系统找不到指定的文件 我的打印机无法运行:出现"打印后台程序没有执行"提示.查:print spooler没有启动.点击 ...

  7. 启动Print Spooler服务提示:"错误1068,依存服务或无法启动"

    本人windows8操作系统,从网上看到在运行中输入  sc config spooler depend= rpcss 即可,试了下果然有效.具体原因待了解.

  8. Win7 Print Spooler服務自动关闭

    对于Win7系统而言,该问题通常是安装了错误的打印驱动引起的,Win7系统为了保护其它进程不受干扰,自动关闭了打印服务. 解决方法就是: a> 把不用的打印机删掉. b> 确保你安装了正确 ...

  9. win8 优化笔记

    win8可以关掉的服务: 以下是小编搜集的可以安全更改为手动启动的服务(按名称排序): Application Experience(启动时为程序处理应用程序兼容性缓存请求) ·Computer Br ...

随机推荐

  1. 浅谈可持久化Trie与线段树的原理以及实现(带图)

    浅谈可持久化Trie与线段树的原理以及实现 引言 当我们需要保存一个数据结构不同时间的每个版本,最朴素的方法就是每个时间都创建一个独立的数据结构,单独储存. 但是这种方法不仅每次复制新的数据结构需要时 ...

  2. (七)羽夏看C语言——模板(C++)

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  3. WebService学习总结(五)--CXF的拦截器

    拦截器是Cxf的基础,Cxf中很多的功能都是由内置的拦截器来实现的,拦截器在Cxf中由Interceptor表示.拦截器的作用类似axis2中handle.Cxf的拦截器包括入拦截器和出拦截器,所有的 ...

  4. rtl8188eu 驱动移植

    测试平台 宿主机平台:Ubuntu 16.04.6 目标机:iMX6ULL 目标机内核:Linux 4.1.15 rtl8188eu 驱动移植 在网上下载Linux版的驱动源码: wifi驱动的实现有 ...

  5. nRF52832蓝牙iBeacon广播

    开发环境 SDK版本:nRF5_SDK_15.0.0 芯片:nRF52832-QFAA 蓝牙iBeacon实现 iBeacon的核心就是广播,不需要进行连接,通过在广播包中插入信息然后广播出去. 广播 ...

  6. unity2021游戏引擎安装激活并汉化

    今天重新搭建了下unity的开发环境,也踩了不少坑,还有就是看了一些unity3d的教程,越看越不可思议,unity居然能做这么多好玩的东西,像枪战类,模拟类,角色扮演,动作冒险都很震撼. 但是震撼归 ...

  7. RocketMQ详解(一)原理概览

    专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...

  8. ZBLOG PHP调用相关文章列表以及上一篇下一篇文章代码

    如果是比较小的个人博客.专题类网站项目,老蒋还是比较喜欢使用ZBLOG PHP程序的,无论是轻便度还是易用性上比WordPress简单很多,虽然WP的功能很强大,比如强大的插件和主题丰富功能是当前最为 ...

  9. 驱动IO模型-select

    新人学习,欢迎指正 部分select.c代码 应用层 select(maxfd+1,&rfds,NULL,NULL,NULL); -------------------(系统调用)------ ...

  10. 搭建GIT仓库