Site hacké : comment avoir des infos ?

WRInaute occasionnel
Bonjour,

Mon site a été hacké cet après midi par un certain DZ-Z3R0

Le type a effacé les fichiers présents dans le rep www/web bizarrement pas le .htaccess

Depuis bien que ma base de donnée soit intègre, je n'y ai plus accès via mon back office (par phpmyadmin oui par contre).

Mes questions :

1- Les logs ne faisant rien apparaitre de particulier à quel autre endroit puis-je chercher ?
2- Malgré le .htaccess est-ce valable de mettre un fichier html "bidon" dans tous les dossier ?

Merci
 
WRInaute discret
Sur quel base travaillez vous (prestashop ...) sans doute pourriez vous avoir l'adresse ip de la personne qui vous à fait cela.

au plaisir
 
WRInaute occasionnel
Savoy a dit:
1- Les logs ne faisant rien apparaitre de particulier à quel autre endroit puis-je chercher ??
Vous êtes en mutualisé ?
Quel est votre hébergeur ?
Demandez à votre hébergeur de vous aider.
 
WRInaute passionné
a mon avis si c'est du dev interne ca va être difficile, fort probablement une faille dans un formulaire de contact ou un truc du genre.

le type a du exploité la faille pour uploader du code malveillant et effacer le contenu de ton site.

en faisant une petite recherche il parait que le type est Algérien de la ville de Batna ( @ZeCat : désolé :p ) .

si tu as un backup de ton site, remet le en ligne en désactivant tous les formulaires et en désactivant les uploads.
assure toi aussi des droits que tu donne à tes dossier (plus spécialement les dossiers temporaires).

si t'es sur un dédié assure toi d'avoir les derniers patch sécu, que ton firewall est actif. bloque tous les ports sauf le 80 pour http, et utilise uniquement SSH en le faisant tourner sur un port non standard.

mais pour pouvoir t'aider il faut nous donner plus de détails :)
 
WRInaute accro
Bon de toute façon je connais pas joomla, donc pas crédible en "chat avec un bandeau noir sur un oeil" :mrgreen:
 
