ecshop — это независимая система интернет-магазинов B2C, подходящая для предприятий и частных лиц для быстрого создания персонализированных интернет-магазинов. Система представляет собой кроссплатформенную программу с открытым исходным кодом, разработанную на основе языка PHP и архитектуры базы данных MYSQL. Последняя версия — 3.6.0. Недавно выяснилось, что в ecshop существует уязвимость SQL-инъекции, которая может затронуть все серии. В этой статье кратко проанализированы причины уязвимости SQL-инъекции.
Эта уязвимость в основном связана с уязвимостью в ответе на вход в файл user.php. Его внутренние параметры отображения могут контролироваться злоумышленником, что приводит к уязвимости SQL-инъекции. Эту уязвимость можно использовать для удаленного выполнения произвольных команд.
Ответ на вход в систему, присвойте значение http_referer $back_act, параметр Referer может контролироваться злоумышленником.
Функция присваивания присваивает значение переменной $back_act переменной back_act. smarty — это шаблонизатор, который присваивает значение back_act файлу шаблона user_passport.dwt. дисплей считывает содержимое файла user_passport.dwt и выводит результаты после фильтрации
функция отображения fetch -> make_compiled -> file_get_contents -> fetch_str ->smarty_prefilter_preCompile ->select Удалите значение $out в html, которое содержит содержимое реферера. $out вырезается через переменную _echash, а _echash жестко запрограммирован в коде.
В это время полезная нагрузка реферера сокращается до $val.
Функция Insert_mod обрабатывает динамический контент $val
Разделите $val на |
$para десериализуется с помощью unserialize
$fun($para) динамически вызывает функцию Insert_ads, то есть Insert_ads($para). В Insert_ads существует уязвимость внедрения SQL. Продолжайте отслеживать Insert_ads. Эта функция напрямую объединяет значения id и num в SQL, что приводит к уязвимости внедрения. Среди них id="'/*" заключен в одинарную кавычку a.posttion_id, /* и num объединяются для комментирования порядка
*/ и id/* в num объединяются с порядком аннотаций, и запрос на объединение анализируется в базе данных.
Position_style присоединяется обратно для извлечения
fetch -> fetch_str Перенесите совпавшие символы в функцию выбора для обработки. в это время
Отслеживайте позицию_style для выбора функции
select -> get_val –> make_var
наконец-то совпало
в это времяselectпобедить
И вернитесь к fetch_str для вызова _eval, вызывающего выполнение произвольной команды. Эта команда предназначена для написания трояна-предложения посредством декодирования base64.
Для версии 3.x в ecshop добавлены waf и фильтрованный выбор объединения. Вы можете поместить эти два слова в значения id и num, чтобы обойти waf, и одновременно изменить значение _echash.
Установите версию ecshop2.7.3 на виртуальную машину. Выполните приведенный выше скрипт,Вы можете написать предложение Троян<?php eval($_POST[1337]); ?> в 1.php Подключитесь через чоппер и получите разрешения веб-сервера
Поскольку ecshop официально не исправил эту проблему, вы можете выполнить интервальную обработку параметра num;id в Insert_ads.
https://xz.aliyun.com/t/2689 https://blog.csdn.net/u012078682/article/details/37737015 http://ringk3y.com/2018/08/31/ecshop2-x%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C/