0

私はphpを知らないと言うことから始めましょう。私はバックエンドプログラマーではなく、フロントエンドのみを行っています。私の婚約者はMinecraftサーバーを実行しており、彼が支援できるように彼のWebサイトを設定することに同意しました。彼は、phpbbフォーラムと連携するいくつかのものをphpに追加するように要求しました。私はこれを行う方法を研究しているときに見つけて、これらをWebサイトに暗示し、それからそれが立ち上げられました。しかし、彼のWebサイトはハッキングされ続けています。

初めてハッキングされたときは、すべてのftpアカウントを削除し、1つのパスワードで1つのアカウントを保持しました。このアカウントのパスワードを変更しました作成しなかったすべてのファイルとフォルダーを削除し、サーバー上のファイルをローカルのもので上書きしました

今朝、2回目のハッキングが行われ、さまざまなフォルダやサブフォルダの下に新しいftpアカウントと数千のファイルがあることに気づきました。私たちはそれについてホストに尋ねました、そして彼らはそれがphp/scriptの脆弱性でなければならないと言いました。どうやって確保すればいいのかわからない。この脆弱性がどこにあるのかわかりません。私はそれを保護する方法を探してしばらく過ごし、phpフィルターについて読んでいますが、それらを実装する方法が正確にわかりませんか?

これがサイト上のphpコードの唯一のスニペットです:これは基本的にユーザーのためのフォーラムに接続しているだけです:

    <?php
    define('IN_PHPBB', true);
    $phpbb_root_path = '../forums/';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);
    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();
    ?>

    <?php if($user->data['is_registered'])
    {
        //User is already logged in
        echo '<div id="login">Welcome, ' . $user->data['username'] . ' ';
        $l_message_new = ($user->data['user_new_privmsg'] == 1) ? $user->lang['NEW_PM'] : $user->lang['NEW_PMS'];
        $l_privmsgs_text = sprintf($l_message_new, $user->data['user_new_privmsg']);
        echo '<span><a href="' . append_sid("{$phpbb_root_path}ucp.$phpEx",         'i=pm&amp;folder=inbox') . '">' . $l_privmsgs_text . '</a></span></div><div         id="loginlayer"></div>';
        }
    else
    {
            echo ' ';
    }
         //user is not logged in  
    ?>

次に、フォームに入力すると、フォーラムにスレッドが作成されます。

    <?php
    /**
    *
    * @package phpBB3
    * @version $Id: twitpost.php,v1.0.0 2010/05/31 2:43 PM PPCW2 Exp $
    * @license http://opensource.org/licenses/gpl-license.php GNU Public License
    *
    */

    /**
    * @ignore
    */

    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../forums/';
    $phpbb_admin_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../forums/';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);
    include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
    include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
    include($phpbb_root_path . 'includes/message_parser.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup('common');


    $tmsg = request_var('tmsg', ''); // getting data from the submitted HTML form (name of the feild should be tmsg)
    $tt = request_var('tt', ''); // getting data from the submitted HTML form (name of the feild should be tt)
    $un = request_var('un', ''); // getting data from the submitted HTML form (name of the feild should be un)
    $username = "$un";
    $message = "[b]Username[/b]: " . $username . "\n" . "[b]Details[/b]: " . $tmsg . "\n";
    $forum = 14; //change to your forum id here

    $time = time();
    $rawsubject = "$tt";
    $my_subject   = utf8_normalize_nfc($rawsubject, '', true);
    $my_text   = utf8_normalize_nfc($message, '', true);

    // variables to hold the parameters for submit_post
    $poll = $uid = $bitfield = $options = '';

    generate_text_for_storage($my_subject, $uid, $bitfield, $options, false, false, false);
    generate_text_for_storage($my_text, $uid, $bitfield, $options, true, true, true);

    $data = array(
           'forum_id'      => $forum,
           'icon_id'      => false,

           'enable_bbcode'      => true,
           'enable_smilies'   => true,
           'enable_urls'      => true,
           'enable_sig'      => true,

           'message'      => $my_text,
           'message_md5'   => md5($my_text),

           'bbcode_bitfield'   => $bitfield,
           'bbcode_uid'      => $uid,

           'post_edit_locked'   => 0,
           'topic_title'      => $my_subject,
           'notify_set'      => false,
           'notify'         => false,
           'post_time'       => 0,
           'forum_name'      => '',
           'enable_indexing'   => true,
    );

    submit_post('post', $my_subject, $user->data['username'], POST_NORMAL, $poll, $data);
    $redirect_url = append_sid("{$phpbb_root_path}/viewforum.$phpEx?f=$forum", false, true, $user->session_id);
    meta_refresh(2, $redirect_url); 
    trigger_error('Issue Posted' . '<br /><br />Taking you to the issues forum ' . sprintf('<a href="' . $redirect_url . '">', '</a>'));
    ?>

そして、ログインフォーム:

    <?php if($user->data['is_registered'])
    {
        //User is already logged in
        echo '<div id="loginarea" class="bluebox">
        <h1>Log In</h1>You are already logged in!</div>';
        }
    else
    {
            echo '<div id="loginarea" class="bluebox">
        <h1>Log In</h1><form method="POST" action="/forums/ucp.php?mode=login">
            <p><span>Enter your Username:</span><br>
    <input type="text" name="username"><br>

            <span>Password:</span><br>
    <input type="password" name="password"><br>

    <input type="submit" class="btns donatebtn" value="Submit" name="login">
    <input type="hidden" name="redirect" value="../index.php">
    </form></div>';
    }
         //user is not logged in  
    ?>

以上です!助言がありますか?どうもありがとう

4

2 に答える 2

1

誰かがサーバーにログインしてFTPアカウントを作成しているのなら、なぜPHPを見ているのでしょうか。サーバーにログインできる場合は、サーバーのユーザー名/パスワードが簡単である必要があります。そうでない場合は、他の場所で重大なセキュリティ障害が発生します。

誰かがサーバーにログインする方法を確認する必要があります。

于 2013-03-09T20:34:23.053 に答える
0

これはおそらくServerfaultでよりよく尋ねられると思います-侵害されたサーバーに対処する方法については、すでにそこに優れた回答があります。主な推奨事項の1つは、システムを再構築することです。アカウントを削除したり、パスワードを変更したりするだけではいけません。そもそも、アカウントがどのように侵入したのかわからないため、パスワードを変更しても、それが再び発生するのを防ぐことはできないでしょう。実際のエクスプロイト。読む価値は十分にあります。

https://serverfault.com/questions/218005/how-do-i-deal-with-a-compromised-server/218011#218011

于 2013-03-09T21:24:52.200 に答える