Cet article présente principalement le principe et la solution de la vulnérabilité de téléchargement de fichiers chr(0) d'ASP. La vulnérabilité chr(0) peut contourner la vérification de l'extension lors du téléchargement de fichiers. Il s'agit d'une vulnérabilité très dangereuse.
Lorsque nous utilisons ASP pour développer la fonction de téléchargement de fichiers, afin d'empêcher les utilisateurs de télécharger des programmes chevaux de Troie, nous limitons souvent le téléchargement de certains fichiers. Une méthode courante consiste à déterminer si l'extension du fichier téléchargé est conforme aux réglementations que vous pouvez utiliser. la bonne fonction de chaîne pour récupérer le fichier téléchargé. Les quatre derniers chiffres du nom du fichier peuvent être facilement déterminés, mais il contient une vulnérabilité, qui est très dangereuse, et c'est la vulnérabilité chr(0). détails.
1. Tout d’abord, expliquez ce qu’est chr(0) ?
En ASP, vous pouvez utiliser la fonction chr() pour appeler le code ASCII, où chr(0) signifie que l'appel est un caractère de fin. En termes simples, lorsqu'une chaîne contient le caractère chr(0), uniquement le début de chr. (0) peut être des caractères affichés, les caractères après chr(0) ne seront pas affichés. Donnez un exemple pour illustrer :
Copiez le code comme suit :
<%response.write "HTMer.com"&chr(0)&"Bienvenue"%>
Si vous exécutez le code ci-dessus sous IIS, affichera-t-il uniquement « HTMer.com » ? Le "Bienvenue" suivant a disparu, car lorsque chr(0) est lu, l'instruction est considérée comme terminée.
2. Principe de téléchargement des vulnérabilités Chr(0) :
Supposons que j'ai configuré le programme ASP pour télécharger uniquement des fichiers jpg. Voici comment j'utilise la vulnérabilité chr(0) pour télécharger le cheval de Troie ASP :
Supposons ici qu'il existe un fichier cheval de Troie ASP appelé htmer.asp. Je l'ai renommé htmer.asp .jpg. Avez-vous vu un espace au milieu ? Lorsque nous obtenons le nom du fichier, cet espace est considéré comme chr(0). Lorsque nous utilisons right("htmer.asp .jpg",4) pour le visualiser, il s'agit bien de .jpg, mais lorsque nous lisons réellement htmer.asp . jpg, et lors de la génération du fichier, le système pense que c'est terminé lorsqu'il lit chr(0), donc le .jpg suivant ne peut pas être généré. Le nom du fichier téléchargé est automatiquement généré sous la forme htmer.asp. Je pense que tu devrais le savoir.
3. Méthodes pour résoudre la vulnérabilité chr(0)
La solution consiste à vérifier s'il y a chr(0) dans le nom du fichier téléchargé et à remplacer directement le caractère chr(0) par la fonction de remplacement dans ASP.