Natas Web. Passage de la plateforme CTF visant à exploiter les vulnérabilités du Web

image

Dans cet article, nous traiterons du fonctionnement de certaines identités WEB en utilisant le wargame Natas comme exemple. Chaque niveau a accès au mot de passe de niveau suivant. Tous les mots de passe sont également stockés dans les fichiers / etc / natas_webpass /. Par exemple, le mot de passe de natas5 est stocké dans le fichier / etc / natas_webpass / natas5 et est en lecture seule pour les utilisateurs natas4 et natas5.

Information organisationnelle
Surtout pour ceux qui veulent apprendre quelque chose de nouveau et se développer dans l'un des domaines de l'information et de la sécurité informatique, j'écrirai et parlerai des catégories suivantes:

  • PWN;
  • cryptographie (Crypto);
  • technologies de réseau (réseau);
  • reverse (Reverse Engineering);
  • stéganographie (Stegano);
  • recherche et exploitation des vulnérabilités WEB.

En plus de cela, je partagerai mon expérience en criminalistique informatique, analyse de logiciels malveillants et micrologiciels, attaques sur les réseaux sans fil et les réseaux locaux, réalisation de pentests et écriture d'exploits.

Afin que vous puissiez vous renseigner sur les nouveaux articles, logiciels et autres informations, j'ai créé une chaîne dans Telegram et un groupe pour discuter de tout problème dans le domaine de l'ICD. Aussi, je considérerai personnellement vos demandes, questions, suggestions et recommandations personnelles et répondrai à tout le monde .

Toutes les informations sont fournies à des fins éducatives uniquement. L'auteur de ce document n'assume aucune responsabilité pour tout dommage causé à quelqu'un du fait de l'utilisation des connaissances et des méthodes obtenues à la suite de l'étude de ce document.

niveau 0


Nous regardons le code source de la page et vérifions les commentaires.

image

Nous trouvons le mot de passe.
Très souvent, lors du développement de sites, les développeurs commentent eux-mêmes diverses informations auxiliaires, y compris les données d'autorisation.

niveau 1


Nous regardons à nouveau le code source de la page, mais un événement de souris avec un clic droit est attribué à un événement javascript, ce qui empêche le menu contextuel de surgir.

image

Pour afficher la page, vous pouvez utiliser les raccourcis du navigateur, puis l'événement d'appuyer sur le bouton droit de la souris ne fonctionnera pas.

image

Nous trouvons le mot de passe.
En option (parfois prioritaire), vous pouvez simplement télécharger la page entière et visualiser le code.
wget --http-user=natas1 --http-password=gtVrDuiDfck831PqWsLEZy5gyDz1clto http://natas1.natas.labs.overthewire.org 

image

niveau 2


Nous regardons à nouveau le code source de la page, notons que l'image se charge sur la page.

image

Allons dans le répertoire où l'image est téléchargée. Nous observons que ce répertoire n'est pas indexé et disponible pour les utilisateurs.

image

Nous enlevons le mot de passe.

image
Afin d'éviter d'afficher des fichiers dans le répertoire, les paramètres du serveur (dans ce cas /etc/apche2/httpd.conf) doivent interdire l'indexation des fichiers. Ou dans ce répertoire doit se trouver le fichier index.html.

niveau 3


Nous regardons à nouveau le code source de la page, il n'y a rien d'intéressant là-bas. Le deuxième élément après avoir consulté le code source est l'analyse des fichiers et des répertoires. Spécifiez l'utilisateur et le mot de passe pour l'authentification http comme paramètres de l'utilitaire dirb.

image

Le fichier robots.txt contient une liste de répertoires et de fichiers qui ne peuvent pas être consultés par les robots des moteurs de recherche (par exemple, google et yandex).

image

Allons dans le répertoire caché du site, trouvons le fichier et récupérons le mot de passe.

image

image
En tant qu'analogue, vous pouvez utiliser l'utilitaire dirsearch ou burpsuite.

niveau 4


Le serveur informe de quelle page ils sont partis et indique à quelle page aller. Il ne peut vérifier ces données que dans l'en-tête du protocole HTTP.

image

Dans le navigateur, sélectionnez la barre d'outils → réseau → dernière demande et «modifier et envoyer». Vous devriez changer le champ Referer - il montre exactement d'où nous venons.

image

Reste à récupérer le mot de passe.

image
Cette action est burpsuite.

Il est nécessaire de vérifier en permanence les champs HTTP que le serveur Web affiche. Il s'agit des données utilisateur les plus rarement filtrées.

niveau 5


Le service signale que nous ne sommes pas connectés. Autrement dit, il stocke les données de notre autorisation. Le seul endroit où cela peut être transmis est la session des cookies.

image

Voyons les cookies (pour plus de commodité, il est préférable d'installer des extensions dans le navigateur) et changez la valeur du paramètre de connexion à 1.

image

Rechargez la page et récupérez le mot de passe.

image
Cette vulnérabilité est classée comme Authentification brisée et Gestion de session.

niveau 6


Ce service nous fournit le code source pour l'analyse.

image

Le secret que nous devons saisir est inclus (connecté à partir du fichier).

image

Accédez à l'adresse de ce fichier sur le serveur et obtenez
un secret. Étant donné que ces fichiers contiennent du code php, ils
affiché uniquement si vous les téléchargez.

image

Envoyez un secret, obtenez un mot de passe.

niveau 7


En cliquant sur les deux liens, nous remarquons comment ils sont chargés. Le nom de fichier sur le serveur est transmis dans les pages de paramètres GET.

image

Essayons de spécifier le chemin d'accès au fichier / etc / passwd en tant que paramètre.

image

Et ils nous disent où obtenir le mot de passe.

image
La vulnérabilité est classée comme LFI.

niveau 8


Le code source du service est fourni. La chaîne codée et la méthode de codage sont stockées.

image

Il faut décoder dans l'ordre inverse:

  1. convertir d'une vue hexadécimale en représentation binaire;
  2. retourner la ligne;
  3. décoder base64.

 <?php $secret = "3d3d516343746d4d6d6c315669563362"; echo base64_decode(strrev(hex2bin($secret)))."\n"; ?> 

image

Envoyez un secret et obtenez un mot de passe.

image

niveau 9


À partir de l'analyse du code source, il devient clair que les données utilisateur sont transférées vers la ligne de commande pour rechercher des données dans le fichier.

image

Étant donné que les données ne sont pas filtrées, vous pouvez collecter le pipeline et exécuter d'autres commandes du système d'exploitation. Si vous passez une chaîne à la demande, par exemple: "|| ls # ", alors la requête complète deviendra" grep -i || ls # dictionary.txt. " Tout après || - sera exécuté avec une erreur, et après # - il sera commenté, c'est-à-dire que nous n'obtiendrons que la sortie de la commande ls.

image

Ainsi, nous lisons le fichier: “|| cat / etc / natas_webpass / natas10 # ".

image
La vulnérabilité est classée comme OS Command Injection.

niveau 10


À partir de l'analyse du code source, il devient clair que les données utilisateur sont transférées vers la ligne de commande pour rechercher des données dans le fichier.

image

La tâche est la même qu'au niveau 9, seulement maintenant il y a un filtre. T.O. les signes disparaîtront de la requête: ";", "|", "&". Vous pouvez légitimement lire le fichier! Supposons que notre mot de passe porte le symbole "z": "z / etc / natas_webpass / natas11 #".

image

À suivre. Vous pouvez nous rejoindre sur Telegram .

Source: https://habr.com/ru/post/fr464111/


All Articles