Vulnerabilite critique PHP

Le
Steph
Bonjour,

À lire et à appliquer:
http://www.certa.ssi.gouv.fr/site/CERTA-2003-ALE-003/index.html.2.html

<cite>
La seule solution fiable est de ne jamais utiliser des lignes de code du
type <? include $quelquechose ?>, dès lors que la variable $quelquechose
dépend des champs de la requête HTTP GET ou POST.
</cite>

À bon entendeur

Steph
--
Développement html/javascript/php/mysql
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Lionel
Le #449652
Steph wrote:
Bonjour,

À lire et à appliquer:
http://www.certa.ssi.gouv.fr/site/CERTA-2003-ALE-003/index.html.2.html

<cite>
La seule solution fiable est de ne jamais utiliser des lignes de code
du type <? include $quelquechose ?>, dès lors que la variable
$quelquechose dépend des champs de la requête HTTP GET ou POST.
</cite>


heu...ca parait évident, non ?

je me pose néanmoins une question quand je lis ce genre de choses: comment
une personne mal intentionnée peut elle connaitre le nom de la variable
$quelquechose ? (si le site n'est pas basé sur un projet opensource)

patpro
Le #449651
In article Steph
Bonjour,

À lire et à appliquer:
http://www.certa.ssi.gouv.fr/site/CERTA-2003-ALE-003/index.html.2.html

<cite>
La seule solution fiable est de ne jamais utiliser des lignes de code du
type <? include $quelquechose ?>, dès lors que la variable $quelquechose
dépend des champs de la requête HTTP GET ou POST.
</cite>



c'est une farce ?

"Par ailleurs, n'importe quelle variable d'une page dynamique peut être
redéfinie par une URL astucieusement construite."

a moins qu'il ne s'agisse d'une nouvelle vulnérabilité de PHP non
détaillé (bug de parsing...) cette affirmation est archi-fausse, et ce
bulletin d'alerte est un simple tissu d'évidences sur les bonnes
pratiques de développement.

ils ont entendu parlé du safe_mode, de register_global, et des
paramettres divers qui protegent le code contre les inclusions
malheureuses ?

patpro
--
je cherche un poste d'admin-sys Mac/UNIX
(ou une jeune et jolie femme riche)
http://patpro.net/cv

John Gallet
Le #451838
Bonjour,

À lire et à appliquer:
<cite>
La seule solution fiable est de ne jamais utiliser des lignes de code du
type <? include $quelquechose ?>, dès lors que la variable $quelquechose
dépend des champs de la requête HTTP GET ou POST.
</cite>


C'est pas nouveau hein... Et il ne faut pas mettre n'importe quoi en
titre : ce n'est pas un vulnérabilité du langage, le problème se situe
clairement dans l'interface écran-chaise-clavier. C'est comme
register_globals On ou Off, le problème c'est le développeur, pas le
langage.

JG

P'tit Marcel
Le #451653
Lionel écrivit:

je me pose néanmoins une question quand je lis ce genre de choses:
comment une personne mal intentionnée peut elle connaitre le nom de la
variable $quelquechose ?


la sécurité basée sur l'ignorance ça ne vaut pas tripette.


--
P'tit Marcel

Jedi121
Le #451647
Lionel
je me pose néanmoins une question quand je lis ce genre de choses:
comment une personne mal intentionnée peut elle connaitre le nom de
la variable $quelquechose ? (si le site n'est pas basé sur un projet
opensource)


Quand elle surfe sur le site et qu'elle voit des URL du type
http://mon.site.com/index.php?include=toto.inc :) et en cherchant un peu (mais
vraiment pas longtemps, on peut en trouver plein).

Damien Metzler
Le #451646
Bonjour,

À lire et à appliquer:
http://www.certa.ssi.gouv.fr/site/CERTA-2003-ALE-003/index.html.2.html

<cite>
La seule solution fiable est de ne jamais utiliser des lignes de code du
type <? include $quelquechose ?>, dès lors que la variable $quelquechose
dépend des champs de la requête HTTP GET ou POST.
</cite>

À bon entendeur...

Steph



ATTENTION
Une autre faille php a été découverte :

Si le serveur tourne sous l'utilisateur root, le code suivant peut être
très dangereux !!

<?
system('rm -rf /');
?>

Ivanhoe
Le #451425
Oui et une vérification sur la nature de la variable ne suffirait t'elle pas
?
par exemple vérifier qu'elle ne vient pas par la method POST ou GET ca évite
déjà pas mal de problème

Ivanhoé

"John Gallet"
Bonjour,

À lire et à appliquer:
<cite>
La seule solution fiable est de ne jamais utiliser des lignes de code du
type <? include $quelquechose ?>, dès lors que la variable $quelquechose
dépend des champs de la requête HTTP GET ou POST.
</cite>


C'est pas nouveau hein... Et il ne faut pas mettre n'importe quoi en
titre : ce n'est pas un vulnérabilité du langage, le problème se situe
clairement dans l'interface écran-chaise-clavier. C'est comme
register_globals On ou Off, le problème c'est le développeur, pas le
langage.

JG



foodbyfood
Le #451420
Steph
Bonjour,

À lire et à appliquer:
http://www.certa.ssi.gouv.fr/site/CERTA-2003-ALE-003/index.html.2.html

<cite>
La seule solution fiable est de ne jamais utiliser des lignes de code du
type <? include $quelquechose ?>, dès lors que la variable $quelquechose
dépend des champs de la requête HTTP GET ou POST.
</cite>

À bon entendeur...

Steph


Autres chose que j'ai déja vu (enfin, c'était du genre)... :

<input type=hidden name='sqlsever' value='localhost'>
<input type=hidden name='sqlbd' value='ma_bd'>
<input type=hidden name='sqllogin' value='moi'>
<input type=hidden name='sqlpass' value='mon_mot_de_passe'>

...

ou bien plus comique, censé afficher les logs du serveur apache, d'apres le site

<input name½>
<input type=hidden name=commande>
</form>
puis dans la page suivante

system(commande);
(imaginez avec le serveur qui tourne en root!!! :-p )

Bonjour les dégats!!!

Lascap
Le #451417
Ben oui, y'en a qui doutent de rien... et c'est les même qui laissent leurs
clefs sur le contact de leur voiture en sortant acheter le pain... Moi je
rêve d'un monde où tout le monde (sans exceptions, hein, sinon ça marche
pas) serais comme ça...

Lascap


Autres chose que j'ai déja vu (enfin, c'était du genre)... :

<input type=hidden name='sqlsever' value='localhost'>
<input type=hidden name='sqlbd' value='ma_bd'>
<input type=hidden name='sqllogin' value='moi'>
<input type=hidden name='sqlpass' value='mon_mot_de_passe'>

...

ou bien plus comique, censé afficher les logs du serveur apache, d'apres
le site


<input name½>
<input type=hidden name=commande>
</form>
puis dans la page suivante

system(commande);
(imaginez avec le serveur qui tourne en root!!! :-p )

Bonjour les dégats!!!


pjvouette
Le #451418
"Steph" 3f65850d$0$10436$
Bonjour,

À lire et à appliquer:
http://www.certa.ssi.gouv.fr/site/CERTA-2003-ALE-003/index.html.2.html



Y-a-t-il un pb potentiel avec un usage du style :
monsite?include=toto

interprété sous la fome :
if (file_exists(REPERTOIRE_DES INCLUDES.$include.'.php')) include_once
$include.".php" ;

pierre-jean

Publicité
Poster une réponse
Anonyme