Fork me on GitHub




(1) 2 »


Module Hacker par SQL Injections plus accessible
Semi pro
Inscrit: 19/08/2006 03:45
De Paris
Messages: 520
Bonjour, je me suis fait hacker un module par SQL injections, depuis j'ai une page blanche même coté admin j'ai fait une mise à jour du module via l'admin de xoops & toujours pareils comment je peut régler le problème & cela a t'il pu endommagé ma base de donnée ou autre car pour l'instant hormis le fait que je ne puisse plus y accéder c'est tout ce que j'ai constaté je m'attends au pire !

Le problème vient du fait que j'ai ajouté une form de recherche sur un champs que j'ai rajouté dans ma base.

En mode Debug j'ai aucune erreur ?

L'iP (68.180.228.31) correspond à Yahoo, le hacker c'est caché derrière ?

Posté le : 24/01/2015 05:37

Edité par bosco sur 30/01/2015 00:54:19

Version Bootstrap
4.5.3
Version font-awesome
5.15.1
Version Xoops
2.5.10
Partager Twitter Partagez cette article sur GG+
Re: Module Hacker par SQL Injections plus accessible
Semi pro
Inscrit: 19/08/2006 03:45
De Paris
Messages: 520
Je viens de me pencher sur la requête il se trouve qu'elle n'as pas l'air modifié le seul hic c'est que le nom demander dans la requête est composé d'une apostrophe & d'après ce que dit Wikipédia :
L'apostrophe indique la fin de la zone de frappe de l'utilisateur

Donc c'est ça qui aurait créer le bug, quand à la requête je l'ai construit d'après un exemple fournis par le site : openclassrooms.com bien bravo leur site je ne suis pas prêt de le recommander !

Les blocks concernant mon module s'affichent bien sur toutes les page du site ainsi que les données mais l'accès au module en tant qu'utilisateur anonyme & enregistré est impossible même via le panneau d'administration xoops ???

Page blanche sans aucune erreur, franchement je sèche, comment je peut corriger le problème ?

Posté le : 24/01/2015 07:13

Version Bootstrap
4.5.3
Version font-awesome
5.15.1
Version Xoops
2.5.10
Partager Twitter Partagez cette article sur GG+
Re: Module Hacker par SQL Injections plus accessible
Semi pro
Inscrit: 19/08/2006 03:45
De Paris
Messages: 520
Encore moi

J'ai étudié ma requête & je ne comprends pas trop le pourquoi du comment car elle me paraît bien construite quand je la compare à d'autres existante dans des fichiers de module qui fonctionne, voila comment elle est :

<?PHP
include 'header.php';

$sql "SELECT * FROM `prefix_xoops_test` WHERE `year` = '".$_GET['year']."' AND `title` = '".$_GET['nom']."' ORDER BY `prefix_xoops_test` .`title` ASC"

$result $xoopsDB -> query($sql);

include(
XOOPS_ROOT_PATH."/header.php");

While (list(
$lid$cid$title$year) = $xoopsDB->fetchRow($result)) {


Et la valeur récupéré par title : M'balo

Dès fois ça peut aider, vous comme moi

Posté le : 24/01/2015 08:13

Version Bootstrap
4.5.3
Version font-awesome
5.15.1
Version Xoops
2.5.10
Partager Twitter Partagez cette article sur GG+
Re: Module Hacker par SQL Injections plus accessible
Semi pro
Inscrit: 19/08/2006 03:45
De Paris
Messages: 520
L'injection trouvé par le module Protector n'as rien avoir avec mon problème, idem pour la requête SQL

Le problème viens de mon fichier langage/french/main.php
Quoi je ne sait pas encore car j'ai juste mis une ancienne version & ça fonctionne. Je pense d'un oublie ou un ajout d'apostrophe ('), virgule, ...

Par contre ce qui est suspect c'est le fichier qui me donne une page blanche, il fonctionne en local(serveur) le module est accessible mais pas en distant ?

Conclusion la page blanche & la non accessibilité d'un module peut provenir d'un fichier de langage du à une faute de frappe !

Posté le : 24/01/2015 08:58

Version Bootstrap
4.5.3
Version font-awesome
5.15.1
Version Xoops
2.5.10
Partager Twitter Partagez cette article sur GG+
Re: Module Hacker par SQL Injections plus accessible
Semi pro
Inscrit: 19/08/2006 03:45
De Paris
Messages: 520
Re... je viens de comprendre que le module Protector avait bien fait son travail en bloquant l'injections SQL du au fait que ma requête était mal faite. La doc de PHP me dit qu'il faut que j'utilise ceci mysqli_real_escape_string pour éviter le problème mais vu que je suis un peu nullos & fatigué pouvez vous me donner la formule pour constituer ma requête avec mysqli_real_escape_string d'après les informations que je vous ai fournit dans mes post précédents comme ça je pourrais allez dormir un peu

