Prima verifica del codice di test di penetrazione

3

Nello scenario seguente il sito Web consente agli utenti di caricare un documento excel che contiene informazioni che verranno caricate nel database e memorizzate come valori che potranno essere successivamente consultati dall'utente. Sto tentando di caricare una iniezione sql con i seguenti parametri.

"INSERT INTO Uploads VALUES ('Name'); DROP TABLE Upload --"

Questa esecuzione viene eseguita in ASP.net EF 6. La mia domanda è, quando si utilizza questo tipo di iniezione, si genera semplicemente un errore sulla sintassi errata. Qualcuno può dirmi se questa iniezione è stata formattata in modo errato per penetrare, o se si tratta di una misura di sicurezza effettiva di SQL Server 2012?

Aggiornamento: l'errore effettivo che sto ricevendo è cmd.ExecuteNonQuery(); errato Sintassi vicino a ('Nome')

    
posta Joshua 23.01.2017 - 16:37
fonte

1 risposta

3

Senza vedere il codice è impossibile dire con certezza cosa sta succedendo. Sulla base della mia esperienza, sospetto che quanto segue sia ciò che sta accadendo.

Diciamo che hai una parte vulnerabile del codice che definisce una query da eseguire nel db come segue:

string commandText = "SELECT id from users where name = '" + tb_Name.text + "';

Se passi la stringa di attacco, commandText diventerà:

SELECT id from users where name = 'INSERT INTO Uploads VALUES ('Name'); DROP TABLE Upload --'

Se osservi attentamente questa stringa di sql puoi vedere che la prima stringa che interpopra è INSERT INTO Uploads VALUES ( , quindi incontra Name che non è una stringa che è molto probabile perché stai vedendo l'errore che vedi.

Se invece cambi la tua stringa di attacco in:

'; DROP TABLE Upload;--

Il commandText (in questo specifico esempio) diventerebbe:

SELECT id from users where name = ''; DROP TABLE Upload;--'

Quali sarebbero le autorizzazioni valide per l'azzeramento degli attacchi impostate correttamente.

Ad ogni modo - spero che questo aiuti a chiarire le cose. Il modo migliore per acquisire familiarità con questa roba è di passare qualche anno a fare lo sviluppo completo dello stack web. Puoi saltare a metà strada, ma ti mancherà la profondità della conoscenza che è spesso richiesta per essere un buon tester di penna.

    
risposta data 23.01.2017 - 17:58
fonte