En vous promenant sur Beamreactor, nous stockons votre IP 48h pour des raisons de sécurité.

Lecteur Markdown

audit Documentation › AUDIT_DOCUMENTATION

Audit Documentation

BeamReactor Audit Plugin #

Les aspects de sécurité, tels que la protection des fichiers et les contrôles d'accès, sont soigneusement examinés. En outre, il génère des rapports détaillés, catégorisant les résultats en niveaux alpha, beta, security, warning, et info. Les résultats de l'audit fournissent des informations précieuses sur la santé et la posture de sécurité de la configuration du CMS, permettant aux administrateurs de prendre des mesures correctives si nécessaire.

Security Check

Le plugin commence par vérifier si l'utilisateur dispose du niveau d'accès SYSTEM_LEVEL_ADMIN. Si ce n'est pas le cas, un message "Accès refusé" est affiché et l'exécution s'arrête.

php
if (!secure('SYSTEM_LEVEL_ADMIN')) {
	echo '<div style="background:#300;padding:20px;color:#f66;font-weight:bold;border:2px solid #800;">';
	echo 'Access denied - System admin level required';
	echo '</div>';
	return;
}

Issue Tracking

Un tableau $issues est utilisé pour suivre les différents types de problèmes rencontrés pendant le processus d'audit. De même, $stats compte le nombre d'éléments scannés.

php
$issues = [
	'alpha' => [],
	'beta' => [],
	'security' => [],
	'warning' => [],
	'info' => []
];

$stats = [
	'plugins_scanned' => 0,
	'modules_scanned' => 0,
	'skins_scanned' => 0,
	'files_tested' => 0,
	'vulnerabilities' => 0
];

Helper Functions

Le plugin définit plusieurs fonctions auxiliaires pour des tâches courantes :

  • testFileProtection(filepath) : Vérifie si un fichier est protégé en affichant forbidden.
  • isClassUsed(className, $searchDirs) : Vérifie si une classe est utilisée dans les répertoires spécifiés.
php
function testFileProtection($filepath) { ... }
function scanRecursive($dir, $pattern = '*') { ... }
function isClassUsed($className, $searchDirs) { ... }

Plugin Integrity Check

Le plugin effectue des vérifications d'intégrité dans tous les répertoires du dossier plugins et s'assure que chaque plugin respecte les critères suivants :

  • Le fichier principal du plugin existe (pluginName.php).
  • Les fichiers de traduction sont présents dans le répertoire locale.
  • La comparaison du nombre de lignes entre les différentes localisations.
  • Vérification des fichiers de configuration manquants.
  • Identification des classes orphelines dans le répertoire lib.
php
if (is_dir('plugins')) {
	// Scan plugins directory
}

Module Integrity Check

Il vérifie que tous les fichiers dans le répertoire modules suivent la convention de nommage .mod.php.

php
if (is_dir('modules')) {
	// Check module filenames
}

Skin Integrity Check

Pour chaque répertoire de skin sous user/skins, il vérifie la présence des fichiers nécessaires comme layout.php, skinconfig.php, et core.css.

php
if (is_dir('user/skins')) {
	// Check required skin files
}

Security Checks

Le plugin effectue des vérifications de sécurité supplémentaires :

  • Recherche des fichiers .txt errants qui ne sont pas des fichiers de configuration courants.
  • Vérifie les problèmes de discordance de langue dans les répertoires locale.
php
// Check for PHP files in images
// Check for .txt files roaming
// Check locale language mismatch

Members Area Check

Il vérifie la présence des fichiers nécessaires dans le répertoire members comme activate.php, login_form.php, etc.

php
$memberDir = 'members';
if (!empty($cfg[18])) { ... }

External Files Listing

Si un répertoire external existe, il liste tous les fichiers qu'il contient de manière récursive.

php
if (is_dir('external')) { ... }

Direct File Access Test

Le plugin teste l'accès direct aux fichiers dans des répertoires spécifiques comme inc, lib, modules, et plugins. Il vérifie si ces fichiers sont protégés ou vulnérables.

php
$testDirs = [
	'inc' => 'inc',
	'lib' => 'lib',
	'modules' => 'modules',
	'plugins' => 'plugins'
];
foreach ($testDirs as $dirName => $dirPath) { ... }

Display Results

Enfin, les résultats de l'audit sont affichés dans un format structuré, catégorisant les problèmes par leur niveau de gravité. Le plugin permet également d'exporter le rapport d'audit sous forme de fichier JSON.

html
<div class="audit-container"> ... </div>

de en fr