Shikata Ga Nai

Private? There is no such things.

OTP Bypass - Developer’s Checkを訳してみた

Hello there, ('ω')ノ

 

OTPバイパスを。

 

脆弱性:

 OTPバイパス

 

記事:

 https://shahjerry33.medium.com/otp-bypass-developers-check-5786885d55c6

 

概要 :

OTPは、1回のログイン試行に使用するために自動的に生成される。

文字または数字の文字列で。

OTP、完全なワンタイムパスワードは、SMSまたはプッシュメッセージングを介して。

ユーザの電話に送信でき、Webベースのサービス、プライベート資格情報、および。

データを保護するために使用されて。

 

今回、OTPのいくつかのバイパスをチェックしていると。

アプリケーションのコードといくつかのボタンを確認しているときに見つけたので。

これをDeveloper’s Checkと呼ぶことに。

ここでの間違いは、アプリケーションがクライアント側でOTPチェックしていて。

簡単に識別できるので、誰でも簡単にOTPをバイパスできて。

 

この脆弱性を見つける方法は下記のとおりで。

1.ターゲットのWebサイトに移動して。

 

f:id:ThisIsOne:20220115222631p:plain

 

2.ここで登録するオプションがあり。

 ログイン用のOTPが送信されるとOTPを受信して。

 

f:id:ThisIsOne:20220115222652p:plain

 

3.[Continue]ボタンを右クリックし、要素の検査をクリックして。

 OTPチェックを検証するいくつかの機能をチェックして。

f:id:ThisIsOne:20220115222711p:plain

 

4.以下のスクリーンショットで、それらが「checkOTP(event)」と呼ばれる。

 関数であることがわかって。

f:id:ThisIsOne:20220115222731p:plain

 

5.矢印をクリックして、ブラウザのコンソールにイベントを入力するだけで。

 

f:id:ThisIsOne:20220115222756p:plain

 

6.矢印をクリックすると、デバッガでファイルが開き。

 モバイルに送信されたOTPが表示されて。

f:id:ThisIsOne:20220115222815p:plain

 

論理コード:

<script type=’text/javascript’>
function checkOTP(e)
{
 if (document.getElementById(“txtOtp”).value == 8951)
 {
  var formSignUp = document.getElementById(“formSignUp”);
  formSignUp.submit();
 }
 else
 {
  var divWrongOTP = document.getElementById(‘divWrongOTP’);
  divWrongOTP.style.display = ‘inline’;
  e.preventDefault();
  return;
 }
}


function resubmitOtp()
{
 location.reload();
}
</script>

 

ここで、「(document.getElementById(“txtOtp”).value == 8951)」かどうかを。

確認できて。

これは、入力したOTPが「8951」と一致する場合、ログインが成功するわけで。

 

Best regards, (^^ゞ