Iniezione principale

0

Ci sono exploit noti in cui una query del modulo:

select foo from bar where id = 6

può essere trasformato in:

select * from select foo from bar where id = random stuff

È chiaro che un'applicazione mal formata potrebbe facilmente consentire l'iniezione contro il punto nella query in cui è letteralmente il 6 . io ho un caso in mano dove è stato fatto, ma anche l'extra " select * from " è stato inserito nella parte anteriore della query in stesso tempo il letterale alla fine fu attaccato. mi sto chiedendo se questo è un problema noto generico o se c'è una classe di applicazioni che sono vulnerabili in questo modo.

    
posta user46602 14.05.2014 - 18:37
fonte

2 risposte

1

Come dici se l'input non è validato, quindi aggiungere quello che ti piace come ID sarebbe banale.

Per quanto riguarda il 'select * from' prima della query principale allora sì, questo potrebbe essere possibile.

Dì ad esempio che hai

http://domain.com?column=foo&id=6

E stavi usando $ _GET ['column'] (supposto PHP qui ma simile per altri linguaggi) per accertare quale colonna hai richiesto quindi tutta la persona dovrebbe fare è adattare l'url ad essere qualcosa di simile:

http://domain.com?column=*%20from%20select%20foo&id=6

Se hai utilizzato quanto segue per creare l'SQL:

$sql = 'select ' . $_GET['column'] . ' from bar where id = ' . $_GET['id'];

SQL equivarrebbe quindi alla seguente stringa:

select * from select foo from bar where id = 6

Ovviamente questo sarebbe un grosso errore da parte del programmatore, ma ho visto molto peggio in passato. Per mitigare questo il programmatore dovrebbe controllare se il nome della colonna è contenuto in una lista bianca. Se è poi grandioso, se non lo è, non onorare la richiesta o restituire la colonna standard.

Per quanto riguarda qualsiasi classe di applicazione che sarebbe suscettibile di un simile attacco. La tua migliore scommessa sarebbe quella di guardare in giro alcuni dei siti di divulgazione delle vulnerabilità. Mi aspetterei comunque che i principali colpevoli fossero pagine di ricerca all'interno delle applicazioni.

    
risposta data 21.05.2014 - 04:49
fonte
0

solo se il suo doen sulle applicazioni lato client, se lo si fa su server, l'unica cosa che è pericolosa è XSS, che può essere prevenuta sia "preparando" le istruzioni o usando PDO.

convalidare ciò che viene messo nella forma (cioè con PHP) è una buona mossa, per vietare caratteri speciali come *, & lt ;, & gt ;,% ecc. da campi che non ne hanno bisogno è sempre una buona mossa.

    
risposta data 20.05.2014 - 16:30
fonte

Leggi altre domande sui tag