logo Homepage
Pages: [1] 2
  Imprimer  
Auteur Fil de discussion: [Résolu] Problème de sécurité sur mon site : conseils  (Lu 4056 fois)
Jordiaz Valayan
Profil challenge

Classement : 1456/49804

Néophyte
*
Hors ligne Hors ligne
Messages: 8


Voir le profil
« le: 22 Février 2012 à 18:55:55 »

Bonjour à tou(te)s.

J'ai récemment eu la désagréable surprise de voir un de mes sites hackés. (Gentillement, juste un texte effacé et deux ajouts pour marquer le passage du hackeur).
Conscient donc que ce site avait des problèmes de sécurité, j'ai donc cherché à comprendre comment il s'y était pris.

Tout d'abord le hackeur est dr.Skain, si il y en a qui connaissent...

Ma page permettant d'accéder à l'administration s'appelle admin.php, ma table stockant les utilisateurs s'appelle user avec les champs id / login / password. Jusque là, je lui ai bien facilité le travail.
Toutes les données passant dans ma requête d'identification sont "sécurisées" avec la fonction mysql_real_escape_string. Le mot de passe est en md5.
Je n'ai aucun upload de fichier possible à partir du front office.

Je ne pense pas à une injection SQL, car dans la base de donnée, la première entrée de la table user avait été modifée par le hackeur.
Le hic, c'est que je n'ai aucune requête dans mon site qui modifie cette table. La seule opération qui se fait dessus est l'identification, donc juste une consultation.

Si vous avez des idées sur la méthode utilisée et sur les développement à faire pour éviter que cela ne se reproduise, je vous en serais très reconnaissant

Merci d'avance.
« Dernière édition: 23 Février 2012 à 20:01:19 par Jordiaz Valayan » Journalisée
_o_
Relecteur

Profil challenge

Classement : 34/49804

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


Voir le profil
« #1 le: 22 Février 2012 à 20:33:34 »

Tout d'abord le hackeur est

Ou prétend être. Le but peut aussi être la désinformation.

Pour ce qui est de ton problème, il ne faut pas hésiter à faire un peu de out-of-the-box :
- comment est gérée la session dans les pages ? J'ai encore vu récemment des redirections vers le login en javascript. C'est pratique, on coupe javascript et y'a plus d'authentification.
- peut-être une attaque par dictionnaire sur l'authentification ?
- as-tu une page d'admin de la base style phpmyadmin ? Est-il à jour, facile à trouver ? L'authentification forte ?
- stockes-tu autre chose dans ta base, qui serait un vecteur d'injection ? La langue ? Le user-agent ? etc.

Difficile d'en dire plus sans voir le site en question, en tout cas.
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Jordiaz Valayan
Profil challenge

Classement : 1456/49804

Néophyte
*
Hors ligne Hors ligne
Messages: 8


Voir le profil
« #2 le: 22 Février 2012 à 20:42:59 »

Bonsoir, et merci pour ta réponse.

Le site est ***.

C'est un site d'information pour une petite commune, qui n'est pas censée drainer beaucoup de trafic. Il faut vraiment en avoir envie pour tomber dessus.

Je vais essayer de répondre à tes questions du mieux possible :

Citation
- comment est gérée la session dans les pages ?

Lorsque le formulaire d'identification est soumis, je fais une requête mysql pour vérifier que le couple login / mot de passe correspond. Si oui, j'affecte une valeur à une variable $_SESSION. Cette variable me permet de déterminer si l'utilisateur qui navigue sur les pages d'admin est identifié ou pas.

Citation
- peut-être une attaque par dictionnaire sur l'authentification ?
C'est possible, mais dans ce cas, comment a-t-il modifié la table user alors qu'il n'y a aucun moyen de le faire sur le site ? Il faut forcément passer par la base de donnée.

Citation
- as-tu une page d'admin de la base style phpmyadmin ? Est-il à jour, facile à trouver ? L'authentification forte ?
Il y a l'interface de gestion du serveur mis en place par l'hébergeur. Il est à jour et pas facile à trouver. Le mot de passe permettant d'y accéder est composé de chiffres et de lettres majuscules minuscules qui ne forment pas de mot (genre Uf21sTD5x)

Citation
- stockes-tu autre chose dans ta base, qui serait un vecteur d'injection ? La langue ? Le user-agent ? etc.
Non, la seule injection dans ma base que je fais à partir du front office est une inscription à la newsletter : 3 champs textes, nom / prénom / email. Il n'y avait pas de modification dans cette base.
Toutes mes autres tables concernent le contenu du site (texte, titre, image en gros).
« Dernière édition: 23 Février 2012 à 20:00:58 par Jordiaz Valayan » Journalisée
_o_
Relecteur

Profil challenge

Classement : 34/49804

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


Voir le profil
« #3 le: 22 Février 2012 à 22:38:00 »

Je n'ai pas le temps de trop regarder, mais je constate que c'est un serveur mutualisé. C'est peut-être donc un autre site qui est le vecteur d'attaque, auquel cas le pirate aurait compromis entièrement le serveur.
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
sirk390
Beta testeur

Profil challenge

Classement : 2/49804

Membre Junior
*
Hors ligne Hors ligne
Messages: 77


Voir le profil
« #4 le: 23 Février 2012 à 00:24:52 »

As-tu regardé les logs HTTP du serveur au moment du hack?
Ca devrait permettre d'en savoir déja un peu plus.
Journalisée
the lsd
Administrateur

Profil challenge

Classement : 161/49804

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

poulping for fun & profit


