コード例 #1
0
ファイル: firewall.php プロジェクト: beejhuff/MageFirewall
function nf_check_b64($reqkey, $string)
{
    global $MagenfCheckDebug;
    global $nfdebug;
    $string = preg_replace('`[^A-Za-z0-9+/=]`', '', $string);
    if (!$string || strlen($string) % 4 != 0) {
        return;
    }
    if (base64_encode($decoded = base64_decode($string)) === $string) {
        if (preg_match('`\\b(?:\\$?_(COOKIE|ENV|FILES|(?:GE|POS|REQUES)T|SE(RVER|SSION))|HTTP_(?:(?:POST|GET)_VARS|RAW_POST_DATA)|GLOBALS)\\s*[=\\[)]|\\b(?i:array_map|assert|base64_(?:de|en)code|chmod|curl_exec|(?:ex|im)plode|error_reporting|eval|file(?:_get_contents)?|f(?:open|write|close)|fsockopen|function_exists|gzinflate|md5|move_uploaded_file|ob_start|passthru|preg_replace|phpinfo|stripslashes|strrev|(?:shell_)?exec|system|unlink)\\s*\\(|\\becho\\s*[\'"]|<\\s*(?i:applet|div|embed|i?frame(?:set)?|img|meta|marquee|object|script|textarea)\\b|\\b(?i:(?:ht|f)tps?|php)://|\\W\\$\\{\\s*[\'"]\\w+[\'"]|<\\?(?i:php)`', $decoded)) {
            if ($MagenfCheckDebug) {
                $nfdebug .= STAG . "checking request\t\t" . '[FAIL]   POST[' . $reqkey . '] : BASE64-encoded injection' . ETAG;
            }
            nf_write2log('BASE64-encoded injection', 'POST:' . $reqkey . ' = ' . $string, 3, 0);
            nf_block();
        }
    }
}
コード例 #2
0
ファイル: firewall.php プロジェクト: rosenmanev/MageFirewall
function nf_check_upload()
{
    global $nfdebug;
    global $MagenfCheckDebug;
    $tmp = '';
    foreach ($_FILES as $file) {
        if (is_array($file['name'])) {
            foreach ($file['name'] as $key => $value) {
                if (!$file['name'][$key]) {
                    continue;
                }
                $tmp .= $file['name'][$key] . ', ' . number_format($file['size'][$key]) . ' bytes ';
            }
        } else {
            if (!$file['name']) {
                continue;
            }
            $tmp .= $file['name'] . ', ' . number_format($file['size']) . ' bytes ';
        }
    }
    if ($tmp) {
        if ($MagenfCheckDebug) {
            $nfdebug .= '[FAIL]   file upload attempt : ' . nf_bin2hex_string($tmp) . ETAG;
        }
        nf_write2log('File upload attempt', rtrim($tmp, ' '), 2, 0);
        nf_block();
    }
    if ($MagenfCheckDebug) {
        $nfdebug .= '[----]   upload field is empty' . ETAG;
    }
}