Skip to content

Archives

  • janvier 2022
  • décembre 2021
  • novembre 2021
  • octobre 2021
  • septembre 2021

Categories

  • Aucune catégorie
Trend RepositoryArticles and guides
Articles

Accès à la ligne de commande depuis votre navigateur en utilisant shell.php

On janvier 5, 2022 by admin

Parfois, vous voulez un accès au shell depuis le navigateur. Cela peut être réalisé en utilisant PHP si les paramètres de sécurité le permettent. J’ai implémenté cette fonctionnalité dans shell.php (disponible sur Github). Dans la capture d’écran ci-dessus, vous voyez comment fonctionne l’accès au shell depuis un navigateur. Le script vous permet de télécharger, d’afficher, de modifier et de supprimer un fichier, de compresser et de décompresser un répertoire et de parcourir les répertoires du serveur à l’aide de la souris, mais vous pouvez également taper des commandes personnalisées à l’aide du clavier.

  • Avertissement de sécurité et clause de non-responsabilité
  • Problèmes connus
  • Commandes d’exécution du shell PHP
  • Durcir votre serveur avec open_basedir
  • Pas pu trouver Suhosin?
  • Séparation des privilèges
  • Conclusion

Avertissement de sécurité et clause de non-responsabilité

Veuillez exécuter ce script uniquement sur des machines que vous possédez (ou pendant un pentest autorisé). Assurez-vous également que la machine est correctement pare-feu (le port 80 ne doit pas être joignable depuis Internet). Ne l’utilisez pas à des fins malveillantes ! Lisez plus sur l’abus des scripts shell ici.

Problèmes connus

Si le script ne fonctionne pas, c’est peut-être parce que la fonction PHP « passthru » sur laquelle il repose est désactivée. Pour lister les fonctions PHP désactivées, exécutez le code PHP suivant :

var_dump(ini_get('safe_mode'));var_dump(explode(',',ini_get('disable_functions')));var_dump(explode(',',ini_get('suhosin.executor.func.blacklist')));

Sur une Ubuntu 14.04 prête à l’emploi, cela donnera :

bool(false)Array( => pcntl_alarm => pcntl_fork => pcntl_waitpid => pcntl_wait => pcntl_wifexited => pcntl_wifstopped => pcntl_wifsignaled => pcntl_wexitstatus => pcntl_wtermsig => pcntl_wstopsig => pcntl_signal => pcntl_signal_dispatch => pcntl_get_last_error => pcntl_strerror => pcntl_sigprocmask => pcntl_sigwaitinfo => pcntl_sigtimedwait => pcntl_exec => pcntl_getpriority => pcntl_setpriority =>)Array( =>)

Commandes d’exécution du shell PHP

Si le script ne s’exécute pas en utilisant passthru(), il essaiera quelques autres commandes. Les commandes suivantes sont similaires :

  • exec() Renvoie la dernière ligne de sortie des commandes
  • passthru() Passe la sortie des commandes directement au navigateur
  • system() Passe la sortie des commandes directement au navigateur et renvoie la dernière ligne
  • shell_exec() Renvoie la sortie des commandes
  • . popen() Ouvre un tuyau de lecture ou d’écriture au processus d’une commande
  • proc_open() Similaire à popen() mais un plus grand degré de contrôle
  • pcntl_exec() Exécute un programme

Durcir votre serveur avec open_basedir

Si le script ci-dessus vous semble effrayant, alors vous pouvez vouloir l’empêcher de s’exécuter sur votre serveur. Vous pouvez le faire en activant le mode sans échec (déprécié), en utilisant la variable php.ini « disable_functions » et/ou la liste noire d’exécution des fonctions de Suhosin.

J’ai trouvé un post bien écrit sur la sécurisation de votre installation PHP, consultez-le ! En plus de limiter les fonctions exécutables, ils recommandent également la variable de configuration php.ini « open_basedir ». Elle limite les fichiers auxquels PHP peut accéder à l’arborescence de répertoires spécifiée. Je crois que c’est un outil puissant.

Ce pourrait être aussi une bonne idée de sécuriser votre répertoire « /tmp » avec les drapeaux « nodev », « nosuid » et « noexec » comme décrit ici.

Pas pu trouver Suhosin?

Notez que le paquet « php5-suhosin » (une extension de sécurité PHP) n’est plus installé ni disponible sur les systèmes basés sur Debian. Certaines des améliorations de sécurité ont été intégrées dans les dernières versions de PHP (5.4 et 5.5). Si vous souhaitez installer Suhosin (à partir de Github) sur Ubuntu 14.04 (PHP 5.5.9), vous pouvez suivre ce tutoriel.

Vous pouvez en savoir plus sur la controverse autour de la suppression de Suhosin sur LWN.net.

Séparation des privilèges

S’il y a plusieurs utilisateurs sur le système, la « séparation des privilèges » est un MUST. Cela signifie exécuter le code PHP dans le contexte de l’utilisateur (par exemple, en tant qu’utilisateur « maurits ») et non en tant qu’utilisateur « www-data ». J’ai trouvé un excellent article expliquant comment cela peut être réalisé. La solution la plus simple est d’exécuter:

sudo apt-get install libapache2-mpm-itk

Et ensuite d’ajouter la directive « AssignUserID » à chaque configuration « VirtualHost ». Notez que cette solution n’est peut-être pas la plus sûre, mais elle est performante et facile à installer.

Conclusion

Vous devriez toujours mettre à jour et patcher PHP à la dernière version pour empêcher l’exploitation des failles de sécurité connues. Des outils comme « disable_functions », « open_basedir », Suhosin et les drapeaux du système de fichiers réduisent la surface d’attaque et empêchent l’exploitation de failles de sécurité inconnues. Vous pouvez les utiliser pour mettre en œuvre une stratégie de sécurité en couches. N’oubliez pas non plus la séparation des privilèges.

Share

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Archives

  • janvier 2022
  • décembre 2021
  • novembre 2021
  • octobre 2021
  • septembre 2021

Méta

  • Connexion
  • Flux des publications
  • Flux des commentaires
  • Site de WordPress-FR
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress