| | papalover | Posté le 15/02/2005 @ 20:12 | Petit astucien
625 Messages
| Bonjour,
voila j'ai un amie qui m'avais fais un script php il y a lontemp; mais le probleme c'est une personne a reussi a pirater mon site grace a sa :s alor jhe vous soumlet le code source pour m'ai der a trouver l'enventuel faille, je precise que ce fichier permet au utlisateur de mon site a pouvoir envoyé plusieur fichier au format jpg sur mon site, donc :
| <?php
$style = ($HTTP_GET_VARS['style'] == 'html') ? '?style='.$HTTP_GET_VARS['style'] : '';
if(count($_FILES))
{
if(count($_FILES) > 10)
{
echo "<font color=\"red\"><b>Vous n'avez le droit d'envoyer que 10 fichiers maximum !!</b></font>";
exit;
}
$erreurs[] = "";
$i = 1;
$html_style = '';
foreach($_FILES as $tagname=>$object)
{
$tempName = $object['tmp_name'];
$realName = $object['name'];
$new_name = date("YmdHis")."_".$realName;
eregi("(.*)\.([0-9a-z]{1,3})$", $new_name, $patterns);
$file_name = trim(str_replace(" ", "", $patterns[1]));
$file_ext = trim($patterns[2]);
if(!$file_name OR !eregi("^(jpg|jpeg)$", $file_ext))
{
$erreurs[$i] .= "<font color=red>Le nom du fichier est invalide (".$file_name.") ou l'extension n'est pas supportée (".$file_ext.")</font>";
}
else
{
$target = '../../image/'.$file_name.".".$file_ext;
@mkdir('../../image/',0777);
@flush();
@move_uploaded_file($tempName,$target);
$src_img = @imagecreatefromjpeg($target);
$origw=@imagesx($src_img);
$origh=@imagesy($src_img);
$new_w = '100';
$ratio=$origh*$new_w;
$new_h=$ratio/$origw;
$dst_img = @imagecreatetruecolor($new_w,$new_h);
@imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,$origw,$origh);
@imagejpeg($dst_img, "../../image/".$file_name."_min".".".$file_ext);
$url_img = "http://jackycaps.com/image/".$file_name.".".$file_ext;
$url_min = "http://jackycaps.com/image/".$file_name."_min.".$file_ext;
}
if(file_exists("../../image/".$file_name.".".$file_ext) AND file_exists("../../image/".$file_name."_min".".".$file_ext) AND !$erreurs[$i])
{
//echo "- URL de l'image:<br /><input type=\"text\" name=\"url_img\" size=\"80\" value=\"".$url_img."\"><br />";
//echo "- URL de la miniature :<br /><input type=\"text\" name=\"url_min\" size=\"80\" value=\"".$url_min."\"><br />";
//echo '- Code HTML à insérer :<br /><input type=\\'text\\' name=\\'html_code\\' size=\\'80\\' value=\\'<a target="_blank" href="'.$url_img.'"><img src="'.$url_min.'" border="0"></a>\\'><br />';
echo "[url=".$url_img."][img]".$url_min."[/img][/url]\n";
$html_style .= ' <a target="_blank" href="'.$url_img.'"><img src="'.$url_min.'" border="0"></a>';
}
else
{
echo $erreurs[$i];
}
$i++;
}
$html_style = '<br><input type=\\'text\\' name=\\'html_code\\' size=\\'100\\' value=\\''.$html_style.'\\'>';
if($HTTP_GET_VARS['style'] == 'html')
{
echo $html_style;
}
}
else
{
?>
<html>
<head>
<title>Contrib</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.testo {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
.titolo {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bolder;
}
-->
</style>
</head>
<body bgcolor=#F5F5F5 text="#666666" link=#003366 vlink=#999999 alink=#FFFFFF leftmargin=0 topmargin=0>
<table align="CENTER" width="600" border="0"><tr><td colspan="2"><center>
Chargez l'applet Java pour pouvoir uploader plusieurs fichiers d'un seul coup(20 max) (y a pas d'arnaques)<br>
Si vous désirez pas la charger, il y a toujours l'ancien bouton...<br>
Pour les video, cliquez <a href="http://ezshare.de/en/main.html">ici</a>!</td></tr>
<form action="./contrib.php<?php echo $style; ?>" method="post" enctype="multipart/form-data">
<tr><td>
<p align="left">
<input name="userfile" type="file" class="testo">
<input name="username" type="hidden" value="<?php print $userdata['username']; ?>">
</p>
</td></tr><tr>
<td><p align="left"><input name="Submit" type="submit" value="Envoyer l'image !" class="testo">
</p></td>
</tr></form>
<tr><td>
<applet code="JUpload/startup.class" archive="../jupload.jar" width="650" height="400">
<param name="actionURL" value="./contrib.php<?php echo $style; ?>">
<param name="progressbar" value="true">
<param name="boxmessage" value="Loading JUpload Applet ...">
<param name="maxFilesPerRequest" value="10">
<param name="debug" value="false">
Your browser does not support applets. Or you have disabled applet in your options.
To use this applet, please install the newest version of Sun's java. You can get it from <a href="http://www.java.com/">java.com</a>
</applet></td></tr>
<tr>
<td height="10" colspan="2"><hr></td>
</tr>
<tr>
<td height="10" colspan="2"></td>
</tr>
</td>
</table>
</body>
</html>
<?php
}
?>
|
voila je vous remerci de votre aide [clindoeil]
| | |
| |
| Publicité |
|
| | ti_ouf | Posté le 16/02/2005 à 14:26 | Astucien
4767 Messages
| hi
pour suivre | | | | | STAR*PC | Posté le 16/02/2005 à 17:11 | Astucien
1791 Messages
| Salut papalover !
J'ai pas regardé tout le code mais le début me rapelle quelque chose, c'est bien le script que je t'avais modifié ?
Dans ce cas, il me faudrait savoir exactement quel est le probleme surtout que le script se trouve sur mon serveur donc je pense pouvoir trouver le probleme ...
@++ | | | | | papalover | Posté le 16/02/2005 à 22:40 | Petit astucien
625 Messages
| STAR*PC a écrit :
Salut papalover !
J'ai pas regardé tout le code mais le début me rapelle quelque chose, c'est bien le script que je t'avais modifié ?
Dans ce cas, il me faudrait savoir exactement quel est le probleme surtout que le script se trouve sur mon serveur donc je pense pouvoir trouver le probleme ...
@++
|
sa fais plaisir de te voir [smile] non non celui marche bien enfin je crois, je demande l'avi des spacialiste, dison qu'une personne malvaillante a reussi a avoir mes code ftp je supose grace a l'encien que moi javais sur mon serveur... le truc c'est que je supose que sa vien de la car le gas avé juste laiser se fichier la sur le serveur.
Voila moi je vairé bien un petit faille dans se truc, on demande o php de viré tt se qui n'& pas jpg ! mais avant c'est a dire entre <body> et </body> on devrais faire un truc pour verifier si c'est du jpg. mais la je ne sais pas comment faire [smile] merci Pc stars ;) | | | | | STAR*PC | Posté le 17/02/2005 à 11:54 | Astucien
1791 Messages
| Salut,
Perso je suis désolé si ce code t'a posé des problemes de sécurité mais je vois vraiment pas comment on pourrais avoir tes pass FTP par ce code ...
Pour ce qui est de la vérification JPG, elle y est :
if(!$file_name OR !eregi("^(jpg|jpeg)$", $file_ext))
c'est un peu du "fait-maison" car il est possible de faire passer n'importe quel fichier juste en le renommant mais en fait j'ai mis cette ligne, simplement pour ne pas avoir d'erreurs lors de la création de la miniature après qui ne fonctionne qu'avec des JPG ($src_img = imagecreatefromjpeg($target);
La vérification du JPG ne peux se faire qu'en PHP: dans l'espace "statique" (le html) tu ne peux pas vérifier cela ...
@++ | | | | | papalover | Posté le 17/02/2005 à 21:29 | Petit astucien
625 Messages
| ba enfet, deja c'est pas celui la, qui ma cosé souci c'est l'ancien que moi j'avais, ensuit je me pose egalment la question pour c'est histoir de jpg, et comment iil a eu mes pass, j'ai sa :
[code]<param name="customFileFilterExtensions" value="gif,jpg,jpeg">[/code]
pour verifier le jpg avan le de commencer a le transmetre sur le ftp | | | | | STAR*PC | Posté le 18/02/2005 à 12:12 | Astucien
1791 Messages
| | papalover a écrit :
[code]<param name="customFileFilterExtensions" value="gif,jpg,jpeg">[/code]
pour verifier le jpg avan le de commencer a le transmetre sur le ftp
|
Oui mais ça c'est au niveau de l'applet, pas de PHP ... | | | | | papalover | Posté le 18/02/2005 à 18:10 | Petit astucien
625 Messages
| oui bien sur, car on ne demande pas a l'aplet se qu'il peut l'essai passez, de touste facon je vais faire un test, je vais foutre se script la sur le serveur, s'il mataque c'est qu'il y a une faille, s'il y arive pas c'est qu'il y en a pas. merci | | | |
| | Haut de la page |
| | Inscrivez-vous ! |
- Posez vos questions
- Résolvez vos problèmes
- Aidez les autres
- Participez et créez vos discussions
- Dialoguez en privé avec d'autres membres
- Suivez vos sujets préférés
- Affichez les signatures des membres
|
|