WRInaute occasionnel
Merci pour vos réponses (et désolé j'ai pas reçu les notifications de réponses)

Alors c'est un dev interne, ce n'est pas un Joomla et le type n'est pas passé par le ftp.
La bdd n'a pas été touchée, il s'est "contenté" de supprimer les fichiers présents dans www/web et de changer mon fichier index.html pour y mettre un slogan politique.

MAIS : a priori, il a aussi touché à un applicatif qui permet de gérer mon backoffice.
Pendant l'attaque, la fameuse IP du Maroc a listé tout le dossier d'admin (celui qui gère mon back office)...

Voilà les infos j'en saurai plus demain à priori car j'imagine que le dev va me dire que ça vient de l'hébergeur et l'hébergeur va me dire que c'est le dev...
 
WRInaute passionné
Si c'est un dev interne je dire 95% de chance que ca soit une faille dans le code, donc du dev.

après si t'es sur un mutu, et qu'une série de site ai subit le même problème là oui en effet ca ne peut être que la faute de l'hebergeur .... mais c'est la théorie la moins probable.
 
WRInaute accro
Tu sais quand même si tu as sécurisé ton truc ou pas non Savoy ? Je te l'avais rappeler de faire des controles en entrées en + quand tu avais montré un bout de code. Il était pas joli à voir !
 
WRInaute occasionnel
Bonjour (c'est très ch...t de ne pas recevoir vos réponses)

Merci à tous, voici ce que j'ai pu récupérer de mes logs ce matin :

Code:
Sat Jul  3 14:13:33 2010 0 ::ffff:41.200.167.143 0 /home/######/www/web/c99sh_backconn.pl b _ d rmonftp ftp 0 * c
Sat Jul  3 14:13:35 2010 0 ::ffff:41.200.167.143 549 /home/######/www/web/c99sh_bindport.pl b _ d r monftp ftp 0 * c

Qu'est-ce que je peux en déduire et comment parer à ce genre d'attaque ?
Autre question cela vient-il du dev ou de l'hébergeur

YoyoS a dit:
Tu sais quand même si tu as sécurisé ton truc ou pas non Savoy ? Je te l'avais rappeler de faire des controles en entrées en + quand tu avais montré un bout de code. Il était pas joli à voir !
Ben là moi je n'y connais pas grand-chose dans les fonctions php maleureusement... Est-ce qu'un attaque comme celle-ci peut venir des variables globales ?
 
WRInaute passionné
difficile de te dire si ca vient du dev ou de l'hébergeur mais comme je t'ai dis plus haut, à 95% ça vient du dev.
et avec les éléments que tu viens de posté je dirais à 99% ca vient du dev.

voici un scénario "imaginaire et simplifié" de comment aurait procédé le hacker .

1 - Il repère un formulaire non sécurisé sur ton site.
2 - Il injecte du code pour uploader un fichier sur ton site
3 - Il accède à ce fichier via une adresse http (puisqu'il l'a uploadé sur ton site), le code du fichier s'execute et donne accès total à ton serveur.


il faut savoir qu'un formulaire de contact mal sécurisé peut permettre l'uploade de fichier, de même qu'une requête SQL ou d'un code php quelconque .
 
WRInaute occasionnel
Ok c'est à peu près les mêmes infos que j'ai déjà eu.

Est-ce qu'un captcha peut résoudre le problème ?
Sinon mon développeur me dit que dans ses formulaire(s) on ne peut inscrire que du texte et qu'il est limité en nombre de caractères est-ce que ça vous parait sérieux comme réponse ?

Merci
 
WRInaute accro
Savoy a dit:
Est-ce qu'un captcha peut résoudre le problème ?
Sinon mon développeur me dit que dans ses formulaire(s) on ne peut inscrire que du texte et qu'il est limité en nombre de caractères est-ce que ça vous parait sérieux comme réponse ?
- Le CAPTCHA ne résoudra pas vraiment le problème, juste bloquer (une partie) des bots qui testent les failles.
- Que du texte? C'est assez vague
Code:
<?php echo file_get_contents('/etc/passwd');?>
Ce n'est que du texte...

- Limité en nombres de caractères, ne change pas grand chose, la faille est autre part.

Ça ressemble à C99Shell, donc surement du script kiddie.

Peut être chercher la faille avec:
SQL Inject Me: https://addons.mozilla.org/en-US/firefox/addon/7597/
ou
XSS Me: https://addons.mozilla.org/en-US/firefox/addon/7598/
 
WRInaute occasionnel
Savoy a dit:
Ok c'est à peu près les mêmes infos que j'ai déjà eu.

Est-ce qu'un captcha peut résoudre le problème ?
Sinon mon développeur me dit que dans ses formulaire(s) on ne peut inscrire que du texte et qu'il est limité en nombre de caractères est-ce que ça vous parait sérieux comme réponse ?

Merci

Donne-nous un lien vers ton phpinfo ou mets-le en message privé. Cela nous permettrait de connaître les modules activés, la configuration du serveur, les restrictions (disable_functions, etc), etc.

Google un formulaire avec question de sécurité, gestion des cookies, banissement des Ips... intégrés.

@+
 
WRInaute passionné
Savoy a dit:
Sinon mon développeur me dit que dans ses formulaire(s) on ne peut inscrire que du texte et qu'il est limité en nombre de caractères est-ce que ça vous parait sérieux comme réponse ?

si c'est la réponse "mot pour mot" de ton développeur, je crains qu'il ne soit pas calé niveau sécu.

il y a une différence entre ce que le formulaire (page html que l'utilisateur lambda vois) permet ou pas et ce que le script PHP derrière permet ou pas !

tu peux brider le html de ton formulaire comme tu veux : limitation de texte, élimination de caractère spéciaux ...etc
si ton code PHP derrière ne valide pas les données en entrée, c'est mort.

l'utilisation de C99Sh montre que c'est une faille da base qui a été exploité, peux tu nous montrer un exemple de code php de tes formulaires ?
 
WRInaute accro
aladdin a dit:
il y a une différence entre ce que le formulaire (page html que l'utilisateur lambda vois) permet ou pas et ce que le script PHP derrière permet ou pas !
+1
un formulaire sécurisé uniquement en html (voire js), c'est un formulaire non sécurisé :wink:
 
WRInaute occasionnel
@ Savoie

Pour être plus constructif,

a. Donne-nous un lien vers ton phpinfo ou mets-le en message privé. Cela nous permettrait de connaître les modules activés, la configuration du serveur, les restrictions (disable_functions, etc), etc. On aura une peu plus d'infos sur la sécurité chez ton hébergeur.

b. Pour ton besoin en formulaire, fait une recherche sur WRI, il y a un an environ, plusieurs wrinautes ont postés des exemples intéressants de formulaires avec différentes questions à répondre. Tu peux assez facilement y ajouter une double sécurité (captcha gratuit) dans le code pour les robots malveillants à un formulaire déjà existant. C'est ce qui a été fait pour un formulaire sur le www sous mon Pseudo.
 
WRInaute passionné
petite remarque : captcha ne protège en rien une faille dans le code, si le formulaire est faillible, je peux très bien injecter du code tout en entrant le bon captcha.
 
WRInaute occasionnel
aladdin a dit:
petite remarque : captcha ne protège en rien une faille dans le code, si le formulaire est faillible, je peux très bien injecter du code tout en entrant le bon captcha.
Évidemment. Le code doit suivre :)

On peut aussi monter d'une couche... si le site est mal sécurisé, si le serveur sur lequel est le site est mal sécurisé, le formulaire sécurisé n'est pas très utile. D'où la suggestion donnée plus haut.

Edit: la sécurité totale n'existe pas. La meileure sécurité demeure un backup journalier de tout le site. :)
Un formulaire parmi tant d'autres: _http://phwinfo.com/urldir/18
 
WRInaute occasionnel
Voila le php info :

Code:
PHP Logo
PHP Version 5.2.4-2ubuntu5.6

System 	Linux ###### 2.6.24-24-server #1 SMP Fri Sep 18 17:24:10 UTC 2009 i686
Build Date 	Apr 17 2009 14:11:20
Server API 	Apache 2.0 Handler
Virtual Directory Support 	disabled
Configuration File (php.ini) Path 	/etc/php5/apache2
Loaded Configuration File 	/usr/local/Zend/etc/php.ini
Scan this dir for additional .ini files 	/etc/php5/apache2/conf.d
additional .ini files parsed 	/etc/php5/apache2/conf.d/curl.ini, /etc/php5/apache2/conf.d/gd.ini, /etc/php5/apache2/conf.d/imagick.ini, /etc/php5/apache2/conf.d/mysql.ini, /etc/php5/apache2/conf.d/mysqli.ini, /etc/php5/apache2/conf.d/pdo.ini, /etc/php5/apache2/conf.d/pdo_mysql.ini
PHP API 	2##########25
PHP Extension 	2#############13
Zend Extension 	2##############519
Debug Build 	no
Thread Safety 	disabled
Zend Memory Manager 	enabled
IPv6 Support 	enabled
Registered PHP Streams 	zip, php, file, data, http, ftp, compress.bzip2, compress.zlib, https, ftps
Registered Stream Socket Transports 	tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
Registered Stream Filters 	string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, convert.iconv.*, bzip2.*, zlib.*

Suhosin logo This server is protected with the Suhosin Patch 0.9.6.2
Copyright (c) 2006 Hardened-PHP Project

Zend logo This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
    with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
    with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies

PHP Credits
Configuration
PHP Core
Directive	Local Value	Master Value
allow_call_time_pass_reference	On	On
allow_url_fopen	On	On
allow_url_include	Off	Off
always_populate_raw_post_data	Off	Off
arg_separator.input	&	&
arg_separator.output	&	&
asp_tags	Off	Off
auto_append_file	no value	no value
auto_globals_jit	On	On
auto_prepend_file	no value	no value
browscap	no value	no value
default_charset	no value	no value
default_mimetype	text/html	text/html
define_syslog_variables	Off	Off
disable_classes	no value	no value
disable_functions	no value	no value
display_errors	On	On
display_startup_errors	Off	Off
doc_root	no value	no value
docref_ext	no value	no value
docref_root	no value	no value
enable_dl	Off	Off
error_append_string	no value	no value
error_log	no value	no value
error_prepend_string	no value	no value
error_reporting	6135	6135
expose_php	On	On
extension_dir	/usr/lib/php5/20060613+lfs	/usr/lib/php5/20060613+lfs
file_uploads	On	On
highlight.bg	#FFFFFF	#FFFFFF
highlight.comment	#FF8000	#FF8000
highlight.default	#0000BB	#0000BB
highlight.html	#000000	#000000
highlight.keyword	#007700	#007700
highlight.string	#DD0000	#DD0000
html_errors	On	On
ignore_repeated_errors	Off	Off
ignore_repeated_source	Off	Off
ignore_user_abort	Off	Off
implicit_flush	Off	Off
include_path	.:/usr/share/php:/usr/share/pear	.:/usr/share/php:/usr/share/pear
log_errors	Off	Off
log_errors_max_len	1024	1024
magic_quotes_gpc	On	On
magic_quotes_runtime	Off	Off
magic_quotes_sybase	Off	Off
mail.force_extra_parameters	no value	no value
max_execution_time	30	30
max_input_nesting_level	64	64
max_input_time	60	60
memory_limit	50M	50M
open_basedir	no value	no value
output_buffering	no value	no value
output_handler	no value	no value
post_max_size	8M	8M
precision	12	12
realpath_cache_size	16K	16K
realpath_cache_ttl	120	120
register_argc_argv	On	On
register_globals	On	On
register_long_arrays	On	On
report_memleaks	On	On
report_zend_debug	On	On
safe_mode	Off	Off
safe_mode_exec_dir	no value	no value
safe_mode_gid	Off	Off
safe_mode_include_dir	no value	no value
sendmail_from	no value	no value
sendmail_path	/usr/sbin/sendmail -t -i 	/usr/sbin/sendmail -t -i 
serialize_precision	100	100
short_open_tag	On	On
SMTP	localhost	localhost
smtp_port	25	25
sql.safe_mode	Off	Off
suhosin.log.phpscript	0	0
suhosin.log.phpscript.is_safe	Off	Off
suhosin.log.phpscript.name	no value	no value
suhosin.log.sapi	no value	no value
suhosin.log.script	no value	no value
suhosin.log.script.name	no value	no value
suhosin.log.syslog	no value	no value
suhosin.log.syslog.facility	no value	no value
suhosin.log.syslog.priority	no value	no value
suhosin.log.use-x-forwarded-for	Off	Off
track_errors	Off	Off
unserialize_callback_func	no value	no value
upload_max_filesize	2M	2M
upload_tmp_dir	no value	no value
user_dir	no value	no value
variables_order	EGPCS	EGPCS
xmlrpc_error_number	0	0
xmlrpc_errors	Off	Off
y2k_compliance	On	On
zend.ze1_compatibility_mode	Off	Off

apache2handler
Apache Version 	Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
Apache API Version 	##########115
Server Administrator 	info@#####.com
Hostname:Port 	www.#####.com:0
User/Group 	www-#####
Max Requests 	Per Child: 0 - Keep Alive: on - Max Per Connection: 100
Timeouts 	Connection: 300 - Keep-Alive: 15
Virtual Server 	Yes
Server Root 	/etc/apache2
Loaded Modules 	core mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_rewrite mod_setenvif mod_status

Directive	Local Value	Master Value
engine	1	1
last_modified	0	0
xbithack	0	0

Apache Environment
Variable	Value
SCRIPT_URL 	############
SCRIPT_URI 	http:/###############hp
PERL5LIB 	/usr/share/awstats/lib:/usr/share/awstats/plugins
HTTP_HOST 	www.#####.com
HTTP_USER_AGENT 	Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 GTB7.0
HTTP_ACCEPT 	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE 	fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_ACCEPT_ENCODING 	gzip,deflate
HTTP_ACCEPT_CHARSET 	ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_KEEP_ALIVE 	115
HTTP_CONNECTION 	keep-alive
PATH 	/usr/local/bin:/usr/bin:/bin
SERVER_SIGNATURE 	no value
SERVER_SOFTWARE 	Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
SERVER_NAME 	www.#####.com
SERVER_ADDR 	94##############77
SERVER_PORT 	##
REMOTE_ADDR 	######
DOCUMENT_ROOT 	/home/############
SERVER_ADMIN 	info@###############
SCRIPT_FILENAME 	/home/###################
REMOTE_PORT 	49850
GATEWAY_INTERFACE 	CGI/1.1
SERVER_PROTOCOL 	HTTP/1.1
REQUEST_METHOD 	GET
QUERY_STRING 	no value
REQUEST_URI 	/#############p
SCRIPT_NAME 	/#############p

HTTP Headers Information
HTTP Request Headers
HTTP Request 	GET ##############TTP/1.1
Host 	www################3
User-Agent 	Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 GTB7.0
Accept 	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
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 	115
Connection 	keep-alive
HTTP Response Headers
X-Powered-By 	PHP/5.2.4-2ubuntu5.6
Keep-Alive 	timeout=15, max=100
Connection 	Keep-Alive
Transfer-Encoding 	chunked
Content-Type 	text/html

bcmath
BCMath support 	enabled

bz2
BZip2 Support 	Enabled
Stream Wrapper support 	compress.bz2://
Stream Filter support 	bzip2.decompress, bzip2.compress
BZip2 Version 	1.0.4, 20-Dec-2006

calendar
Calendar support 	enabled

ctype
ctype functions 	enabled

curl
cURL support 	enabled
cURL Information 	libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1

date
date/time support 	enabled
"Olson" Timezone Database Version 	0.system
Timezone Database 	internal
Default timezone 	Europe/Berlin

Dir########################

dba
DBA support 	enabled
Supported handlers 	cdb cdb_make db4 inifile flatfile

dom
DOM/XML 	enabled
DOM/XML API Version 	20############9
libxml Version 	2.6.31
HTML Support 	enabled
XPath Support 	enabled
XPointer Support 	enabled
Schema Support 	enabled
RelaxNG Support 	enabled

exif
EXIF Support 	enabled
EXIF Version 	1.4 $Id: exif.c,v 1.173.2.5.2.20 2007/06/10 20:12:45 iliaa Exp $
Supported EXIF Version 	0220
Supported filetypes 	JPEG,TIFF

filter
Input Validation and Filtering 	enabled
Revision 	$Revision: 1.52.2.39 $

Directive	Local Value	Master Value
filter.default	unsafe_raw	unsafe_raw
filter.default_flags	no value	no value

ftp
FTP support 	enabled

gd
GD Support 	enabled
GD Version 	2.0 or higher
FreeType Support 	enabled
FreeType Linkage 	with freetype
FreeType Version 	2.3.5
T1Lib Support 	enabled
GIF Read Support 	enabled
GIF Create Support 	enabled
JPG Support 	enabled
PNG Support 	enabled
WBMP Support 	enabled

gettext
GetText Support 	enabled

hash
hash support 	enabled
Hashing Engines 	md2 md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5

iconv
iconv support 	enabled
iconv implementation 	glibc
iconv library version 	2.7

Directive	Local Value	Master Value
iconv.input_encoding	ISO-8859-1	ISO-8859-1
iconv.internal_encoding	ISO-8859-1	ISO-8859-1
iconv.output_encoding	ISO-8859-1	ISO-8859-1

imagick
imagick module 	enabled
imagick module version 	2.0.1
imagick classes 	Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
ImageMagick version 	ImageMagick 6.3.7 02/19/08 Q16 http://www.imagemagick.org
ImageMagick release date 	02/19/08
ImageMagick Number of supported formats: 	179
ImageMagick Supported formats 	A, AI, ART, ARW, AVI, AVS, B, BMP, BMP2, BMP3, C, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DCM, DCR, DCX, DFONT, DJVU, DNG, DOT, DPS, DPX, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, EXR, FAX, FITS, FRACTAL, FTS, G, G3, GIF, GIF87, GRADIENT, GRAY, HISTOGRAM, HTM, HTML, ICB, ICO, ICON, INFO, IPL, JNG, JP2, JPC, JPEG, JPG, JPX, K, K25, KDC, LABEL, M, M2V, MAP, MAT, MATTE, MIFF, MNG, MONO, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NULL, O, ORF, OTB, OTF, PAL, PALM, PAM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PEF, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSD, PTIF, PWP, R, RAF, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMF, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XV, XWD, Y, YCbCr, YCbCrA, YUV

imap
IMAP c-Client Version 	2004
SSL Support 	enabled
Kerberos Support 	enabled

json
json support 	enabled
json version 	1.2.1

libxml
libXML support 	active
libXML Version 	2.6.31
libXML streams 	enabled

mbstring
Multibyte Support 	enabled
Multibyte string engine 	libmbfl
Multibyte (japanese) regex support 	enabled
Multibyte regex (oniguruma) version 	4.4.4
Multibyte regex (oniguruma) backtrack check 	On

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Directive	Local Value	Master Value
mbstring.detect_order	no value	no value
mbstring.encoding_translation	Off	Off
mbstring.func_overload	0	0
mbstring.http_input	pass	pass
mbstring.http_output	pass	pass
mbstring.internal_encoding	no value	no value
mbstring.language	neutral	neutral
mbstring.strict_detection	Off	Off
mbstring.substitute_character	no value	no value

mime_magic
mime_magic support	invalid magic file, disabled

Directive	Local Value	Master Value
mime_magic.debug	Off	Off
mime_magic.magicfile	/usr/share/file/magic.mime	/usr/share/file/magic.mime

mysql
MySQL Support	enabled
Active Persistent Links 	0
Active Links 	0
Client API version 	5.0.51a
MYSQL_MODULE_TYPE 	external
MYSQL_SOCKET 	/var/run/mysqld/mysqld.sock
MYSQL_INCLUDE 	-I/usr/include/mysql
MYSQL_LIBS 	-L/usr/lib -lmysqlclient

Directive	Local Value	Master Value
mysql.allow_persistent	On	On
mysql.connect_timeout	60	60
mysql.default_host	no value	no value
mysql.default_password	no value	no value
mysql.default_port	no value	no value
mysql.default_socket	no value	no value
mysql.default_user	no value	no value
mysql.max_links	Unlimited	Unlimited
mysql.max_persistent	Unlimited	Unlimited
mysql.trace_mode	Off	Off

mysqli
MysqlI Support	enabled
Client API library version 	5.0.51a
Client API header version 	5.0.51a
MYSQLI_SOCKET 	/var/run/mysqld/mysqld.sock

Directive	Local Value	Master Value
mysqli.default_host	no value	no value
mysqli.default_port	3306	3306
mysqli.default_pw	no value	no value
mysqli.default_socket	no value	no value
mysqli.default_user	no value	no value
mysqli.max_links	Unlimited	Unlimited
mysqli.reconnect	Off	Off

openssl
OpenSSL support 	enabled
OpenSSL Version 	OpenSSL 0.9.8g 19 Oct 2007

pcre
PCRE (Perl Compatible Regular Expressions) Support 	enabled
PCRE Library Version 	7.4 2007-09-21

Directive	Local Value	Master Value
pcre.backtrack_limit	100000	100000
pcre.recursion_limit	100000	100000

PDO
PDO support	enabled
PDO drivers 	mysql

pdo_mysql
PDO Driver for MySQL, client library version	5.0.51a

posix
Revision 	$Revision: 1.70.2.3.2.16 $

Reflection
Reflection	enabled
Version 	$Id: php_reflection.c,v 1.164.2.33.2.45 2007/08/20 17:01:22 sebastian Exp $

session
Session Support 	enabled
Registered save handlers 	files user
Registered serializer handlers 	php php_binary wddx

Directive	Local Value	Master Value
session.auto_start	Off	Off
session.bug_compat_42	On	On
session.bug_compat_warn	On	On
session.cache_expire	180	180
session.cache_limiter	nocache	nocache
session.cookie_domain	no value	no value
session.cookie_httponly	Off	Off
session.cookie_lifetime	0	0
session.cookie_path	/	/
session.cookie_secure	Off	Off
session.entropy_file	no value	no value
session.entropy_length	0	0
session.gc_divisor	100	100
session.gc_maxlifetime	1440	1440
session.gc_probability	0	0
session.hash_bits_per_character	4	4
session.hash_function	0	0
session.name	PHPSESSID	PHPSESSID
session.referer_check	no value	no value
session.save_handler	files	files
session.save_path	/var/lib/php5	/var/lib/php5
session.serialize_handler	php	php
session.use_cookies	On	On
session.use_only_cookies	Off	Off
session.use_trans_sid	0	0

shmop
shmop support 	enabled

SimpleXML
Simplexml support	enabled
Revision 	$Revision: 1.151.2.22.2.35 $
Schema support 	enabled

soap
Soap Client 	enabled
Soap Server 	enabled

Directive	Local Value	Master Value
soap.wsdl_cache	1	1
soap.wsdl_cache_dir	/tmp	/tmp
soap.wsdl_cache_enabled	1	1
soap.wsdl_cache_limit	5	5
soap.wsdl_cache_ttl	86400	86400

sockets
Sockets Support 	enabled

SPL
SPL support	enabled
Interfaces 	Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes 	AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, DirectoryIterator, DomainException, EmptyIterator, FilterIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RegexIterator, RuntimeException, SimpleXMLIterator, SplFileInfo, SplFileObject, SplObjectStorage, SplTempFileObject, UnderflowException, UnexpectedValueException

standard
Regex Library 	Bundled library enabled
Dynamic Library Support 	enabled
Path to sendmail 	/usr/sbin/sendmail -t -i

Directive	Local Value	Master Value
assert.active	1	1
assert.bail	0	0
assert.callback	no value	no value
assert.quiet_eval	0	0
assert.warning	1	1
auto_detect_line_endings	0	0
default_socket_timeout	60	60
safe_mode_allowed_env_vars	PHP_	PHP_
safe_mode_protected_env_vars	LD_LIBRARY_PATH	LD_LIBRARY_PATH
url_rewriter.tags	a=href,area=href,frame=src,input=src,form=,fieldset=	a=href,area=href,frame=src,input=src,form=,fieldset=
user_agent	no value	no value

sysvmsg
sysvmsg support 	enabled
Revision 	$Revision: 1.20.2.3.2.6 $

tokenizer
Tokenizer Support 	enabled

wddx
WDDX Support	enabled
WDDX Session Serializer 	enabled

xml
XML Support 	active
XML Namespace Support 	active
libxml2 Version 	2.6.31

xmlreader
XMLReader 	enabled

xmlwriter
XMLWriter 	enabled

Zend Optimizer
Optimization Pass 1 	enabled
Optimization Pass 2 	enabled
Optimization Pass 3 	enabled
Optimization Pass 4 	enabled
Optimization Pass 9 	enabled
Zend Loader 	enabled
License Path 	no value
Obfuscation level 	3

zip
Zip 	enabled
Extension Version 	$Id: php_zip.c,v 1.############################3jori Exp $
Zip version 	2.0.0
Libzip version 	0.7.1

zlib
ZLib Support 	enabled
Stream Wrapper support 	compress.zlib://
Stream Filter support 	zlib.inflate, zlib.deflate
Compiled Version 	1.2.1.1
Linked Version 	1.2.3.3

Directive	Local Value	Master Value
zlib.output_compression	Off	Off
zlib.output_compression_level	-1	-1
zlib.output_handler	no value	no value

Additional Modules
Module Name
sysvsem
sysvshm

Environment
Variable	Value
APACHE_PID_FILE 	/var/run/apache2.pid
PATH 	/usr/local/bin:/usr/bin:/bin
LANG 	C
APACHE_RUN_GROUP 	www-data
APACHE_RUN_USER 	www-data
PWD 	/

PHP Variables
Variable	Value
PHP_SELF ###############.php
_SERVER["SCRIPT_URL"]	#############.php
_SERVER["SCRIPT_URI"]	http://www.#######################php
_SERVER["PERL5LIB"]	/usr/share/awstats/lib:/usr/share/awstats/plugins
_SERVER["HTTP_HOST"]	www##################.com
_SERVER["HTTP_USER_AGENT"]	Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 GTB7.0
_SERVER["HTTP_ACCEPT"]	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
_SERVER["HTTP_ACCEPT_LANGUAGE"]	fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
_SERVER["HTTP_ACCEPT_ENCODING"]	gzip,deflate
_SERVER["HTTP_ACCEPT_CHARSET"]	ISO-8859-1,utf-8;q=0.7,*;q=0.7
_SERVER["HTTP_KEEP_ALIVE"]	115
_SERVER["HTTP_CONNECTION"]	keep-alive
_SERVER["PATH"]	/usr/local/bin:/usr/bin:/bin
_SERVER["SERVER_SIGNATURE"]	no value
_SERVER["SERVER_SOFTWARE"]	Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
_SERVER["SERVER_NAME"]	www.####################
_SERVER["SERVER_ADDR"]	####################
_SERVER["SERVER_PORT"]	###
_SERVER["REMOTE_ADDR"]	#################
_SERVER["DOCUMENT_ROOT"]	/###################b
_SERVER["SERVER_ADMIN"]	info@############################
_SERVER["SCRIPT_FILENAME"]	/h########################p
_SERVER["REMOTE_PORT"]	49850
_SERVER["GATEWAY_INTERFACE"]	CGI/1.1
_SERVER["SERVER_PROTOCOL"]	HTTP/1.1
_SERVER["REQUEST_METHOD"]	GET
_SERVER["QUERY_STRING"]	no value
_SERVER["REQUEST_URI"]	############
_SERVER["SCRIPT_NAME"]	################
_SERVER["PHP_SELF"]	/##############
_SERVER["REQUEST_TIME"]	###############
_SERVER["argv"]	

Array
(
)

_SERVER["argc"]	0
_ENV["APACHE_PID_FILE"]	/var/run/apache2.pid
_ENV["PATH"]	/usr/local/bin:/usr/bin:/bin
_ENV["LANG"]	C
_ENV["APACHE_RUN_GROUP"]	www-data
_ENV["APACHE_RUN_USER"]	www-data
_ENV["PWD"]	/

PHP License

This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.
 
WRInaute occasionnel
Et le formulaire de contact :

Code:
<?php

if(!strstr($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])) { header("location: /"); exit();};

if(empty($merci) || empty($dest) || empty($subject) ) {

exit();
}
if(empty($from)) $from="pouet@tralala.com";



class mime_mail  {

  var $parts;
  var $to;
  var $from;
  var $headers;
  var $subject;
  var $body;

      
  function mime_mail() {

    $this->parts = array();
    $this->to =  "";
    $this->from =  "";
    $this->subject =  "";
    $this->body =  "";
    $this->headers =  "";

  }


  function attach($message, $name, $ctype = '') {

  
    if (empty($ctype)) {

   
      switch(strrchr(basename($name), ".")) {

        case ".gz":   $ctype =  "application/x-gzip"; break;
        case ".tgz":  $ctype =  "application/x-gzip"; break;
        case ".zip":  $ctype =  "application/zip";    break;
        case ".pdf":  $ctype =  "application/pdf";    break;
        case ".png":  $ctype =  "image/png";  break;
        case ".gif":  $ctype =  "image/gif";  break;
        case ".jpg":  $ctype =  "image/jpeg"; break;
        case ".txt":  $ctype =  "text/plain"; break;
        case ".htm":  $ctype =  "text/html";  break;
        case ".html": $ctype =  "text/html";  break;
        default:      $ctype =  "application/octet-stream"; break;

      }

    }

    $this->parts[] = array (
             "ctype"   => $ctype,
             "message" => $message,
             "encode"  => $encode,
             "name"    => $name
    );

  }
 

  function build_message($part) {

    $message  = $part["message"];
    $message  = chunk_split(base64_encode($message));
    $encoding =  "base64";
 
    return( "Content-Type: ".$part[ "ctype"].
            ($part[ "name"]? "; name = \"".$part[ "name"]. "\"" :  "").
            "\nContent-Transfer-Encoding: $encoding\n\n$message\n" );
  
  }
 
 
  function build_multipart() {

    $boundary   =  "b".md5(uniqid(time()));
    $multipart  =  'Content-Type: multipart/mixed; boundary = '.$boundary;
    $multipart .= "\n\nThis is a MIME encoded message.\n\n--".$boundary;
 
    for ($i = sizeof($this->parts) - 1; $i >= 0; $i--) {
      $multipart .= "\n".$this->build_message($this->parts[$i]).'--'.$boundary;
    }
 
    return $multipart.=  "--\n";
  }
 
 
  function send() {

    $mime = 'Subject: '.$this->subject."\n";

    
    if (!empty($this->from))    $mime .=  '"From: '.$this->from. "\n";
    if (!empty($this->headers)) $mime .= $this->headers. "\n";
    if (!empty($this->body))    $this->attach($this->body,  '',  'text/plain');

   
    $mime .= "MIME-Version: 1.0\n".$this->build_multipart();

   
    mail( $this->to, $this->subject, '', $mime );

  }

};

$ret="";
 foreach($GLOBALS as $key=>$value) {
if($key=="DOCUMENT_ROOT") break;
                if($key!="_" && $key[0]=="_" && !empty($value)) {
                       $ret.=  substr($key,1)."=$value\n";
                       
                }
        }



$file_name = $FILEX;
if(!empty($file_name) && $FILEX!="none") {
@$fp = fopen( $file_name, "r") or die ("Erreur ouverture fichier : '$file_name'");

if ( $fp ) {
 
  $contenu_fichier = fread( $fp, filesize( $file_name )) or die("Erreur de lecture");
   
  $mail = new mime_mail();
  $mail->from = $from;
  $mail->subject = $subject;
  $mail->body = $ret;
  $mail->attach(  $contenu_fichier, $FILEX_name, $FILEX_type);
  $mail->to = $dest;
  $mail->send();
  
}
} else {
	mail($dest,$subject,$ret,"From: $from");
}

header("location: $merci");
?>

Qu'en pensez vous ?
Merci
 
WRInaute passionné
Le code PHP est faillible ... pas le temps pour expliquer tout de suite j'essairais ce soir .

à vue de nez, on peut uploader ce qu'on veux, et on peut spamer avec ton formulaire
 
WRInaute occasionnel
aladdin a dit:
Le code PHP est faillible ... pas le temps pour expliquer tout de suite j'essairais ce soir .

à vue de nez, on peut uploader ce qu'on veux, et on peut spamer avec ton formulaire

Pour le spam, je m'en étais rendu compte...
Pour l'upload, je m'en suis rendu compte samedi...

En tout cas si tu peux me dire ce qu'il faut corriger, je veux bien ton aide, en même temps, ce n'est pas à la minute. Merci en tout cas
 
WRInaute occasionnel
Je ne suis pas un expert en sécurité, loin de là, mais voici ce que je note dans votre phpinfo:

1. disable_functions ne contient aucune retrictions. Pour une meilleure sécurité, voici les variables qui pourraient être incluses: show_source,system,shell_exec,passthru,phpinfo,popen, proc_open,allow_url_fopen,ini_set.
2. register_globals est activé.
3. Apache tourne en module avec PHP for Suhosin activé. Assurez-vous qu'il soit bien configuré car Suhosin est capricieux (difficile à configurer selon certains). Perso, je ne l'ai jamais utilisé. Je suis donc pas en mesure de vous dire s'il est fonctionnel mais j'ai des doutes si je regarde les variables suhosin.
4. Mode_safe est désactivé.

Si c'est votre serveur, ce firewall va vous aider: http://www.configserver.com/cp/csf.html

Pour le formulaire, comme alladin le souligne, est très simple. Il en manque des bouts (gestion des cookies, restrictions...). Faites une recherche dans le forum Développement. On a donné des indications dans un sujet il y a deux ou trois jours.
 
WRInaute passionné
Tu utilises quoi pour te connecter à ton FTP ?
Tu as des mots de passe compliqués ?

En ce moment la grande mode est l'attaque par trojan, tu choppes un bout de javascript sur un site "normal" qui s'est fait hacké et qui va lire ton fichier FileZilla qui n'encrypte pas les mots de passe stockés. Si tu utilises filezilla, à mon avis, ton soucis vient de là. Une bonne analize antivirus et le problème devrait être réglé.
 
WRInaute occasionnel
Par curiosité, si c'est pas trop indiscret et sans le nommer, vous le payez comment et combien votre développeur ?

Pour ce script de formulaire ?
 
WRInaute accro
Julia41 a dit:
En ce moment la grande mode est l'attaque par trojan, tu choppes un bout de javascript sur un site "normal" qui s'est fait hacké et qui va lire ton fichier FileZilla qui n'encrypte pas les mots de passe stockés.
il me semblait que le js ne pouvait avoir accès aux fichiers locaux ?
 
WRInaute occasionnel
techron a dit:
Par curiosité, si c'est pas trop indiscret et sans le nommer, vous le payez comment et combien votre développeur ?

Pour ce script de formulaire ?
Boutique + back office + système de paiement au comptoir = 6000 €
 
WRInaute passionné
@agenceinternet : impossible de crypter un mot de passe en FTP, tout passe en claire, non seulement le passe mais aussi les fichier, un simple sniffer sur une connexion wifi et tu vois tout transiter en clair. pour sécuriser l'accès il y a SFTP et SSH. tenter de sécuriser FTP est vain ...

@Leonick : si j'ai bien compris, l'attaque consisterais à utiliser une faille du navigateur pour installer un code malveillant sur ta machine, qui lui collecte entre autre tes mots de passe et les envoi aux pirate, mais ca c'est pas nouveau, et c'est de cette manière que google s'est fait pirater par les chinois.


@Savoy : ton developpeur est un developpeur pure et dure, il connais bien son métier de développeur : code Objet, bien structuré, faciliment lisible, rien à dire de ce coté là ... mais à lire le code, il n'a quasiment aucune base de sécurité (ce qui n'est pas choquant s'il n'a jamais eu des cas de piratage ou qu'il vient de sortir d'une formation.

Pour faire simple : globalement il faut "sécuriser" toute donnée traité par ton formulaire.
toute donnée est potentiellement dangereuse

exemple

Code:
if(empty($merci) || empty($dest) || empty($subject) ) {
exit();
}

tu verifie si $merci, $dest et $subject sont vides ou pas, mais tu ne vérifie en aucun cas leur contenu, en gros, je peux passer dedans du conde html, php, des commandes SMTP ....etc
une rapide recherche sur le web te permettera de trouver les differents moyens pour vérifier les contenus des variables en voici un exemple : http://net.tutsplus.com/tutorials/php/sanitize-and-validate-data-with- ... p-filters/

deuxième exemple :
Code:
if(empty($from)) $from="pouet@tralala.com";

pareil, dans $from si j'injecte un code du genre "email@serveur.com \n TO : victime1@serv1.com, victime2@serv2.com, victime3@serv3.com"
j'utilise ton formulaire pour spammer les victimes.


plus serieux

Code:
switch(strrchr(basename($name), ".")) {

        case ".gz":   $ctype =  "application/x-gzip"; break;
        case ".tgz":  $ctype =  "application/x-gzip"; break;
        case ".zip":  $ctype =  "application/zip";    break;
        case ".pdf":  $ctype =  "application/pdf";    break;
        case ".png":  $ctype =  "image/png";  break;
        case ".gif":  $ctype =  "image/gif";  break;
        case ".jpg":  $ctype =  "image/jpeg"; break;
        case ".txt":  $ctype =  "text/plain"; break;
        case ".htm":  $ctype =  "text/html";  break;
        case ".html": $ctype =  "text/html";  break;
        default:      $ctype =  "application/octet-stream"; break;

      }
ce code permet de detecter le type de fichier, c'est bien, mais à aucun endroit de ton formulaire tu n'interdit l'envoi de fichier .exe, .php, .pl, .sh ...etc

et tu file même un coup de main au hacker potentiel avec ca :

Code:
@$fp = fopen( $file_name, "r") or die ("Erreur ouverture fichier : '$file_name'");

en gros ici tu lui donne potentiellement le chemin ou sera stocké le fichier sur ton serveur

bref, il y a beaucoup de choses à revoir, et vue le code de ce formulaire, il y a de fortes chances que d'autres brèches existent dans le code de ton site, et pas seulement dans les formulaires, les requêtes SQL, les appels ajax, ....etc

il faut beaucoup de documentation et une revue de code pour éviter que ca se reproduise.
 
WRInaute passionné
Savoy a dit:
techron a dit:
Par curiosité, si c'est pas trop indiscret et sans le nommer, vous le payez comment et combien votre développeur ?

Pour ce script de formulaire ?
Boutique + back office + système de paiement au comptoir = 6000 €


bon je n'ai pas vu le site pour critiquer, d'autant plus que je sais que la réalisation d'un site ca coute cher, mais il aurait du prévoir un backup.

tu es chez quel hebergeur ?
 
WRInaute occasionnel
aladdin a dit:
Savoy a dit:
techron a dit:
Par curiosité, si c'est pas trop indiscret et sans le nommer, vous le payez comment et combien votre développeur ?

Pour ce script de formulaire ?
Boutique + back office + système de paiement au comptoir = 6000 €


bon je n'ai pas vu le site pour critiquer, d'autant plus que je sais que la réalisation d'un site ca coute cher, mais il aurait du prévoir un backup.

tu es chez quel hebergeur ?

Je suis chez zonepro et franchement je n'ai rien n'à redire...
 
WRInaute passionné
dmande leur s'ils peuvent te récuperer un backup, la plupart des hebergeurs mutualisé le font, mais peut te permettent de récuperer une sauveguarde de ton site, essai quand même.

s'ils le font, met ton site hors ligne immediatement, et ne le remet en ligne qu'après avoir corrigé toutes les brèches
 
WRInaute passionné
Leonick a dit:
Julia41 a dit:
En ce moment la grande mode est l'attaque par trojan, tu choppes un bout de javascript sur un site "normal" qui s'est fait hacké et qui va lire ton fichier FileZilla qui n'encrypte pas les mots de passe stockés.
il me semblait que le js ne pouvait avoir accès aux fichiers locaux ?

Le JS non, le navigateur qui exécute le JS, malheureusement oui.
Perso, tous les cas de hack que j'ai aperçu ces 6 derniers mois sont dû à ça si le site n'est pas un CMS.
 
WRInaute passionné
c'est un script utilisé par les hackers (ou plutot lamers) pour contrôler un site victime.
le script a plusieurs variantes, plusieurs proposent des outils ou d'autres scripts qui tentent d'exploiter une multitude de faille connues ou potentiel pour arriver à uploader le fameux shell.
si par malheure le pirate arrive à uploadé le shell, le site est compromis, et si le hacker sais s'y prendre, il y a de fortes chances que le serveur y passe aussi


quand je parle de "l'utilisation de C99Shell" c'est d'après les logs que Savoy a posté avec des noms de scripts commancant par C99SH....
 
Nouveau WRInaute
Savoy a dit:
Code:
Sat Jul  3 14:13:33 2010 0 ::ffff:41.200.167.143 0 /home/######/www/web/c99sh_backconn.pl b _ d rmonftp ftp 0 * c
Sat Jul  3 14:13:35 2010 0 ::ffff:41.200.167.143 549 /home/######/www/web/c99sh_bindport.pl b _ d r monftp ftp 0 * c

Qu'est-ce que je peux en déduire et comment parer à ce genre d'attaque ?
Autre question cela vient-il du dev ou de l'hébergeur

C'est effectivement un shell C99 modifié. Le défaceur tente de faire se qu'on appele back connection avec le serveur afin d'exécuter un exploit pour monter en privilège (avoir le root).
Si les ###### du /home/######/www/web/c99sh_backconn.pl que tu as posté présente le dossier de ton site (ton nom ou login) alors c'est ton site qui est beugué.. Avant de chercher la faille dans ton CMS, cherche les fichiers c99sh_backconn.pl et c99sh_bindport.pl et c99.php et tout fichiers récemment crée et efface le tout.
Si le ### est le login d'un autre site alors tu es victime du serveur partagé non sécurisé.
 
WRInaute occasionnel
Merci pour toutes ces infos ça me permet de bien avancer, malgré le fait de ne pas y connaitre grand chose dans l'admin/gestion d'un serveur.

A priori, j'ai effacé les fichiers c99 mais le plus "chiant" reste de trouver la faille.

Avec les infos d'Aladdin, je vais essayer déjà de sécuriser le formulaire de contact pour au moins éviter que le type ne reprenne le même chemin...
 
WRInaute accro
déjà, dans les répertoires où ces fichiers c99 se trouvaient, vérifie si tu ne peux pas réduire les droits en écriture/exécution
 
WRInaute passionné
ce n'est pas forcement par CE formulaire qu'il a réussi à piraté ton site, mais si c'est le seul formulaire de ton site, y a de fortes chances
 
Discussions similaires
Haut