打印机漏洞


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

打印机调用流程: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. C#多线程开发-线程同步 02

    上一篇文章主要带领大家认识了线程,也了解到了线程的基本用法和状态,接下来就让我们一起学习下什么是线程同步. 线程中异常的处理 在线程中始终使用try/catch代码块是非常重要的,因为不可能在线程代码 ...

  2. 微信支付 V3 开发教程(一):初识 Senparc.Weixin.TenPayV3

    前言 我在 9 年前发布了 Senparc.Weixin SDK 第一个开源版本,一直维护至今,如今 Stras 已经破 7K,这一路上得到了 .NET 社区的积极响应和支持,也受到了非常多的宝贵建议 ...

  3. K8S的核心概念

    1.Pod -- 是最小部署单元 -- 是一组容器的集合 -- Pod中的容器共享网络 -- 生命周期是短暂的 2.controller -- 确保预期的pod副本的数量 -- 确保所有的node运行 ...

  4. noip模拟47

    原版在 \(linux\) 本地写完没保存关机给没了-- 再简单写一下 \(t2\) 用 \(dp\) 转移 \(f[i]=\sum _ {j=last[a[i]]}^{i-1} f[j]\) 用前缀 ...

  5. C# List集合类常用操作:三、查找

    List集合查询数据 List<Employees> employees = new List<Employees>(); employees.Add(new Employee ...

  6. Vue组件传值(三)之 深层嵌套组件传值 - $attrs 和 $listeners

    $attrs 包含了父作用域中不作为 prop 被识别 (且获取) 的特性绑定 (class 和 style 除外).当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class和 ...

  7. Playfield 类方法的注释

    前言 本篇随笔的底包采用的是百度炉石兄弟吧20200109折腾版中自带的 routines 文件. 本次仅为绝大多数方法添加 xml 注释和简单解析,没有具体解析与重构. Playfield 类方法众 ...

  8. 【第二篇】- Maven 环境配置之Spring Cloud直播商城 b2b2c电子商务技术总结

    Maven 环境配置 Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK. 如果你还未安装 JDK,可以参考我们的 Java 开发环境配置. 系统要求 项目 要求 JDK ...

  9. servlet请求转发于重定向

    请求的转发与重定向是Servlet控制页面跳转的主要方法,在Web应用中使用非常广泛. 一. 请求的转发 Servlet接收到浏览器端请求后,进行一定的处理,先不进行响应,而是在服务器端内部" ...

  10. private关键字理解

    private 意思: 私有的 私人的 不公开的 private 是一个修饰符可以用来修饰成员变量和方法 被private修饰的成员变量或成员方法,只能在本类中访问,针对private修饰的成员变量, ...