ΠΡΟΣΟΧΗ ενημέρωση σχετικά με ιό

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
fatsouls32
Δημοσιεύσεις: 34
Εγγραφή: 18 Δεκ 2012 10:10

ΠΡΟΣΟΧΗ ενημέρωση σχετικά με ιό

Δημοσίευση από fatsouls32 » 17 Ιαν 2013 16:12

Καλησπέρα σε όλους,
θα ήθελα να μοιραστώ μαζί σας την εμπειρία μου, μήπως προλάβει κανείς και δεν πάθει τα ίδια. Κυκλοφορεί ιός που αποσπά τους αποθηκευμένους κωδικούς από το filezilla και μπαίνει στα accounts προσθέτοντας ανεπιθύμητο κώδικα σε .htaccess αρχεία, σε αρχεία html, js και php στη δική μου περιπτωση.

Ο κώδικας που τοποθετεί εσωκλείεται σε comment tags:
για php και .htaccess αρχεία
#336988#
... javascript....
#/336988#

html αρχεία
<!--336988#-->
... javascript....
<!--/336988-->

js αρχεία
/*336988*/
... javascript....
/*/336988*/

Η λύση του προβλήματος έχει ως εξής:
1) Διαγράψτε όλους τους λογαριασμούς από το account manager του filezilla
2) Αλλάξτε κωδικούς cpanel/ftp
3) Σκανάρετε τον υπολογιστή σας για ιούς
4) τρέξτε το παρακάτω script σε κάθε account για να καθαρίσετε τα μολυσμένα αρχεία.

Το script είναι δοκιμασμένο και λειτουργεί άψογα.
Τοποθετήστε το στο root κάθε account και τρέξτε το τρείς φορές, μία για κάθε γραμμή.
Η πρώτη γραμμή καθαρίζει τα php, δεύτερη τα html και η τρίτη τα js.

$regex = "/#336988#(.*?)#\/336988#/ism"; // php
//$regex = "/\<!--336988-->(.*?)\<!--\/336988-->/ism"; // html
//$regex='#(/\*336988\*/).*?(/\*/336988\*/)#ism'; //js

ολόκληρο το script:

Κώδικας: Επιλογή όλων

<?php
ini_set&#40;'memory_limit','130M'&#41;;
$mtime = microtime&#40;&#41;;
   $mtime = explode&#40;" ",$mtime&#41;;
   $mtime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;
   $starttime = $mtime; 
function directoryToArray&#40;$directory, $recursive = true, $listDirs = false, $listFiles = true, $exclude = ''&#41; &#123;
        $arrayItems = array&#40;&#41;;
        $skipByExclude = false;
        $handle = opendir&#40;$directory&#41;;
        if &#40;$handle&#41; &#123;
            while &#40;false !== &#40;$file = readdir&#40;$handle&#41;&#41;&#41; &#123;
            preg_match&#40;"/&#40;^&#40;&#40;&#91;\.&#93;&#41;&#123;1,2&#125;&#41;$|&#40;\.&#40;svn|git|md|css|png|gif|jpg|htc|ico|xml|txt&#41;&#41;|&#40;Thumbs\.db|scan\.php|\.DS_STORE&#41;&#41;$/iu", $file, $skip&#41;;
            if&#40;$exclude&#41;&#123;
                preg_match&#40;$exclude, $file, $skipByExclude&#41;;
            &#125;
            if &#40;!$skip && !$skipByExclude&#41; &#123;
                if &#40;is_dir&#40;$directory. DIRECTORY_SEPARATOR . $file&#41;&#41; &#123;
                    if&#40;$recursive&#41; &#123;
                        $arrayItems = array_merge&#40;$arrayItems, directoryToArray&#40;$directory. DIRECTORY_SEPARATOR . $file, $recursive, $listDirs, $listFiles, $exclude&#41;&#41;;
                    &#125;
                    if&#40;$listDirs&#41;&#123;
                        $file = $directory . DIRECTORY_SEPARATOR . $file;
                        $arrayItems&#91;&#93; = $file;
                    &#125;
                &#125; else &#123;
                    if&#40;$listFiles&#41;&#123;
                        $file = $directory . DIRECTORY_SEPARATOR . $file;
                        $arrayItems&#91;&#93; = $file;
                    &#125;
                &#125;
            &#125;
        &#125;
        closedir&#40;$handle&#41;;
        &#125;
        return $arrayItems;
    &#125;
	$docroot = $_SERVER&#91;'DOCUMENT_ROOT'&#93;;
	echo $docroot;
	$dir = directoryToArray&#40;$docroot,true,false,true,''&#41;;
	$original = count&#40;$dir&#41;;
