403Webshell
Server IP : 142.11.234.102  /  Your IP : 216.73.217.78
Web Server : Apache
System : Linux dal-shared-66.hostwindsdns.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64
User : krnuyqrm ( 1183)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cloudlinux/venv/lib/python3.11/site-packages/xray/internal/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/xray/internal/constants.py
import os
import re

from . import staging, local_api

# Pattern for safe IDs (task_id, system_id) — alphanumeric, underscores, hyphens only.
# Used to prevent path traversal and shell injection.
safe_id_pattern = re.compile(r'^[a-zA-Z0-9_\-]+$')

# Allowed path prefixes for PHP ini_scan_dir / ini_location.
# Used to prevent root writing xray.ini to arbitrary paths
# via attacker-controlled PHP_INI_SCAN_DIR.
ALLOWED_INI_PREFIXES = (
    '/opt/alt/php',
    '/var/cagefs/',
    '/opt/cpanel/ea-php',
    '/opt/plesk/php/',
    '/usr/local/php',
    '/usr/share/cagefs/',
    '/usr/share/cagefs-skeleton/',
    '/etc/cl.php.d/',
    '/etc/php.d/',
    '/etc/php.scan.d/',
    '/etc/users/',
)


def is_allowed_ini_path(path: str) -> bool:
    """Boundary-aware allowlist check for a PHP ini_scan_dir / ini_location.

    A plain ``startswith`` against ALLOWED_INI_PREFIXES is unsafe: a sibling
    such as ``/opt/alt/phpevil`` string-prefix-matches the bare ``/opt/alt/php``
    entry and escapes the intended tree. Canonicalize the candidate and require
    a real directory boundary against each prefix:

    * Prefixes that name a full directory (trailing separator) match only when
      the candidate is that directory or descends below it.
    * The bare component prefixes (``/opt/alt/php``, ``/opt/cpanel/ea-php``,
      ``/usr/local/php``) are followed by a PHP version component; the candidate
      must continue with a run of version digits (e.g. ``/opt/alt/php80``) that
      then either ends or descends at a separator — never a letter or other
      separator-extending name.
    """
    resolved = os.path.realpath(path)
    for prefix in ALLOWED_INI_PREFIXES:
        normalized = os.path.normpath(prefix)
        if prefix.endswith('/'):
            # Full-directory prefix: candidate must be the directory itself
            # or a descendant of it.
            if resolved == normalized or resolved.startswith(normalized + os.sep):
                return True
        else:
            # Bare component prefix: the remainder must be a run of version
            # digits terminated by end-of-path or a separator, so the versioned
            # directory '/opt/alt/php80' (and its subdirs) is accepted while
            # siblings whose name extends the component — '/opt/alt/phpevil'
            # (letter), '/usr/local/php-evil' ('-') or '/opt/alt/php80evil'
            # (trailing non-version chars) — are rejected.
            if not resolved.startswith(prefix):
                continue
            rest = resolved[len(prefix):]
            digits = rest[:len(rest) - len(rest.lstrip('0123456789'))]
            if digits and rest[len(digits):len(digits) + 1] in ('', os.sep):
                return True
    return False

local_tasks_storage = '/usr/share/alt-php-xray/tasks'
fpm_stat_storage = '/usr/share/alt-php-xray/fpm.stat'
nginx_cache_stat_storage = '/usr/share/alt-php-xray/nginx-user-cache.stat'
continuous_storage = '/usr/share/alt-php-xray/continuous'
request_data_storage = '/usr/share/alt-php-xray/requests'
tasks_base_storage = '/usr/share/alt-php-xray-tasks'
advice_pending_storage = '/usr/share/alt-php-xray/pending'
advice_processed_storage = '/usr/share/alt-php-xray/applied_data'
advice_list_cache = '/usr/share/alt-php-xray/advices_cache.json'
advice_list_im360_cache = '/usr/share/alt-php-xray/advices_im360_cache.json'
manager_log = '/var/log/alt-php-xray/manager.log'
agent_log = '/var/log/alt-php-xray/agent.log'
user_agent_log = '/var/log/alt-php-xray/user-agent.log'
adviser_log = '/var/log/alt-php-xray/smart_advice.log'
agent_sock = '/opt/alt/php-xray/run/xray.sock'
user_agent_sock = '/opt/alt/php-xray/run/xray-user.sock'
agent_file = '/usr/share/alt-php-xray/agent.file'
mail_template_location = '/usr/share/alt-php-xray/mail_templates'
mail_scripts_location = '/usr/share/alt-php-xray/get_email_scripts'
jwt_token_location = '/etc/sysconfig/rhn/jwt.token'
drop_after = 80  # minutes
check_period = 20  # minutes
throttling_threshold = 200  # milliseconds
fpm_reload_timeout = 1  # minutes
user_tasks_count = 1
allow_disable_nginx_cache = True
logging_level = 'debug' if os.environ.get('DEBUG_LOG') else 'info'

proto = 'https'
if staging():
    s_postfix = '8'
    s_key = '2ac05adf1e9f4cd18c064fe9e9b1a474'
    s_name = 'cl.sentry.cloudlinux.com'
    if local_api():
        proto = 'http'
        api_server = '127.0.0.1:8000'
    else:
        api_server = 'test-api.imunify360.com'
    adviser_api_server = 'x-ray-staging.cloudlinux.com'
else:
    s_postfix = '7'
    s_key = 'c4d18de9e2164ca6b92cf110faec42ea'
    s_name = 'cl.sentry.cloudlinux.com'
    api_server = 'xray.cloudlinux.com'
    adviser_api_server = 'x-ray-advice.cloudlinux.com'

sentry_dsn = f'https://{s_key}@{s_name}/{s_postfix}'

advice_action_sources = ['ACCELERATE_WP', 'WORDPRESS_PLUGIN']
advice_reason_max_len = 200
part_delimiter = ':'
task_delimiter = ','

Youez - 2016 - github.com/yon3zu
LinuXploit