少し前に、私は1つの普通のルーターの設定を試す機会を与えられました。 事実、4月1日には大学の同志を演じることが義務付けられました。 大学にはWi-Fiネットワークがありました。 ルーターで偽のネットワークを作成し(名前、パスワードを設定し、正当なアクセスポイントのいずれかのMACアドレスを設定する)、ラップトップでDNS、Webサーバーを起動することにしました。 誤ってネットワークに接続してサイトにアクセスしようとしたユーザーは、エイプリルフールの画像を使用してページにリダイレクトする必要があります。 しかし、物語はそれについてではありません。 ルーターの設定をいじくり回していたときに、興味深いバグを見つけました。今日はそれについて話します。
設定段階では、ルーターはインターネットに接続されていました。 しかし、何らかの理由で、Wi-Fiに接続されたデバイスはインターネットを受信しませんでした。 理解できた。 ルータのパネルにpingユーティリティを使用できるタブがあったため、telnetをオンにできません(すべての読者がtelnetが外部に公開される危険性を理解してくれることを望みますか?)。 フォームは次のようになりました。
この機能は次のように実装されます。 ルータープログラムは、アドレスを含む文字列をユーザーから受信し、pingコマンドを呼び出し文字列に置き換えます。
ping -c < > <>
ルーターは、アドレスを含む文字列をどの程度確認しますか? これは私の頭に浮かんだ質問です。 次に、アンパサンドと
lsコマンドを置き換えました。 私はこれを得ました:
戦車にいる人のために
UNIXシステムでは、bashにバックグラウンドでコマンドを実行させ、その後にアンパサンドを代入することができます。 同時に、アンパサンドの後にコマンドを置き換えることができ、最初のコマンドと同時に実行されます。 この場合に使用したもの。 「8.8.8.8&ls」を置き換えると、「ping -c 3 8.8.8.8&ls」になりました。 ルーターはpingコマンドとlsコマンドを同時に実行しました。 その後、結果をもたらした。
このバグが他の場所で許可された場合、それは非常に深刻な脅威になります。 結局、このような脆弱性は、攻撃者がルーターにコマンドを強制的に実行させたり、デバイスを完全に制御したりするのに役立ちます。 このような脆弱性は、
CWE-78(OS Command Injection)に分類されます。
じっと座っていられず、見つかったバグについてメーカーに急いで書きました。 ルーターのモデル、ファームウェアのバージョン、およびバグを再生するためのスクリプトについて詳しく説明しました。 興味深い答えを受け取った:
翻訳(逐語的)
製品の一番下のラベルでハードウェアのバージョンを確認できますか?
牧師はいません Px。 このデバイスのソースまたは購入場所を知っていますか?
結局のところ、彼らは私がロシアから書いていることを考慮していませんでした。 このルーターのモデルは、私たちの国でのみ配布されました。 通信は、新しいファームウェアを私に送ったという事実で終わりました。これにより、以前のファームウェアの欠点がすべて取り除かれ、多くの機能が追加されましたが、何らかの理由でパブリックドメインではありませんでした。