Merci

Posté le : 24/01/2015 09:59

Version Bootstrap
4.5.3
Version font-awesome
5.15.1
Version Xoops
2.5.10
Partager Twitter Partagez cette article sur GG+
Re: Module Hacker par SQL Injections plus accessible
Régulier
Inscrit: 31/01/2008 01:30
Messages: 285
<?PHP
include 'header.php';

$sql "SELECT * FROM `prefix_xoops_test` WHERE `year` = '".mysql_real_escape_string($_GET['year'])."' AND `title` = '".mysql_real_escape_string($_GET['nom'])."' ORDER BY `prefix_xoops_test` .`title` ASC"

$result $xoopsDB -> query($sql);

include(
XOOPS_ROOT_PATH."/header.php");

While (list(
$lid$cid$title$year) = $xoopsDB->fetchRow($result)) {

Salut,

test ceci pour voir !!!!
la syntaxe est :
mysql_real_escape_string et non pas, mysqli_real_escape_string


Voir aussi : mysql_real_escape_string

Posté le : 24/01/2015 10:59
Partager Twitter Partagez cette article sur GG+
Re: Module Hacker par SQL Injections plus accessible
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
mysql_real_escape_string et mysqli_real_escape_string sont obsolètes (sans compter des failles de sécurité dans mysql_real_escape_string
Utilise plutôt filter_input comme ci-dessous :
<?PHP
include 'header.php';
$nom = (isset($_GET['nom'])) ? filter_input(INPUT_GET,'nom',FILTER_SANITIZE_STRING) : '';
$year = (isset($_GET['year'])) ? filter_input(INPUT_GET,'year',FILTER_SANITIZE_NUMBER_INT) : 0;
$req = ($year 0) ? ' AND `year`='.$year '';
$sql "SELECT * FROM `prefix_xoops_test` WHERE `title` = '".$nom."' ".$req." ORDER BY `prefix_xoops_test` .`title` ASC"

$result $xoopsDB -> query($sql);

include(
XOOPS_ROOT_PATH."/header.php");

While (list(
$lid$cid$title$year) = $xoopsDB->fetchRow($result)) {


PS : ta requête sql devrai se présenter comme ci-dessus. C'est à dire qu'il faut être sûr des variables qu'on injecte. Et Supprimer tout ce qui n'est pas utile, si pas d'année précisée, on ne met pas dans la requête une recherche dessus. Par contre si le champs année est obligatoire alors il faut bloquer l'exécution avant la requête (histoire de ne pas avoir de sollicitation de la BDD pour rien).

Posté le : 24/01/2015 13:00
Partager Twitter Partagez cette article sur GG+
Re: Module Hacker par SQL Injections plus accessible
Semi pro
Inscrit: 19/08/2006 03:45
De Paris
Messages: 520
Grand merci Montuy ça fonctionne, je vais étudier d'un peu plus votre code afin d'assimiler, pour ne pas faire un copier coller bêtement.

Si j'avais pris comme fonction mysqli_real_escape_string() c'est parce que dans wikipédia SQL Injection il me recommandais ça donc j'ai cherché dans la doc de PHP
& non pas mysql_real_escape_string car c'est devenus obsolète !

Wikipedia Citation :
Cette extension est obsolète depuis PHP 5.5.0, et sera supprimée dans le futur. À la place, les extensions MySQLi ou PDO_MySQL doivent être utilisées


Montuy je ne sait pas où vous avez appris, mais encore merci.

Montuy = 10
Doc PHP = 5
Wikipédia = 0

& DragonTribal merci quand même


Posté le : 24/01/2015 23:58

Version Bootstrap
4.5.3
Version font-awesome
5.15.1
Version Xoops
2.5.10
Partager Twitter Partagez cette article sur GG+
Re: Module Hacker par SQL Injections plus accessible
Régulier
Inscrit: 31/01/2008 01:30
Messages: 285
Citation :
nicemen a écrit :
mysql_real_escape_string car c'est devenus obsolète !


Merci pour l'infos, je ne savais pas...

Posté le : 25/01/2015 09:24
Partager Twitter Partagez cette article sur GG+
Re: Module Hacker par SQL Injections plus accessible
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
Citation :

Montuy je ne sait pas où vous avez appris, mais encore merci.


Apprit tout seul, je programme depuis l'age de mes 9 ans, sa va faire 31 ans cette année. Mais c'est surtout la fréquence, je passe mes journées à coder et pour rester à jour, ce métier nécessite une fréquente remise à niveau (un codeur est vite périmé si il ne se maintient pas à jour) et comme mon expertise ce porte sur la sécurité et l'optimisation, j'ai pas trop le choix (heureusement que c'est un plaisir de le faire)

Posté le : 25/01/2015 11:02
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

43 Personne(s) en ligne (23 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 43 | Plus ...