web-dev-qa-db-ja.com

pingで特権の昇格を行う方法は?

特権の昇格を実現しようとしています。 Linuxに仮想マシンがあり、rbashターミナルから脱出しました。これで「通常の」ユーザー端末ができました。ユーザーがsudoersファイルにありません。

Pingコマンドを使用して特権昇格を実行することは可能ですか?

SUIDビットは/bin/pingで許可されていますが、そこから先に進む方法がわかりません。誰か助けてもらえますか?

16
mb3354

SUIDバイナリは、特権の昇格のために本質的に悪用されることはありません。問題は、ソフトウェアに脆弱性がある(たとえば、多くのCTFに、特権の昇格に悪用される可能性のあるバッファオーバーフローの脆弱性を含むSUIDバイナリが含まれている)か、管理者がSUIDビットを設定してはならないバイナリに設定した場合です。後者の極端な例は、オーナーがvimを使用してrootをSUIDに設定し、ユーザーがvimセッション(:![Shell command])内でrootとしてbashコマンドを実行できるようにすることです。

これに関するクイックリファレンスチェックの結果、 LinuxのPrivescに関するこの記事 に進みました。 3. Exploiting SUID Executablesのセクションが役に立ちます。

pingユーティリティでは、バイナリがルートによって所有され、SUIDビットが設定されている必要があります。これは、バイナリのみがルートで実行できる "rawソケット" を使用してICMPリクエストを送受信するためです。脆弱なバージョンのping(@Arminiusがバージョンを要求したのはこのためだと思います)またはコード/コマンドを挿入する方法を見つける必要があります。個人的には、特権の昇格のためにペンテストやCTFでpingを利用することはできませんでしたが、それが確かに不可能であるというわけではありません:)

有名な同様の例は、--interactiveモードをサポートしていた古いバージョンのnmapです。 SUIDビットが設定されている場合( デフォルトのsynスキャン-sS "require raw-packetprivileges"などの多くのスキャン)、インタラクティブモードからルートシェルにドロップできます。詳細については、上記のprivescリンクをご覧ください。

CTFチャレンジを検討している場合、私は通常、デフォルト以外の明らかなSUIDプログラム(例:/opt/myprog/test.bin)を探し始め、次に/bin/pingのような「通常の」suidプログラムに戻ります。他のチェックが無益な後の最後の手段。

30
deletehead