foreach &#40;$dir as $key => $value&#41;&#123;	
	$regex = "/#336988#&#40;.*?&#41;#\/336988#/ism"; // php 
	//$regex = "/\<!--336988-->&#40;.*?&#41;\<!--\/336988-->/ism"; // html
	//$regex='#&#40;/\*336988\*/&#41;.*?&#40;/\*/336988\*/&#41;#ism'; //js	
	
	
		//open file and get data
		$data = file_get_contents&#40;$value&#41;;
		if &#40;preg_match&#40;$regex,$data&#41;&#41;&#123;
			// do tag replacements or whatever you want
			$output = preg_replace&#40;$regex,"",$data&#41;;

			//save it back&#58;
			
			file_put_contents&#40;$value, $output&#41;;
				$files&#91;&#93; = $value;
		&#125;
&#125;
echo "<pre>";
print_r&#40;$files&#41;;
echo "</pre>";
echo "changed ".count&#40;$files&#41;. " / " . $original . " files  <br>";


$mtime = microtime&#40;&#41;;
   $mtime = explode&#40;" ",$mtime&#41;;
   $mtime = $mtime&#91;1&#93; + $mtime&#91;0&#93;;
   $endtime = $mtime;
   $totaltime = &#40;$endtime - $starttime&#41;;
   echo "This page was created in ".$totaltime." seconds"; 

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

ΠΡΟΣΟΧΗ ενημέρωση σχετικά με ιό

Δημοσίευση από vassilism » 18 Ιαν 2013 14:39

Το θέμα είναι να μην μπει ο ιός.
Μήπως είχες σπαμένη έκδοση του filezilla?

Άβαταρ μέλους
Jimaek
Δημοσιεύσεις: 608
Εγγραφή: 18 Ιαν 2010 22:54
Επικοινωνία:

ΠΡΟΣΟΧΗ ενημέρωση σχετικά με ιό

Δημοσίευση από Jimaek » 18 Ιαν 2013 14:40

Το filezilla είναι free...

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

ΠΡΟΣΟΧΗ ενημέρωση σχετικά με ιό

Δημοσίευση από vassilism » 18 Ιαν 2013 14:55

Jimaek έγραψε:Το filezilla είναι free...
Ναι όντως.
Επομένως δεν έχει να κάνει με το filezilla αλλά με το που αποθηκεύονται οι κωδικοί.

Άβαταρ μέλους
fatsouls32
Δημοσιεύσεις: 34
Εγγραφή: 18 Δεκ 2012 10:10

ΠΡΟΣΟΧΗ ενημέρωση σχετικά με ιό

Δημοσίευση από fatsouls32 » 18 Ιαν 2013 22:36

Στο filezilla αν κάνεις εξαγωγή των εγγραφών από τον διαχειριστή επαφών, δημιουργεί ένα xml αρχείο που περιέχει όλα τα στοιχεία, ακομα και τον κωδικό χωρίς κρυπτογράφηση. Οπότε, αν ένα σκουλικάκι πάρει αυτό το αρχείο.....κάηκες.....

ploupas
Δημοσιεύσεις: 60
Εγγραφή: 04 Νοέμ 2011 20:47
Επικοινωνία:

ΠΡΟΣΟΧΗ ενημέρωση σχετικά με ιό

Δημοσίευση από ploupas » 19 Ιαν 2013 03:11

Been there, επιβεβαιωμένα το διαμάντι ο FileZilla κρατά plaintext όχι μόνο τα stored αλλά every-single session που έχεις κάνει (χωρίς να πατήσεις συνειδητά το κουμπάκι "Remember my password") :kaloe:

edit: Και είχα γράψει πριν λίγες μέρες το ίδιο πράμα εδώ: http://www.gveronis.net/%CE%B5%CF%80%CE ... comment-67 :P
Pretending to be an LNMP administrator on various nodes

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης