


Analyse d'instance de vulnérabilité de connexion utilisateur arbitraire Gogs
1. Contexte de vulnérabilité
Gogs est un système de gestion de fichiers/codes open source (basé sur Git) similaire à GitHub. L'objectif de Gogs est de créer le moyen le plus simple, le plus rapide et le plus simple de créer un service Git en libre-service. Développé dans le langage Go, Gogs peut être distribué sous forme de binaire autonome et prend en charge toutes les plates-formes prises en charge par le langage Go, notamment les plates-formes Linux, Mac OS X, Windows et ARM.
2. Description de la vulnérabilité
gogs est une plate-forme de service Git en libre-service facile à construire. Elle présente les caractéristiques d'une installation facile, multiplateforme, légère, etc. et compte de nombreux utilisateurs. Dans sa version 0.11.66 et les versions précédentes, (bibliothèque go-macaron/session) ne vérifie pas l'identifiant de session. Un attaquant peut utiliser un identifiant de session malveillant pour lire n'importe quel fichier, contrôler le contenu de la session en contrôlant le contenu du fichier, puis se connecter à. n'importe quel compte.
3. Versions concernées
Les versions concernées sont les suivantes :
Gogs 0.11.66 et versions précédentes
4. Récurrence de la vulnérabilité
(1) Utilisez le docker de la machine virtuelle Ubuntu pour cloner l'environnement gogs sur vulhub
(2. ) Exécutez Start gogs avec la commande suivante : docker-compose up -d
(3) Une fois l'environnement démarré, visitez http://192.168.49.103:3000/install pour voir la page d'installation. Lors de l'installation, sélectionnez la base de données sqlite et activez la fonction d'enregistrement.
(4) Utilisez la sérialisation Gob pour générer des données de fichier de session.
(5) Enregistrez ensuite un compte utilisateur normal, créez un projet et téléchargez le fichier de session nouvellement généré sur la page « Version Release ».
(6) Grâce à l'URL de cette pièce jointe, vous pouvez connaître le nom de ce fichier : ./attachments/2eb7f1a2-b5ec-482e-a297-15b625d24a10. Ensuite, construisez Cookie : i_like_gogits=../attachments/2/e/2eb7f1a2-b5ec-482e-a297-15b625d24a10 Après l'accès, vous pouvez trouver l'utilisateur qui s'est connecté avec succès avec l'id=1 (c'est-à-dire l'administrateur root)
.
cinq, Analyse et utilisation des vulnérabilités
Tout d'abord, pour chaque utilisateur, nous pouvons créer un entrepôt et télécharger n'importe quel fichier avec un contenu contrôlable via la fonction de publication, nous fournissant ainsi les conditions pour forger des fichiers de session.
Grâce à la fonction explorer, nous pouvons trouver Il existe de nombreux entrepôts d'utilisateurs. En entrant dans la page d'informations utilisateur d'un utilisateur, nous pouvons obtenir toutes les informations (uid, nom d'utilisateur) nécessaires à la construction de la session de l'utilisateur. code ci-dessus, nous avons constaté que le contenu du fichier de session est un codage Gob, basé sur la charge utile de session écrite par P Niu.
À partir de là, nous pouvons générer une session, et grâce à la fonction de téléchargement de version disponible pour chaque utilisateur, nous téléchargeons notre session forgée sur le serveur.
La structure de répertoires dans laquelle les fichiers dans gogs et release sont stockés par défaut est attachments/fid[0]/fid[1]/fid. La structure de répertoires dans laquelle les sessions sont stockées est sessions/sid[0]/sid[1]/sid. De plus, les dossiers sessions et pièces jointes sont stockés dans le même dossier de données.
Parce que gogs segmentera la session et la construira dans le chemin final avant de la lire. Puisque les pièces jointes et la session sont dans le même dossier, modifiez la session avec le chemin du fichier que nous venons de télécharger, c'est-à-dire ../. attachments /1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b, la fonction qui lit la session analyse le chemin d'accès aux sessions/././../attachments/1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b , qui est le fichier que nous avons téléchargé finira par compléter la connexion de n'importe quel utilisateur.
6. Suggestions de réparation
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)