Cosa posso fare con SQLi cieco se il database è crittografato?

4

Durante un pentest engagement, ho trovato un SQLi cieco e posso leggere tutte le tabelle e i dati in esse contenuti. C'è solo un problema. Stanno usando una chiave AES statica (definita in web.config e non ho accesso ad essa) e tutte le credenziali di accesso CMS sono criptate. Tutti i dati critici sono crittografati a livello di cella, persino nome, cognome, email, ecc.

Sebbene il cliente abbia accettato il risultato, dicono che non è troppo critico perché non ho potuto accedere a nulla, non potevo nemmeno accedere a CMS, non potevo davvero fare "nulla" se non leggere BLOB crittografati. So che trovare è sufficiente, voglio solo essere in grado di dimostrare il mio punto e portarlo al livello successivo.

Il server è MSSQL 2012 e Win server 2012, l'app Web è scritta in C # / ASP.NET. Leggo tutto in DB, ma l'utente SQL dell'app Web ha un basso privilegio, ho solo SQLi cieco (basato sul tempo, lento e senza query impilate, solo lettura dei dati) e la porta MSSQL non è aperta su Internet.

Mi sto perdendo qualcosa qui? Posso fare di più qui? Posso avere più accesso di quello che ho ottenuto? Voglio solo dimostrare un punto e non mi piace il modo in cui il cliente ha minimizzato la mia scoperta sostenendo (giustamente) che la mia scoperta non equivaleva a "qualcosa". Si prega di avvisare. Ho una shell sqlmap completa qui, ho anche eseguito query personalizzate, ho ottenuto l'elenco delle stored procedure, ho ottenuto l'elenco di tutti i DB, tutte le tabelle, ecc. Ma come ho detto, hanno scritto del codice e usando una chiave statica (sconosciuta), tutto è crittografato a livello di cella.

    
posta GMX Rider 09.04.2018 - 02:23
fonte

1 risposta

4
  • Hai già rotto metà delle loro difese. Ora tutto ciò che rimane è un compromesso della chiave AES. Questo dovrebbe essere un motivo per preoccuparsi. Soprattutto perché il cambio di quella chiave non sarà banale, perché dovrebbero crittografare l'intero database per farlo.
  • La crittografia simmetrica con una chiave statica a livello di cella significa che i valori duplicati rimangono valori duplicati. Questo può darti un suggerimento sul contenuto di alcuni campi. Ad esempio, se sai che una determinata riga del database ha il valore "HIV positivo" in un campo specifico, puoi ora identificare tutte le altre righe che hanno anche quel valore.
  • Quando hai un'iniezione SQL cieca, potresti essere in grado di distruggere i dati usando UPDATE o DELETE. Puoi anche INSERIRE i dati, ma senza la chiave di crittografia puoi inserire solo parole senza senso. Ciò potrebbe comunque causare problemi,
  • Hai detto che puoi ottenere le stored procedure. Questi potrebbero fare qualcosa di utile anche senza dover crittografare o decodificare nulla.
risposta data 09.04.2018 - 12:28
fonte

Leggi altre domande sui tag