web-dev-qa-db-ja.com

これはSQLインジェクションの試みですか?

エラーログを調べると、URLが含まれているWebアプリへの多くのリクエストが見つかりました。

/if(now()=sysdate(),sleep(10),0)/*'XOR(if(now()=sysdate(),sleep(10),0))OR'"XOR(if(now()=sysdate(),sleep(10),0))OR"*/

これは、PHPで開発されたWebサイトへの攻撃の一部である可能性があることを示しています。また、ORMを使用してデータベースにクエリを送信しています。

これはSQLインジェクションの試みですか?

47
Tony

これはおそらくブラインドSQLインジェクションであり、サーバーが要求に応答するために指定された時間以上かかるかどうかをチェックすることにより、SQLインジェクションに対して脆弱かどうかをテストします。これは実際にデータ編集を行ったり、何かを公開したりするものではありません。それはあなたが脆弱かどうかをチェックしているだけです。

ifおよびsleep構文はそのdbエンジンの構文であるため、これは特にMySQLデータベースを対象としていることにも注意する必要があります。

攻撃が隔離されている場合、大規模な攻撃を準備している自動化された脆弱性スキャナーによって「プローブ」された可能性があるため、Webアプリケーションに脆弱性がない場合、心配する必要はありません。

ただし、さまざまな攻撃パターンでより奇妙な要求を受け取った場合は、それらの攻撃者の特定の標的になる可能性があり、成功する可能性のあるすべての攻撃を防ぐためのアクションを実行する必要があります。

詳細については、 時間ベースのブラインドSQLインジェクション攻撃 を参照してください。

62
BgrWorker

ここに投稿したデータは、攻撃者がブラインドSQLインジェクションの問題を見つけるために使用する可能性のあるデータに似ているようです。

これらの問題を見つけるための一般的な手法は、条件付きテストを行うことです。条件テストを行うと、trueの場合、タイムアウトまたはスリープ機能が実行されます。攻撃者は、サイトが応答するのにかかる時間を観察することで、成功したかどうかを知ることができます(サイトがまったく応答しないか、別のサイトへの応答が遅い場合、この手法は少しエラーが発生しやすいことに注意する価値がありますが、無関係、理由)

あなたが言及したコードは、sleepステートメントが後に続くその種の論理テストを行っているようであり、SQLインジェクションを悪用しようとする試みである可能性があります。攻撃者の種類によっては、ヒットを探してこれらを広範囲に爆破するため、あまり標的を絞った攻撃ではないため、サイトで機能しない可能性があります。

10
Rory McCune