2016-08-30 16 views
0

フォーラムに登録しました。通常のユーザーとして使用していました。ある日私のパスワードが盗まれ、その瞬間に私はそれがどのように行われたのか分からなかった。私は普通のブラウザの代わりにカールを使っていましたが、私はユーザー名とパスワードを持っていました!どうやって?

突然、私はcurl -b "cookies" --data "data"を使ってPOSTしようとしていましたが、私がPOSTを送信したときにユーザー名、パスワード、電子メール、そしてIPさえも端末の出力にあったことが分かりました。私は彼のページに投稿していたその特定のユーザーであり、私は驚いた!

私は何が起こっているのか理解していませんでした!なぜそれが起こったのですか?それはいつもですか?

+1

それがシンプルである場合には、認証方法によって異なります。 'ます。http://ログイン:あなたの-url' @パスワードウェブは、ログインフォームを使用している場合、それは少し違うことでしょう。 –

+0

ログインフォームを使用します。私がカールを使用したとき、私は自分のユーザー名とパスワードでログインしていなかったので、ブラウザにあったクッキーを使っただけです。あなたが使用する場合@DavidPérezCabrera – user37421

+0

@ user37421 'curl'、クッキーがブラウザから取られたが、サーバーに保存されたファイル... – Legionar

答えて

1

これはSQL injectionの症状である可能性があります。

は、我々は(特にcontentフィールドを含む)とcommentsテーブル(usernamepasswordemail、および他の中last_ipフィールドを含む)usersテーブルがあるとします。

POST /blog/comment HTTP/1.1 
(some headers here) 
post_id=42&comment=Thanks 

サーバー、データベースにこのコメントを挿入しますが、パラメータを含めることが安全でないことがあります:ユーザーの投稿、彼らが実際にこのように見えるかもしれHTTPリクエストを送信したコメントが

INSERT INTO comments (content) VALUES (SELECT GROUP_CONCAT(CONCAT(username, ',', password, ',', email, ',', last_ip) separator ';') FROM users) 

// $comment is straight from the HTTP request 
mysqli('INSERT INTO comments (content) VALUES (' . $comment . ');'); 

次のSQLクエリの結果を慎重に細工されたコメントを送信することが可能です210

これは基本的に、usersテーブルの内容をブログのコメントとしてダンプし、フォーラムでうれしく表示されます。少しsneakierバリアントは、Webブラウザが非表示になりますが、curlがないことをHTMLコメントにそれを回すために<!---->で、このダンプを取り囲むようになりますので

もちろん、これはあまりにも明らかであろう。

+0

@Legionarが、私はちょうどカール-bを使用したことをしませんでした「クッキー=テキスト」--data「コンテンツ=テキスト&postid =番号」 – user37421

+0

YOUはしませんでしたが、あなたは戻って投稿ページを持って、カールはそれを表示します生の形態。 –

+0

なので、ページソースにパスワードが表示されるはずですか? – user37421