par
chegmarco » 24 janv. 2021, 21:49
BONJOUR.
I - Je travaille sur la refonte d'un site fait en
mySQLi et j'ai d'abord, décidé de tester les failles de sécurité en injectant du javaScript
<script>alert("Test XSS")</script. comme ceci:
Code : Tout sélectionner
http://localhost/app/index.php?page=home<script>alert("Test XSS")</script>
Ça me retourne VRAIMENT un alert avec un Test XSS et un bouton Ok sur mon Navigateur Web Chrome. Ce qui prouve qu'elle est bel et bien vulnérable au XSS.
Alors que mon Fichier index.php contient le bout de Code qui appelle en get le Paramètre page:
Code : Tout sélectionner
<?php
$page = isset($_GET['page']) ? $_GET['page'] : 'home';
if(!file_exists($page.".php")){
include '404.html';
}else{
include $page.'.php';
}
?>
COMMENT DONC CORRIGER LA FAILLE DE SECURITE XSS DANS MON CODE PHP DE SORTE A CORRIGER CETTE FAILLE ???
II- TOUJOURS EN PHASE DE TEST DE LA MÊME APPLICATION PHP, j'ai injecté un
apostrophe (
') à la fin du lien
http://localhost/stamp/index.php?page=edit_staff&id=2' c'est à dire juste après le
id=2, j'ai ajouté un petit signe
' histoire de voire si ça pourrait me retourné une erreur SQL:
ET VOICI L'ERREUR QUE ÇA ME RETOURNE:
Code : Tout sélectionner
Fatal error: Uncaught Error: Call to a member function fetch_array() on boolean in C:\laragon\www\stamp\edit_staff.php:3 Stack trace: #0 C:\laragon\www\stamp\index.php(54): include() #1 {main} thrown in C:\laragon\www\stamp\edit_staff.php on line 3
ALORS QUE TOUTE LA REQUÊTE MySQLi qui traite le lien est le suivant:
Code : Tout sélectionner
<?php
include 'db_connect.php';
$qry = $conn->query("SELECT * FROM users where id = ".$_GET['id'])->fetch_array();
foreach($qry as $k => $v){
$$k = $v;
}
include 'new_user.php';
?>
COMMENT CORRIGER EGALEMENT CETTE FAILLE SQL DE SORTE A CE QU'ELLE N'APPARAISSENT PLUS ???
AIDEZ-MOI S'IL VOUS PLAÎT.
BONJOUR.
[B]I -[/B] Je travaille sur la refonte d'un site fait en [b]mySQLi[/b] et j'ai d'abord, décidé de tester les failles de sécurité en injectant du javaScript [b]<script>alert("Test XSS")</script[/b]. comme ceci:
[CODE]http://localhost/app/index.php?page=home<script>alert("Test XSS")</script>[/CODE]
[B]Ça me retourne VRAIMENT un alert avec un Test XSS et un bouton Ok sur mon Navigateur Web Chrome. Ce qui prouve qu'elle est bel et bien vulnérable au XSS.[/B]
[B]Alors que mon Fichier index.php contient le bout de Code qui appelle en get le Paramètre page:[/B]
[CODE]<?php
$page = isset($_GET['page']) ? $_GET['page'] : 'home';
if(!file_exists($page.".php")){
include '404.html';
}else{
include $page.'.php';
}
?>[/CODE]
[B][I]COMMENT DONC CORRIGER LA FAILLE DE SECURITE XSS DANS MON CODE PHP DE SORTE A CORRIGER CETTE FAILLE ???[/I][/B]
[B]II-[/B] TOUJOURS EN PHASE DE TEST DE LA MÊME APPLICATION PHP, j'ai injecté un [I]apostrophe[/I] ([B]'[/B]) à la fin du lien [b]http://localhost/stamp/index.php?page=edit_staff&id=2'[/b] c'est à dire juste après le [b]id=2[/b], j'ai ajouté un petit signe [b]'[/b] histoire de voire si ça pourrait me retourné une erreur SQL:
[B]ET VOICI L'ERREUR QUE ÇA ME RETOURNE:[/B]
[CODE]Fatal error: Uncaught Error: Call to a member function fetch_array() on boolean in C:\laragon\www\stamp\edit_staff.php:3 Stack trace: #0 C:\laragon\www\stamp\index.php(54): include() #1 {main} thrown in C:\laragon\www\stamp\edit_staff.php on line 3[/CODE]
[B]ALORS QUE TOUTE LA REQUÊTE MySQLi qui traite le lien est le suivant:[/B]
[CODE]<?php
include 'db_connect.php';
$qry = $conn->query("SELECT * FROM users where id = ".$_GET['id'])->fetch_array();
foreach($qry as $k => $v){
$$k = $v;
}
include 'new_user.php';
?>
[/CODE]
[B][I]COMMENT CORRIGER EGALEMENT CETTE FAILLE SQL DE SORTE A CE QU'ELLE N'APPARAISSENT PLUS ???[/I][/B]
[B]AIDEZ-MOI S'IL VOUS PLAÎT.[/B]