logo Homepage
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Tout sur la faille remote code injection  (Lu 3692 fois)
cybersee

Profil challenge

Classement : 14426/54252

Néophyte
*
Hors ligne Hors ligne
Messages: 11

White Hat Hacker www.N-PN.info


Voir le profil WWW
« le: 24 Août 2011 à 20:16:51 »

Bonjour à tous,
Je vais essayer de vous expliquer avec des exemples concrets une autre faille qui est encore très présente sur le web parce qu'il s’agit ici d'une faille qui se produit par un manque d'expérience de la part du programmeur. Cette faille permet au hacker d'exécuter des codes à sa guise ce qui lui permettra de prendre le contrôle du site et ultimement du serveur. Il est donc très important de bien comprendre comment elle se produit afin de pouvoir se protéger adéquatement.

Pour commencer, nous allons examiner le code d'un système de commentaire envoyé par la page "envoyer.php" et reçu par la page "commentaires.php".

La page "envoyer.php" est assez simple. Il s’agit simplement du formulaire qui contient le textarea du commentaire.
Ex
Code:
<form method="POST">
<textarea rows="5" name="commentaire" cols="50"></textarea>
<p><input type="submit" value="Envoyer" name="envoyer"></p>
</form>

La page commentaires.php qui reçoit les données ressemblera donc à ceci
Ex
Code:
<?php

$commentaire 
$_POST['commentaire'];
$log fopen('commentaires.php','a');
fwrite($log,'<br />'.'<br />.'<center>'.'Commentaire::'.'<br />'.$commentaire);
fclose($log);

?>

Si vous ne voyez pas la faille dans ses quelques lignes, vous devriez vraiment commencer sérieusement a apprendre le PHP lol Vous ne pourrez jamais vous dire hacker si vous ne maîtriser pas le langage le plus utiliser sur le web.

Pour les autres, bien que cet exemple soit très peux probable sous cette forme, le programmeur a choisi d'insérer les commentaires a l'intérieur d'une page PHP ce qui permet au hacker d'injecter n'importe quel code incluant du PHP. Pour savoir si le script en question est vulnérable ou non, il suffirais de poster un commentaire comme ceci:

Code:
<?php echo "Très beau système de commentaire félicitation"?>

Si après avoir posté ceci, la seule chose qui est montrée est la phrase en question, cela veut dire qu'il y a aucun système de filtration des caractères en place. Il est donc possible d'injecter du PHP a notre guise.

Il arrive aussi que cette faille soit présente dans un système de log quelconque. Ex un système de statistique qui log les IP qui accède le site.

Code:
<?php

$page 
$_SERVER['PHP_SELF']."?".$_SERVER['QUERRY_STRING'];
$ip $_SERVER['REMOTE_ADDR'];
$error fopen('errorlog.php','a');
fwrite($error,'<br />'.$page.'<br />'.$ip.'<br />_________________');
fclose($error);

?>

Comme vous pouvez le constater, ce code enregistre la page en utilisant PHP_SELF mais en plus de ça, il enregistre les variables GET en utilisant QUERRY_STRING ce que nous pouvons manipuler a notre guise.

Il serait donc possible d'arriver au même résultat en tapant une URL comme ceci
Code:
http://victime.com?php=<?php echo "ERROR 404"?>

Si en ouvrant le log vous ne voyez que http://victime.com?php=ERROR 404 sans voire le code PHP autour c'est que le code est vulnérable.

Maintenant que nous avons trouvé un site vulnérable, quoi faire? lol

Pour exploiter a font cette faille sans ce faire repéré par l'admin, il va falloir être très ruser.

Dans le cas du premier exemple, ce que nous pourrions faire c'est uploader un shell mais cacher dernière une variable GET ... Je vais laisser le code suivant parler de lui même.

Code:
<?php echo "Voici mon message"; if ($_GET[CyberSee]=="1"){ /* CODE DU SHELL PHP*/ ?>

à la vue des utilisateurs, qui regarderons le fichier commentaire, ils ne verront que le message en question. Par contre, si vous ouvrez maintenant l'URL suivante:

Code:
http://victime.com/commentaires.php?CyberSee=1

Vous verrez le SHELL PHP s'exécuter en plein milieu de la page commentaire! La dernière fois que j’ai utilisé cette technique, j'ai été confronté à un petit problème ... la case commentaire avait une limite de caractère et supprimait tout ce qui dépassait ... J’ai donc eu du mal a supprimer mon shell qui brisait l'affichage de la page en question puisque le code php étais incomplet. Il est donc préférable de tester le nombre de caractères utilisés par le shell avant de l'injecter

Veillez cité la source et l'auteur si vous désirer reprendre mon tuto.

Soyez intelligent et restez WhiteHat!
Par CyberSee
Journalisée

1x.1x_3x.1x_7x.3x_3x1x_3x.1x_1x.
1x(1x.1x\1x.1x(1x.1x)5x.1x(2x.1x)1x.1x(1x.1x\1x.1x(1x.1x)
1x|1x.2x\1x|1x.1x|1x.3x_1x.1x|1x.1xO2x.2x|1x.2x\1x|1x.1x|
1x(1x.1x)2x\1x.1x)1x(3x_1x)1x(1x.2x_1x/1x.1x(1x.1x)2x\1x.1x)
1x/1x_1x\1x.1x\1x_1x\5x.1x/1x_1x\3x.1x/1x_1x\1x.1x\1x_1x\
Une épreuve de plus? - Validez-le par MP ;-) Bonne chance!
Chilly
Relecteur

Profil challenge

Classement : 266/54252

Membre Senior
*
Hors ligne Hors ligne
Messages: 307


Voir le profil
« #1 le: 10 Septembre 2011 à 23:48:40 »

pour moi c'est un grand non
Journalisée

Non au langage SMS !!! http://sms.informatiquefrance.com
S0410N3
Administrateur

Profil challenge

Classement : 10/54252

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1260


Voir le profil WWW
« #2 le: 12 Septembre 2011 à 21:19:12 »

pour moi il fait plein de fautes...
Journalisée

Enjoy (copyleft de quelqu'un qui a trop parlé)

S0410N3

-------------------------------------------------------------------------------------
La folie est le prix à payer pour le temps passé à être trop lucide.
-------------------------------------------------------------------------------------
http://forum.hardware.fr/hfr/Discussions/Societe/francais-repere-repaire-sujet_19265_1.htm
Pages: [1]
  Imprimer  
 
Aller à: