PHP
Identifier les entrées utilisateur
$_GET
$HTTP_GET_VARS
Contient les paramĂštres envoyĂ©s dans une requĂȘte GET.
$_POST
$HTTP_POST_VARS
Contient les paramĂštres envoyĂ©s dans une requĂȘte POST.
$_COOKIE
$HTTP_COOKIE_VARS
Contient les cookies envoyĂ©s dans la requĂȘte.
$_REQUEST
Contient le contenu des variables précédentes.
$_FILES
$HTTP_POST_FILES
Contient les fichiers tĂ©lĂ©chargĂ©s dans la requĂȘte.
$_SERVER[âREQUEST_METHODâ]
Contient les mĂ©thodes utilisĂ©es dans la requĂȘte.
$_SERVER[âQUERY_STRINGâ]
Contient la chaĂźne de caractĂšres complĂ©te envoyĂ© dans la requĂȘte.
$_SERVER[âREQUEST_URIâ]
Contient l'url complĂ©te contenu dans la requĂȘte.
$_SERVER[âHTTP_ACCEPTâ]
Contenu du header Accept: de la raquĂȘte
$_SERVER[âHTTP_ACCEPT_CHARSETâ]
Contenu du header Accept-Charset: de la raquĂȘte
$SERVER[âHTTP_ACCEPT_ENCODINGâ]
"" "" Accept-Encoding: "" ""
$SERVER[âHTTP_ACCEPT_LANGUAGEâ]
"" "" Accept-Language: "" ""
$_SERVER[âHTTP_CONNECTIONâ]
"" "" Connection: "" ""
$_SERVER[âHTTP_HOSTâ]
"" "" Host: "" ""
$_SERVER[âHTTP_REFERERâ]
"" "" Referer: "" ""
$_SERVER[âHTTP_USER_AGENTâ]
"" "" User-Agent: "" ""
$SERVER[âHTTP_FOOâ]
Contenu d'une en-tĂȘte HTTP custom (foo peut ĂȘtre remplacĂ© par n'importe quel nom d'en-tĂȘte.
$_SERVER[âPHP_SELFâ]
Contient le nom du script en cours d'execution. Bien que le nom du script en lui mĂȘme soit hors de portĂ© de l'attaquant, il existe des cas dans lesquels cette variable peut ĂȘtre exploitable. Exemple de XSS: <form action=â<?= $_SERVER[âPHP_SELFâ] ?>â> Exploitation: /search.php/â><script>
Session
$_SESSION
Contient les informations de session de l'utilisateur.
$HTTP_SESSION_VARS
"" "" si register_global est actif.
Path traversal / LFI
fopen
readfile
file
fpassthru
gzopen
gzfile
gzpassthru
readgzfile
copy
rename
rmdir
mkdir
unlink
file_get_contents
file_put_contents
parse_ini_file
dir
symlink
Inclusion et evaluation de scripts PHP:
include
include_once
require
require_once
virtual
SQLi
mysql_query()
mysql_db_query()
mysql_unbuffered_query()
pg_execute()
pg_query()
pg_query_params()
pg_prepare()
pg_send_execute()
pg_send_query()
pg_send_query_params()
pg_send_prepare()
mssql_execute()
mssql_query()
odbc_exec()
odbc_execute()
odbc_do()
odbc_prepare()
PrĂ©paration de requĂȘtes:
mysqli->prepare
stmt->prepare
stmt->bind_param
stmt->execute
odbc_prepare
Execution de code dynamique
eval
call_user_func
call_user_func_array
call_user_method
call_user_method_array
create_function
OS injection
exec
execve
passthru
popen
proc_open
shell_exec
pcntl_exec
system
operateur (`)
Open redirect
http_redirect
header
HttpMessage::setResponseCode
HttpMessage::setHeaders
Sockets
socket_create
socket_connect
socket_write
socket_send
socket_recv
fsockopen
pfsockopen
XSS
Absence des fonctions:
htmlspecialchars()
htmlentities()
urlencode()
Chercher des entrées avec les commandes suivantes:
print
echo
<?= <expression> ?>
Misc
Variable non initialisée
En PHP, il est possible d'utiliser des variables sans les avoir initialisées préalablement ce qui peut parfois entrainer des business logic flaw.
Exemple:
<?php
if (authenticated_user())
{
$authorized = true;
}
if ($authorized)
{
include "/highly/sensitive/data.php";
}
?>
Ce code contient ainsi une vulnĂ©rabilitĂ© permettant de contourner le contrĂŽle d'accĂšs au fichier data.php. Les attaquants peuvent simplement ajouter le paramĂštre "authorized=" Ă la requĂȘte ou dans un cookie. PHP crĂ©e une variable globale nommĂ©e $authorized et la dĂ©finit Ă la valeur 1. Ensuite, le code Ă©choue la premiĂšre instruction if, mais la deuxiĂšme instruction rĂ©ussit et les donnĂ©es secrĂštes sont affichĂ©es.
magic_quotes
Un mĂ©canisme de sĂ©curitĂ© global appelĂ© magic_quotes tente de freiner les attaques par injection de mĂ©tacaractĂšres. L'option de configuration magic_quotes_gpc (gpc signifie "get, post et cookie") active le Ă©chape les mĂ©tacaractĂšres dans toutes les donnĂ©es GET, POST et cookie. Cela signifie que chaque guillemet, guillemet double, barre oblique inverse et caractĂšre NULL est automatiquement Ă©chappĂ© avec un caractĂšre barre oblique inverse. Cette option est activĂ©e par dĂ©faut Ă l'inverse de l'option magic_quotes_runtime dĂ©sactivĂ©e par dĂ©faut. magic_quotes_runtime fait de mĂȘme en Ă©chappant les donnĂ©es gĂ©nĂ©rĂ©es Ă l'exĂ©cution Ă partir de sources externes, y compris les bases de donnĂ©es et le systĂšme d'exploitation.
Il arrive que des développeurs désactives volontairement magic_quotes pour certaines raisons pouvant ainsi rendre l'application vulnérables aux injections de code.
Option de fichier .inc
Placer les fichiers d'en-tĂȘte et de structure dans les fichiers .inc est pratique courante. Une mauvaise configuration courante est que le serveur Web n'a pas le bon gestionnaire de fichiers mappĂ© pour l'extension .inc. Demander le fichier d'inclusion vide ainsi directement son code source car il est traitĂ© comme un fichier texte ou HTML.
Autres Mauvaises pratiques
allow_url_fopen
Doit ĂȘtre dĂ©sactivĂ©
allow_url_include
Doit ĂȘtre dĂ©sactivĂ©
display_errors
Doit ĂȘtre dĂ©sactivĂ©
file_uploads
Doit ĂȘtre dĂ©sactivĂ©
upload_tmp_dir
Si utilisé, doit pointer vers un répertoire qui n'est pas accessible aux utilisateurs
DerniĂšre mise Ă jour
Cet article vous a-t-il été utile ?