Durante l'esecuzione di un pentest per un'applicazione basata su Java mi sono imbattuto in un errore SQL (in realtà HQL) semplicemente inserendo una virgoletta singola in uno dei parametri della richiesta e interrompendo la sintassi della query. Ma poiché l'applicazione utilizzava Hibernate Query Language come strato intermedio tra l'applicazione e il database, non ero in grado di accedere direttamente al database.
HQL non supporta i controlli basati su Union o time delay che generalmente sfruttiamo come pentesters. Sono stato in grado di estrarre tutte le voci dalla tabella in questione. Si noti che quando l'iniezione è stata trovata in una semplice funzionalità di ricerca non c'erano dati riservati nella tabella. Non ero in grado di estrarre alcun database o informazioni relative al sistema.
Ho già esaminato questa domanda . La mia domanda qui è, può usare un livello di astrazione come questo essere suggerito come misura preventiva durante la fase di sviluppo di un'applicazione? Perché secondo me può davvero minimizzare il potenziale di danno di una vulnerabilità SQLi (Almeno nel mio caso specifico in cui non ci sono dati reali importanti nel database)
Mi sto perdendo qualcosa di importante qui?