T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/soundstudiopro.com/public_html/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/soundstudiopro.com/public_html/shield_challenge.php
<?php
/**
 * SHIELD CHALLENGE PAGE
 * 
 * This page serves a JavaScript challenge to verify the visitor
 * is using a real browser. It's designed to be fast and invisible
 * to real users (just a brief loading screen).
 */

session_start();
require_once 'config/shield_config.php';

// If Shield is disabled, redirect back
if (!shield_is_enabled()) {
    $return_url = $_SESSION['shield_challenge']['return_url'] ?? '/';
    header('Location: ' . $return_url);
    exit;
}

// Verify we have a valid challenge session
if (!isset($_SESSION['shield_challenge']) || !isset($_SESSION['shield_challenge']['token'])) {
    header('Location: /');
    exit;
}

$challenge = $_SESSION['shield_challenge'];
$token = $challenge['token'];
$challenge_time = $challenge['time'];
$return_url = $challenge['return_url'] ?? '/';

// Check if challenge is expired
if (time() - $challenge_time > SHIELD_CHALLENGE_TIMEOUT) {
    unset($_SESSION['shield_challenge']);
    header('Location: /');
    exit;
}

// Generate puzzle for this challenge
$puzzle_a = rand(10, 99);
$puzzle_b = rand(10, 99);
$puzzle_answer = $puzzle_a + $puzzle_b;

// Store the expected answer
$_SESSION['shield_challenge']['puzzle_answer'] = $puzzle_answer;
$_SESSION['shield_challenge']['puzzle_time'] = microtime(true) * 1000; // milliseconds

// Log challenge served
require_once 'includes/shield.php';
shield_log('challenge_served', $_SERVER['REMOTE_ADDR'] ?? 'unknown', [
    'token' => substr($token, 0, 8) . '...'
]);

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="robots" content="noindex, nofollow">
    <title>Verifying...</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
            background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 100%);
            min-height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #fff;
        }
        
        .container {
            text-align: center;
            padding: 2rem;
        }
        
        .spinner {
            width: 50px;
            height: 50px;
            border: 3px solid rgba(102, 126, 234, 0.2);
            border-top-color: #667eea;
            border-radius: 50%;
            animation: spin 0.8s linear infinite;
            margin: 0 auto 1.5rem;
        }
        
        @keyframes spin {
            to { transform: rotate(360deg); }
        }
        
        h1 {
            font-size: 1.5rem;
            font-weight: 600;
            margin-bottom: 0.5rem;
            color: #667eea;
        }
        
        p {
            font-size: 1rem;
            color: #a0aec0;
        }
        
        .error {
            display: none;
            margin-top: 2rem;
            padding: 1rem;
            background: rgba(245, 101, 101, 0.1);
            border: 1px solid rgba(245, 101, 101, 0.3);
            border-radius: 8px;
            color: #f56565;
        }
        
        noscript {
            display: block;
            padding: 2rem;
            background: rgba(245, 158, 11, 0.1);
            border: 1px solid rgba(245, 158, 11, 0.3);
            border-radius: 8px;
            color: #f59e0b;
            text-align: center;
        }
    </style>
</head>
<body>
    <noscript>
        <h2>JavaScript Required</h2>
        <p>Please enable JavaScript to continue to the website.</p>
    </noscript>
    
    <div class="container" id="challenge-container">
        <div class="spinner"></div>
        <h1>Verifying your browser</h1>
        <p>This will only take a moment...</p>
        <div class="error" id="error-message">
            <p>Verification failed. <a href="/" style="color: #667eea;">Click here to try again</a></p>
        </div>
    </div>
    
    <script>
    (function() {
        // Challenge data from server
        const challengeToken = <?= json_encode($token) ?>;
        const puzzleA = <?= $puzzle_a ?>;
        const puzzleB = <?= $puzzle_b ?>;
        const startTime = Date.now();
        
        // Collect browser fingerprint (lightweight)
        function getFingerprint() {
            const data = [];
            
            // Screen info
            data.push(screen.width + 'x' + screen.height);
            data.push(screen.colorDepth);
            data.push(window.devicePixelRatio || 1);
            
            // Timezone
            data.push(Intl.DateTimeFormat().resolvedOptions().timeZone);
            
            // Language
            data.push(navigator.language);
            
            // Platform
            data.push(navigator.platform);
            
            // Plugins count
            data.push(navigator.plugins ? navigator.plugins.length : 0);
            
            // Check for webdriver (bot indicator)
            data.push(navigator.webdriver ? '1' : '0');
            
            // Canvas fingerprint (simple)
            try {
                const canvas = document.createElement('canvas');
                const ctx = canvas.getContext('2d');
                ctx.textBaseline = 'top';
                ctx.font = '14px Arial';
                ctx.fillStyle = '#f60';
                ctx.fillRect(125, 1, 62, 20);
                ctx.fillStyle = '#069';
                ctx.fillText('SoundStudioPro', 2, 15);
                data.push(canvas.toDataURL().slice(-50));
            } catch (e) {
                data.push('canvas_error');
            }
            
            return data.join('|');
        }
        
        // Solve the puzzle
        function solvePuzzle() {
            return puzzleA + puzzleB;
        }
        
        // Check for bot indicators
        function checkBotIndicators() {
            const indicators = [];
            
            // WebDriver
            if (navigator.webdriver) {
                indicators.push('webdriver');
            }
            
            // Headless Chrome detection
            if (/HeadlessChrome/.test(navigator.userAgent)) {
                indicators.push('headless');
            }
            
            // Missing plugins in Chrome
            if (/Chrome/.test(navigator.userAgent) && navigator.plugins.length === 0) {
                indicators.push('no_plugins');
            }
            
            // Phantom
            if (window.callPhantom || window._phantom) {
                indicators.push('phantom');
            }
            
            // Nightmare
            if (window.__nightmare) {
                indicators.push('nightmare');
            }
            
            // Selenium
            if (document.documentElement.getAttribute('webdriver') || 
                window.document.documentElement.getAttribute('driver')) {
                indicators.push('selenium');
            }
            
            return indicators;
        }
        
        // Submit verification
        function submitVerification() {
            const solveTime = Date.now() - startTime;
            const fingerprint = getFingerprint();
            const puzzleAnswer = solvePuzzle();
            const botIndicators = checkBotIndicators();
            
            // Prepare data
            const data = {
                token: challengeToken,
                answer: puzzleAnswer,
                solve_time: solveTime,
                fingerprint: fingerprint,
                bot_indicators: botIndicators,
                screen: {
                    width: screen.width,
                    height: screen.height,
                    ratio: window.devicePixelRatio || 1
                },
                timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
                language: navigator.language,
                platform: navigator.platform,
                cookie_enabled: navigator.cookieEnabled
            };
            
            // Send to verification endpoint
            fetch('/shield_verify.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(data),
                credentials: 'same-origin'
            })
            .then(response => response.json())
            .then(result => {
                if (result.success) {
                    // Redirect to original destination
                    window.location.href = result.redirect || '/';
                } else {
                    // Show error
                    document.getElementById('error-message').style.display = 'block';
                    console.error('Verification failed:', result.error);
                }
            })
            .catch(error => {
                document.getElementById('error-message').style.display = 'block';
                console.error('Verification error:', error);
            });
        }
        
        // Wait a minimum time before solving (too fast = bot)
        // Real humans take at least 200-300ms to see the page
        const minDelay = 300;
        const elapsed = Date.now() - startTime;
        const remaining = Math.max(0, minDelay - elapsed);
        
        setTimeout(submitVerification, remaining);
    })();
    </script>
</body>
</html>


CasperSecurity Mini