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:
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