
Bludit CMS バージョン 3.9.2 以前は、誤ったログインを 10 回以上試行したユーザーをブロックするためのアンチブルートフォース機構をバイパスできる脆弱性があります。
この脆弱性は Rastating によって発見されました。
可変の文字列(偽装された文字列)の X-Forwarded-For ヘッダー値を使用したログインリクエストは正常に処理され、失敗したログイン試行は偽装された文字列に対して記録されました。
上記のスクリプトは、その脆弱性を利用して anit-brute 機構を迂回します。
ログインページの本文には csrf トークンが含まれているため、認証情報を使用して POST リクエストを行うたびに、最後のレスポンスのソースから csrf トークンを取得する必要があります。
1 つの方法は、GET リクエストを実行し、csrf トークンを取得し、認証情報と取得したトークンで POST リクエストを実行し、パスワードが見つかるまで繰り返すことです。これはほとんどのスクリプトで見られる方法です。
もう 1 つの方法は、最後の POST リクエストのレスポンスから csrf トークンを取得する方法です。そのため、最初の 1 回だけ GET リクエストを行う必要があります。
2 つ目の方法は 1 つ目の方法よりもはるかに高速で、ブルートフォース攻撃のように多くのリクエストを必要とする場合、わずかな効率の向上が大きな効果を発揮します。
両方の方法を試したところ、2 つ目の方法では 1 分間に 63 語、1 つ目の方法ではわずか 19 語をテストできました。
python3 brute.py -u [url] -user [username] -w [pathToWordlist] [-t [使用するスレッド数]]
python3 brute.py -u https://192.168.10.13/ -user admin -w sysadmin -t 30
