0

最近作ったサイトがハッキングされて改ざんされました。彼らは、ウェブサイトを管理するために自作の CMS に入りました。彼らは私のユーザー名とハッシュ化されたパスワードを取得し、Facebook に投稿しました。

私の質問は、ハッシュ化されたパスワードを使用して、どのようにサイトにアクセスしたのでしょうか? 彼らは最初にそれを解読する必要はありませんか? Facebookアカウントにパスワードの復号化されたバージョンを投稿しなかったのはなぜですか(人間が読めるパスワードが表示された他の多くのサイトがそこに投稿されているのを見たとき)。

これは私の認証コードです:

SELECT * FROM Admin WHERE Username = '$_POST[Username]' // This finds the username

if ($row[Password] == md5($_POST[Password])) {
    Save Sessions here
}

これが脆弱性であった可能性があるため、SQL クエリに mysql_real_escape_string を追加しました。

何かご意見は?

4

3 に答える 3

2
SELECT * FROM Admin WHERE Username = '$_POST[Username]'

この ^ が実際の select ステートメントである場合、それは SQL インジェクションを叫びます。これほど簡単なことはありません。彼らがあなたのハッシュを取得したことにあまりショックを受けていないようですが、あなたの質問の根本は、彼らがハッシュだけを使用してあなたのサイトにどのようにアクセスしたかということだと思います.

ここにはいくつかのオプションがあります。

  • レインボーテーブル
  • データベースに自分用の新しいユーザーを作成する(SQLインジェクション、覚えておいてください)
  • ハッシュの変更 (SQL インジェクション)
  • 単純なオフライン ブルート フォース攻撃または辞書攻撃
  • 悪意のあるコードの書き換え (事後的にコードを熟読しているため、可能性は低い)
  • おそらく、XSS やセッション ハイジャックに関連する他の可能性があります (入力データをサニタイズしますか? セッションを保護しますか?)

好きなのを選びな。ハッカーが SQL インジェクションのような優れた足がかりを得ると、多くの新しい攻撃ベクトルが開かれます。

また、私は疑問に思う必要があります.このハッカーは、神の緑の地球で何を考えて、自分たちの不幸をFacebookに投稿しましたか? これは友達か何かですか?もしそうなら、彼らがどのようにそれをしたかを聞いてみるべきかもしれません。そうでないなら... 私は本当にこれを言う必要がありますか... あなたはあなたの男/ギャルを持っています-正義の時間.

于 2012-11-29T02:28:56.110 に答える
1

これは実際のパスワードとは何の関係もありません。アクセス権を取得するために悪用できるのは、SQLインジェクションの脆弱性だけです。その方法をお見せします。

Adminテーブルに2つの列しかない場合、必要なのは、ユーザー名と、提供されたパスワードに適合するパスワードハッシュの両方を挿入するUNIONだけです。

$_POST['Username'] = "' UNION SELECT 'Admin','5ebe2294ecd0e0f08eab7690d2a6ee69"
$_POST['Password'] = "secret"

ここで提供されるユーザー名は、インジェクションが発生するコンテキストの条件に完全に適合するように作成されています。これは結果のクエリになります:

SELECT * FROM Admin WHERE Username = '' UNION SELECT 'Admin','5ebe2294ecd0e0f08eab7690d2a6ee69'

Admin結果のセットは、挿入されたユーザー名とMD5ハッシュを持つ単一のレコードになります5ebe2294ecd0e0f08eab7690d2a6ee69

したがって、SQLインジェクションから保護されていることを確認してください。

于 2012-11-29T05:58:20.923 に答える
0

問題は、衝突が発生しやすく、廃止された md5 でパスワードをハッシュしたことです。ハッシュ化されたパスワードを知っていれば、実際のパスワードではなくても、同じハッシュを生成する文字列を見つけることができます。

SHA やソルトなどの強力なハッシュ アルゴリズムを使用して、レインボー アタックを防ぎます。

于 2012-11-29T02:23:57.137 に答える