Che tipo di iniezione di sicurezza sono queste tracce di, SQL, javascript o altro?

3

Ho cercato di proteggere tutte le informazioni sul server per assicurarmi che non ci siano iniezioni SQL.

Tuttavia ci sono nuove cartelle sul mio server con nomi strani. Uno dei nostri servizi online è tale che con determinati input, le directory vengono create con quel nome, ma solo dopo aver utilizzato mysql_real_escape_string .

Questi sono i tipi di nomi di cartelle ora sul mio server:

<script>alert(42873)<

\'\"

%27

!(()

\r\n SomeCustomInjectedHeader:injected_by_wvs

&dirdir�\'

exec

%code%

Che tipo di iniezione stava tentando di fare l'hacker? Sono il genere di cose che si aspettano dalle iniezioni SQL? O iniezioni javascript?

Questo è il codice che sto usando per creare cartelle:

$path = "designs_".$design->getDesignerType()."/product".$design->getProductID()."/template".$design->getTemplateID()."/".$design->getID();
if(!is_dir($path))
    { mkdir($path, 0777, TRUE); }

In realtà AM sto usando %code% , ma non per creare cartelle. Lo sto usando per altre cose come la creazione di PDF usando un file sorgente binario, come questo:

 exec("prince /home/zeejfl6/public_html/printshop/".$filename.".html /home/zeejfl6/public_html/printshop/".$filename.".pdf");

e creazione di immagini, come questa:

$cmdi = "convert -density 300 -resize $io /home/zeejfl6/public_html/printshop/$filename.pdf  -quality 100 -flatten /home/zeejfl6/public_html/printshop/$filename.jpg";
exec ($cmdi);
    
posta user961627 29.05.2013 - 12:56
fonte

2 risposte

3

Facciamo una spiegazione passo passo su ciò che l'hacker Script kiddy stava cercando di fare:

  1. <script>alert(42873)< : questo è un attacco XSS .
  2. \'\" : verifica se il tuo sito web è vulnerabile a Iniezione SQL .
  3. %27 : questo è codificato in url, quindi decodificarlo dà ' , che è la stessa intenzione di in (2).
  4. !(() : uguale a (2).
  5. \r\n SomeCustomInjectedHeader:injected_by_wvs : non sono sicuro di cosa sta succedendo qui.
  6. NULLdir&dir : �\' significa mkdir() .
  7. 777 : sciocchezze a meno che non lo stiate usando.
  8. 0777 : uguale a (2).

Note:

  • Il tuo codice sulla creazione di directory, lo stai creando dinamicamente, il che è facile per te ma potrebbe causare diversi problemi di sicurezza. Il migliore sarebbe archiviare nel DB la dirname fornita dal client e una versione hash di esso. La versione hash, la userai per creare directory. Quindi utilizzerai il tuo DB per "tradurre" l'input / output.

  • Informazioni su decimal : stai utilizzando octal mentre penso che tu intendessi chmod() , nota che c'è un'enorme differenza dal momento che non è exec() ma $filename . Dai un'occhiata a ";rm -rf ../../../../ e questo answer su un possibile difetto di sicurezza.

  • Informazioni su %code% : si tratta di un enorme buco di sicurezza se %code% non è altamente controllato e sicuro. Il che significa che se un utente ha chiamato il suo file qualcosa come %code% che significherebbe che puoi dire addio al tuo sistema operativo, naturalmente ciò è possibile solo se il PHP ha privilegi sufficienti.

Consigli:

Come indicato da munkeyoto questo attacco viene eseguito utilizzando uno strumento di hacking automatico, vedo anche che ultimamente stai postando più volte sui tentativi di hacking che stai subendo. Ti consiglio caldamente di assumere un professionista per verificare e testare il tuo sito web (o addirittura migliorarne la sicurezza). Se non puoi o non vuoi farlo, ti preghiamo di saperne di più sulla sicurezza e le migliori pratiche. Ci sono tonnellate di tutorial, libri e corsi disponibili. È un po 'stancante per noi (e per te) che stai postando ogni volta un semplice tentativo di hacking da parte di alcuni skiddies che può essere facilmente evitato come ho detto sopra.

    
risposta data 29.05.2013 - 14:59
fonte
5

injected_by_wvs è usato da Acunetix Web (w) Vulnerability (v) Scanner (s) (wvs). Questo è uno Script (s) Cross (x) Site (s) - XSS - che viene inserito in un parametro (di solito un modulo: nome, data, ora, età, ecc.). Le iniezioni basate su SQL conterranno una parte di un'istruzione SQL (SELECT * FROM, INSERT INTO *), che sono visibili la maggior parte delle volte ma possono essere offuscate. Questo risponde a quale tipo di attacco è questo.

Potresti voler usare escapeshellcmd () contro exec () per evitare che qualcuno provi inserire caratteri. Non sono d'accordo con la dichiarazione HamZa DzCyberDeV fatta riguardo a exec (). Non è che serio se si prende il tempo necessario per disinfettare l'input.

    
risposta data 29.05.2013 - 14:31
fonte

Leggi altre domande sui tag