Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Bonjour,
Le 05/02/2010 18:17, Olivier Masson a écrit :
J'ai toujours vérifié tout ce que je donnais comme arguments à mail(), ce qui me parait évident.
Pourtant, en critiquant cette absence de toute forme de vérification/filtrage, on vient de me répondre qu'il n'y avait aucun problème avec PHP5.
Est-ce vrai (notamment pour l'injection de headers) ?
Ça semble vrai pour les paramètres $to et $subject, puisque tous les caractères de contrôle sont remplacés par des espaces, sauf en ce qui concerne les « folding white spaces » qui ne posent aucun problème :
Mais il est bien évidemment impossible de supprimer les sauts de ligne dans le paramètre $additional_headers, puisque ce paramètre est déjà prévu pour recevoir plusieurs entêtes.
Donc ils font, sans rien faire sur $_POST : mail($maildest,$_POST['subject'],$_POST['message'],"From : ".$_POST['mail']."n MIME-Version: 1.0");
Horreur ! Malheur ! L'injection peut se faire via le paramètre $_POST['mail']. Qui plus est, ils DOIVENT supprimer l'espace avant MIME-Version, ils DOIVENT ajouter les entêtes Content-Type et Content-Transfer-Encoding, et ils DEVRAIENT retirer l'espace après From.
Cordialement, -- Olivier Miakinen
Bonjour,
Le 05/02/2010 18:17, Olivier Masson a écrit :
J'ai toujours vérifié tout ce que je donnais comme arguments à mail(),
ce qui me parait évident.
Pourtant, en critiquant cette absence de toute forme de
vérification/filtrage, on vient de me répondre qu'il n'y avait aucun
problème avec PHP5.
Est-ce vrai (notamment pour l'injection de headers) ?
Ça semble vrai pour les paramètres $to et $subject, puisque tous les
caractères de contrôle sont remplacés par des espaces, sauf en ce qui
concerne les « folding white spaces » qui ne posent aucun problème :
Mais il est bien évidemment impossible de supprimer les sauts de ligne
dans le paramètre $additional_headers, puisque ce paramètre est déjà
prévu pour recevoir plusieurs entêtes.
Donc ils font, sans rien faire sur $_POST :
mail($maildest,$_POST['subject'],$_POST['message'],"From :
".$_POST['mail']."n MIME-Version: 1.0");
Horreur ! Malheur ! L'injection peut se faire via le paramètre
$_POST['mail']. Qui plus est, ils DOIVENT supprimer l'espace avant
MIME-Version, ils DOIVENT ajouter les entêtes Content-Type et
Content-Transfer-Encoding, et ils DEVRAIENT retirer l'espace après From.
J'ai toujours vérifié tout ce que je donnais comme arguments à mail(), ce qui me parait évident.
Pourtant, en critiquant cette absence de toute forme de vérification/filtrage, on vient de me répondre qu'il n'y avait aucun problème avec PHP5.
Est-ce vrai (notamment pour l'injection de headers) ?
Ça semble vrai pour les paramètres $to et $subject, puisque tous les caractères de contrôle sont remplacés par des espaces, sauf en ce qui concerne les « folding white spaces » qui ne posent aucun problème :
Mais il est bien évidemment impossible de supprimer les sauts de ligne dans le paramètre $additional_headers, puisque ce paramètre est déjà prévu pour recevoir plusieurs entêtes.
Donc ils font, sans rien faire sur $_POST : mail($maildest,$_POST['subject'],$_POST['message'],"From : ".$_POST['mail']."n MIME-Version: 1.0");
Horreur ! Malheur ! L'injection peut se faire via le paramètre $_POST['mail']. Qui plus est, ils DOIVENT supprimer l'espace avant MIME-Version, ils DOIVENT ajouter les entêtes Content-Type et Content-Transfer-Encoding, et ils DEVRAIENT retirer l'espace après From.
Cordialement, -- Olivier Miakinen
Olivier Masson
Le 05/02/2010 18:50, Olivier Miakinen a écrit :
Ça semble vrai pour les paramètres $to et $subject, puisque tous les caractères de contrôle sont remplacés par des espaces, sauf en ce qui concerne les « folding white spaces » qui ne posent aucun problème :
Ok, merci.
Horreur ! Malheur ! L'injection peut se faire via le paramètre $_POST['mail']. Qui plus est, ils DOIVENT supprimer l'espace avant MIME-Version, ils DOIVENT ajouter les entêtes Content-Type et Content-Transfer-Encoding, et ils DEVRAIENT retirer l'espace après From.
Donc ça c'est toujours d'actualité. Je peux toujours balancer un Bcc. Et comme le Content-type n'est pas précisé, je (le méchant script kiddy) peux le faire moi-même en indiquant autre chose que du texte brut, etc. ?
Cordialement,
Rooh, tant de politesse n'est pas nécessaire avec moi :)
Le 05/02/2010 18:50, Olivier Miakinen a écrit :
Ça semble vrai pour les paramètres $to et $subject, puisque tous les
caractères de contrôle sont remplacés par des espaces, sauf en ce qui
concerne les « folding white spaces » qui ne posent aucun problème :
Ok, merci.
Horreur ! Malheur ! L'injection peut se faire via le paramètre
$_POST['mail']. Qui plus est, ils DOIVENT supprimer l'espace avant
MIME-Version, ils DOIVENT ajouter les entêtes Content-Type et
Content-Transfer-Encoding, et ils DEVRAIENT retirer l'espace après From.
Donc ça c'est toujours d'actualité.
Je peux toujours balancer un Bcc. Et comme le Content-type n'est pas
précisé, je (le méchant script kiddy) peux le faire moi-même en
indiquant autre chose que du texte brut, etc. ?
Cordialement,
Rooh, tant de politesse n'est pas nécessaire avec moi :)
Ça semble vrai pour les paramètres $to et $subject, puisque tous les caractères de contrôle sont remplacés par des espaces, sauf en ce qui concerne les « folding white spaces » qui ne posent aucun problème :
Ok, merci.
Horreur ! Malheur ! L'injection peut se faire via le paramètre $_POST['mail']. Qui plus est, ils DOIVENT supprimer l'espace avant MIME-Version, ils DOIVENT ajouter les entêtes Content-Type et Content-Transfer-Encoding, et ils DEVRAIENT retirer l'espace après From.
Donc ça c'est toujours d'actualité. Je peux toujours balancer un Bcc. Et comme le Content-type n'est pas précisé, je (le méchant script kiddy) peux le faire moi-même en indiquant autre chose que du texte brut, etc. ?
Cordialement,
Rooh, tant de politesse n'est pas nécessaire avec moi :)
Olivier Miakinen
Le 05/02/2010 21:07, Olivier Masson a écrit :
Horreur ! Malheur ! L'injection peut se faire via le paramètre $_POST['mail']. Qui plus est, ils DOIVENT supprimer l'espace avant MIME-Version, ils DOIVENT ajouter les entêtes Content-Type et Content-Transfer-Encoding, et ils DEVRAIENT retirer l'espace après From.
Donc ça c'est toujours d'actualité.
Oui.
Je peux toujours balancer un Bcc.
Voire quelques milliers de Bcc.
Et comme le Content-type n'est pas précisé, je (le méchant script kiddy) peux le faire moi-même en indiquant autre chose que du texte brut, etc. ?
Oui. Même s'il était précisé, si c'était au même endroit que le MIME-Version (donc après l'injection).
Qui plus est, tu peux même rajouter un contenu qui écrasera le vrai contenu passé dans $_POST['message'].
Simplement, sans cordialité excessive, -- Olivier Miakinen
Le 05/02/2010 21:07, Olivier Masson a écrit :
Horreur ! Malheur ! L'injection peut se faire via le paramètre
$_POST['mail']. Qui plus est, ils DOIVENT supprimer l'espace avant
MIME-Version, ils DOIVENT ajouter les entêtes Content-Type et
Content-Transfer-Encoding, et ils DEVRAIENT retirer l'espace après From.
Donc ça c'est toujours d'actualité.
Oui.
Je peux toujours balancer un Bcc.
Voire quelques milliers de Bcc.
Et comme le Content-type n'est pas
précisé, je (le méchant script kiddy) peux le faire moi-même en
indiquant autre chose que du texte brut, etc. ?
Oui. Même s'il était précisé, si c'était au même endroit que le
MIME-Version (donc après l'injection).
Qui plus est, tu peux même rajouter un contenu qui écrasera le vrai
contenu passé dans $_POST['message'].
Un commentaire dans la doc prétend que ça serait protégé en safe_mode :
<http://fr.php.net/manual/en/function.mail.php#94000>, néanmoins je ne
vois aucun code supprimant les doubles rn dans les headers, même dans
la version courante (PHP 6 trunk) :
<http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/mail.c?view=markup>.
Simplement, sans cordialité excessive,
--
Olivier Miakinen
Horreur ! Malheur ! L'injection peut se faire via le paramètre $_POST['mail']. Qui plus est, ils DOIVENT supprimer l'espace avant MIME-Version, ils DOIVENT ajouter les entêtes Content-Type et Content-Transfer-Encoding, et ils DEVRAIENT retirer l'espace après From.
Donc ça c'est toujours d'actualité.
Oui.
Je peux toujours balancer un Bcc.
Voire quelques milliers de Bcc.
Et comme le Content-type n'est pas précisé, je (le méchant script kiddy) peux le faire moi-même en indiquant autre chose que du texte brut, etc. ?
Oui. Même s'il était précisé, si c'était au même endroit que le MIME-Version (donc après l'injection).
Qui plus est, tu peux même rajouter un contenu qui écrasera le vrai contenu passé dans $_POST['message'].