
Exploit de prova de conceito para Cacti 1.2.24 SQL injection em graph_view.php levando a execução remota de código, com configuração de laboratório baseada em Docker e exemplos detalhados de payload.
[ WHS 3ª geração ] - 남기찬_7342 (ChoDeokCheol)
grow_right_pane_tree no arquivo graph_view.php do servidor Cacti 1.2.24.action é definido como tree_content, existe o parâmetro rfilter que recebe entrada do usuário.rfilter é validado pela função html_validate_tree_vars, mas essa validação apenas verifica se é uma expressão regular válida.rfilter é inserido em uma consulta SQL, permitindo injeção de código.docker-compose -v.docker compose up -d. (Imagem: cacti:1.2.24)

Esta vulnerabilidade ocorre quando a configuração de autenticação permite que usuários comuns (convidados) também visualizem gráficos.
Esta vulnerabilidade pode ser verificada com a seguinte entrada de parâmetro:
http://your-ip:8080/graph_view.php?action=tree_content&node=1-1-tree_anchor&rfilter=aaaaaaa"%20OR%20""="(("))%20UNION%20SELECT%201,2,(select%20concat(id,0x23,username,0x23,password)%20from%20user_auth%20limit%201),4,5,6,(select%20user()),(select%20version()),9,10%23
Podemos verificar que a resposta foi dada conforme solicitado.
Ataques de injeção SQL ocorrem principalmente quando a interação com o servidor aceita entrada do usuário. Com este ataque de injeção SQL, foi possível violar a confidencialidade interna do banco de dados e resultar no vazamento de ativos.
Como medida para essa injeção SQL, pode-se verificar a validação básica de lista branca no rfilter ou escapar caracteres especiais como (", ', ;, ...). Ou podem ser feitas melhorias como usar uma biblioteca ORM, como Doctrine, ao acessar o banco de dados.