Как проводить инъекции в HQL написано
здесь.
Доступные функции при проведении инъекций в HQL -
http://www.h2database.com/html/functions.html
Провести инъекции можно на все таблицы данных независимо от наличия прав доступа к ним. Если на сайте база под ReadOnly юзером, мы все равно можем обращаться к другим таблицам.
Суть уязвимости заключается в обходе HQL парсера. Он считает что
XX
non-breaking-spaceXX это 1 символ, а база данных видит в нем подзапрос.
Таким образом если мы заменим пробел на
\u00A0, то сможем выполнить любой запрос.
Например:
Сообщение от
None
query=' and (select password from users where id=1)=0 or ''='
Выведет ошибку HQL на недостаток доступа или о том, что надо установить resultSet scroll.
А если мы поправим запрос так:
Запрос картинкой потому что WAF античата не даёт создать тему с таким запросом
Запрос можно взять тут.
Где X заменим на
\u00A0, то парсер пропустит данный запрос и обратится к базе, которая нам всё покажет.