Al realizar un pentest para una aplicación basada en Java, encontré un error de SQL (en realidad, HQL) simplemente colocando una comilla en uno de los parámetros de solicitud y rompiendo la sintaxis de la consulta. Pero como la aplicación hizo uso del lenguaje de consulta Hibernate como capa intermedia entre la aplicación y la base de datos, no pude acceder directamente a la base de datos.
HQL no es compatible con los controles basados en la Unión o el retardo de tiempo que generalmente explotamos como pentesters. Solo pude extraer todas las entradas de la tabla en cuestión. Tenga en cuenta que como la inyección se encontró en una función de búsqueda simple, no había datos confidenciales en la tabla. No he podido extraer ninguna base de datos o información relacionada con el sistema.
Ya he consultado esta pregunta . Mi pregunta aquí es, ¿se puede sugerir el uso de una capa de abstracción como una medida preventiva durante la fase de desarrollo de una aplicación? Porque, según tengo entendido, realmente puede minimizar el daño potencial de una vulnerabilidad de SQLi (al menos en mi caso dado donde no hay datos críticos reales en la base de datos)
¿Estoy perdiendo algo importante aquí?