Voir le profil WWW
« #5 le: 23 Février 2012 à 00:53:02 »

As-tu regardé les logs HTTP du serveur au moment du hack?
Ca devrait permettre d'en savoir déja un peu plus.

Les logs http ? Sur un serveur mutualisé ? J'y crois pas trop perso.

L'idée de _o_ est très probable. La version de php est à jour sur le serveur ? Et Apache ? Et l'OS ?

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
Jordiaz Valayan
Profil challenge

Classement : 1456/49804

Néophyte
*
Hors ligne Hors ligne
Messages: 8


Voir le profil
« #6 le: 23 Février 2012 à 12:37:45 »

Bonjour à vous et merci de vous pencher sur mon problème.

Concernant les logs, le peu de log auquel j'ai accès ne m'a pas révélé d’incohérence, (log ftp et messages d'erreurs).

La version de PHP est le 5, Apache je n'en suis pas sur donc je ne dirai pas de bêtises. L'Os est Linux.

En regardant les stats, je vois qu'il a galéré a trouver la page d'administration. Dans les pages demandées qui ont un répondu un code 404, on trouve par exemple :

/administrator/account.asp
/db/scripts/setup.php
/user.php
/authuser.asp
/bb-admin/login.php

etc...
Journalisée
_o_
Relecteur

Profil challenge

Classement : 34/49804

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


Voir le profil
« #7 le: 23 Février 2012 à 14:00:23 »

En regardant les stats, je vois qu'il a galéré a trouver la page d'administration.

Ou pas. Vu la liste, il a probablement utilisé un scanner d'URL courantes.
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Jordiaz Valayan
Profil challenge

Classement : 1456/49804

Néophyte
*
Hors ligne Hors ligne
Messages: 8


Voir le profil
« #8 le: 23 Février 2012 à 14:39:33 »

Oui mais dans tous les cas, c'est ça qui m'échappe :

- Il a modifié une entrée dans la table user. La seule manière de la faire étant de modifier directement la base de données. (Base qui a un login / mot de passe différent de "root" / "")
- Pourquoi chercher la page d'administration si il a réussi à accéder à la base...

Journalisée
wait

Profil challenge

Classement : 573/49804

Membre Junior
**
Hors ligne Hors ligne
Messages: 57


Voir le profil
« #9 le: 23 Février 2012 à 15:08:58 »

Salut,

Bon j'annonce directe, je n'ai pas assez de connaissance pour t'apporter une réponse digne de ce nom, et les "grands" ici seront là pour t'aider. Mais j'ai pensé à un truc, peut être bête ... Mais sur la page admin.php, un brute force est largement possible non ? Car il est possible de valider autant de fois qu'on veut, sans qu'il est de captcha à la suite, ou truc du genre.

Peut-être post inutile, ou alors j'espère avoir apporté ne serait-ce qu'un peu d'aide 

Bon courage en tout cas.

w8!
Journalisée

#!/bin/bash

echo "Where there is a shell, there is a way"
_o_
Relecteur

Profil challenge

Classement : 34/49804

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


Voir le profil
« #10 le: 23 Février 2012 à 15:15:11 »

- Il a modifié une entrée dans la table user. La seule manière de la faire étant de modifier directement la base de données. (Base qui a un login / mot de passe différent de "root" / "")

C'est un mutualisé. Si le monsieur a la main sur le serveur, il a la main sur toutes les bases de données qui y sont hébergées. Dur d'y voir clair sans connaitre l'architecture du serveur, et la séparation entre les clients.

Citation
- Pourquoi chercher la page d'administration si il a réussi à accéder à la base...

C'est probablement l'inverse qui s'est produit. Et encore, pour cela il faut faire l'hypothèse que le pirate qui a scanné et celui qui a modifié la BDD sont une seule et même personne, ce qui n'est pas garanti non plus.
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Jordiaz Valayan
Profil challenge

Classement : 1456/49804

Néophyte
*
Hors ligne Hors ligne
Messages: 8


Voir le profil
« #11 le: 23 Février 2012 à 17:23:20 »


sur la page admin.php, un brute force est largement possible non ?

Oui, le bruteforce est possible, et les mots de passes n'étaient pas extrêmement complexes (je les ai changés au cas où). Il aurait peut être pu dans ce cas modifier la table user en utilisant les fonctions d'upload image / pdf. Je ne mets en sécurité sur l'upload qu'un test sur l'extension du fichier, mais il me semble avoir vu une épreuve ici qui démontrait que ce n'était pas suffisant

Oui, c'est une possibilité.
Journalisée
CommComm

Profil challenge

Classement : 70/49804

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


Voir le profil
« #12 le: 23 Février 2012 à 18:54:11 »

Je te mets un mot en privé. On accède à des choses sympathiques en deux minutes.
Journalisée

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(Devise d'un newbie shadok)
Jordiaz Valayan
Profil challenge

Classement : 1456/49804

Néophyte
*
Hors ligne Hors ligne
Messages: 8


Voir le profil
« #13 le: 23 Février 2012 à 19:28:05 »

Merci CommComm, en effet, c'était très sympathique...
Journalisée
CommComm

Profil challenge

Classement : 70/49804

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


Voir le profil
« #14 le: 23 Février 2012 à 19:38:17 »

C'est bon. J'ai l'admin du site. En douceur et sans bruteforce
Je t'ai remis un mp, bien sûr.

Quand je passe à Mellé, je m'arrête pour me faire offrir une bière
Journalisée

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(Devise d'un newbie shadok)
Pages: [1] 2
  Imprimer  
 
Aller à: