私のクライアントのWebサイトは、彼/彼女がデータベースにアクセスできるようになったと主張している人によって危険にさらされました。この人が「私に連絡すれば、穴がどこにあるか教えてくれます」というメールを送信したという事実から、私はアクセスが読み取り専用に制限されることを望みます。
アクセスログを検査したところ、悪意のあるプローブを通過させるスクリプトとエスケープされていないGETリクエスト変数が見つかりました
攻撃はかなり普通に始まりました:
xxx.xxx.xx.xxx - - [24/Jun/2017:17:29:02 -0600] "GET /x.x?x=2 HTTP/1.1" 200 13785 "Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)"
xxx.xxx.xx.xxx - - [24/Jun/2017:17:29:02 -0600] "GET /x.x?x=2'A=0 HTTP/1.1" 200 181 "Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)"
xxx.xxx.xx.xxx - - [24/Jun/2017:17:29:03 -0600] "GET /x.x?region='0=A HTTP/1.1" 200 181 "Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)"
次に、それらのようなクエリが続きます
xxx.xxx.xx.xxx - - [24/Jun/2017:17:29:03 -0600] "GET /x.php?x=(%2f**%2fsElEcT+1+%2f**%2ffRoM(%2f**%2fsElEcT+count(*),%2f**%2fcOnCaT((%2f**%2fsElEcT(%2f**%2fsElEcT+%2f**%2fcOnCaT(0x217e21,%2f**%2fvErSiOn(),0x217e21))+%2f**%2ffRoM+information_schema.%2f**%2ftAbLeS+%2f**%2flImIt+0,1),floor(Rand(0)*2))x+%2f**%2ffRoM+information_schema.%2f**%2ftAbLeS+%2f**%2fgRoUp%2f**%2fbY+x)a) HTTP/1.1" 200 55 "http://x/x.php?x=(%2f**%2fsElEcT+1+%2f**%2ffRoM(%2f**%2fsElEcT+count(*),%2f**%2fcOnCaT((%2f**%2fsElEcT(%2f**%2fsElEcT+%2f**%2fcOnCaT(0x217e21,%2f**%2fvErSiOn(),0x217e21))+%2f**%2ffRoM+information_schema.%2f**%2ftAbLeS+%2f**%2flImIt+0,1),floor(Rand(0)*2))x+%2f**%2ffRoM+information_schema.%2f**%2ftAbLeS+%2f**%2fgRoUp%2f**%2fbY+x)a)" "Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-PT; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)"
私が見ることができるものから、その人はデータベースとそのコンテンツがどのように見えるかについてかなり良い考えを得ました。
保護されていない入力が検出された後、これらのプローブを生成するためにどのツールが使用されているかを知りたいので、攻撃者が自分で実行して攻撃者がアクセスできた可能性のある全範囲を発見できます。
ここでは、信頼性の高い入力サニタイゼーションのないPHP/MySQLレガシーアプリについて説明しているので、何が問題かを確認する最善の方法は、自分でセキュリティスキャナーを実行することです。
どうすれば解決できますか?
ソリューション
そのWebサイトをスキャンしてさらに問題を探し、それらを悪用して修正するために必要なツールはsqlmapでした。それが将来誰かに役立つことを願っています。
そのWebサイトをスキャンしてさらに問題を探し、それらを悪用して修正するために必要なツールはsqlmapでした。それが将来誰かに役立つことを願っています。
どのツールを使用したかは関係ありません。
使用されたツールを知っていても、必ずしもそのツールが悪用可能なすべてのものを悪用できるとは限りません。
アプリがSQLインジェクションに対して脆弱である場合、適度に熟練した攻撃者でさえ、Webサーバーがデータベースにアクセスするために使用しているデータベース資格情報を使用して実行できることを実行するために、おそらくツールはまったく必要ありません。
SQLインジェクションに対する既知の脆弱性があるアプリケーションがあります。修正されるまでオフラインにする必要があります。ツールが正常に悪用されたと思われるメカニズムを示すログがすでにあるため、x.php
またはその依存関係の1つに、少なくとも1つの脆弱性がどこにあるかをすでに知っています。ログに記録されたリクエストをcurl
で単純に再生することもできます。
ツールはHavij Proまたは Jsql だと思います
SQLiエクスプロイトの一部は手動で作成して解決する必要があるため、ファジングツールが役に立たない場合もありますが、これらのツールを使用してコードを確認することをお勧めします。