Попытка создать форму, уязвимую для внедрения заголовка почты - PullRequest
0 голосов
/ 09 марта 2020

Застрял в этом на несколько дней. Я пытаюсь воспроизвести пример внедрения заголовка письма (http://www.phpsecure.info/v2/article/MailHeadersInject.en.php). Сообщение по этому вопросу уже существует ( вставка заголовка сообщения электронной почты - пример не работает ), но у него не было никакого решения. Я получил основную контактную форму c, используя метод POST с тремя полями (От, Тема и Сообщение), которые затем используются для отправки почты. Мне нужно, чтобы пользователь мог вводить символы Unicode / Hexa в поля.

Например, если пользователь вводит address%40gmail%2ecom Я хочу, чтобы выходные данные в полезной нагрузке SMTP были From: address@gmail.com

Если я жестко кодирую $from = "address%40gmail%2ecom", то вывод будет желаемым.

Однако, если я использую пользовательский ввод в поле 'from' формы ie $from = $_POST['from'], вывод, который я получаю при проверке журнал отладки моего SMTP-клиента From: address%40gmail%2ecom. Я что-то не так с кодировкой или активирована какая-то защита, от которой я должен избавиться?

Если это актуально, я использую WAMPserver и PHP 7.1.

Мой код:

<html>
    <head>
        <meta http-equiv="content-type" content="text/html" />
        <title>Vulnerable contact page</title>
        <link rel="stylesheet" href="email.css"/>
    </head>

    <body>
        <form method="POST" action="">
            <fieldset>
                <legend>Send us a mail</legend>

                <label for="sender">From : </label>
                <input type="text" name="from" id="sender">
                </br>
                <label for="subject">Subject : </label>
                <input type="text" name="subject" id="subject">
                </br>
                <label for="message">Your message : </label>
                <input type="text" name="message" id="message">
            </fieldset>
            <p>
                <input type="submit" value="Send"/>
                <input type="reset" value="Cancel"/>
            </p>
        </form>

        <?php
        if(isset($_POST['from'])) {
            $to = "*********@gmail.com";
            $from = $_POST['from'];
            $subject = $_POST['subject'];
            $message = $_POST['message'];
            $headers = "From: $from\n";

            mail($to, $subject, $message, $headers);
        }

         ?>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...