したがって、誰かがリモートマシンのシェルを(もちろんインターネット経由で)入手したとします。しかし、(linux)シェルはwwwユーザーの下にあります。特権の昇格を試みる方法はありますか?
はい。特権昇格の上位2つの方法は次のとおりです。
カーネルの欠陥。カーネルに脆弱性がある場合、権限のないユーザーがrootレベルのアクセス権を取得できる可能性があります。このような脆弱性は過去に何度も見られました。
Setuidプログラム。システムにインストールされているいずれかのsetuidプログラムに脆弱性がある場合、権限のないユーザーがこれを使用してroot(またはエスカレート)アクセスを取得できる可能性があります。このような脆弱性は以前から一般的でした。
(rootとして実行されているプログラムがファイルシステムを使用する方法での競合状態の悪用や、システムサービス/デーモンの脆弱性など、特権の昇格には他の方法があります。しかし、私の印象では、これらは少し一般的ではありません。 )
私の大まかな経験則は、攻撃者がマシンの非rootアカウントにアクセスできる場合、それらが十分に献身的で洗練されている場合、マシンでrootになることができるように準備することを想定する必要があります。確かなことではありませんが、攻撃者がシステムのユーザーアカウントにアクセスできる場合、特権の昇格を確実に停止することは困難です。
これが抽象的に聞こえる場合は、具体的に説明させてください。ほとんどのスマートフォンでインターネットにアクセスして、スマートフォンをルート化または脱獄する方法を見つける方法を知っていますか?さて、何を推測します-電話を「ルート化」するためのプログラムを実行すると、その裏では、電話の特権昇格の脆弱性を悪用することで機能します。携帯電話をルート化するためのツールには、そのような特権エスカレーションエクスプロイトが1つ以上組み込まれており、そのような脆弱性を熱心に探して収集する携帯電話愛好家コミュニティがあります。経験的に、ほとんどの電話はルート化できます。つまり、ほとんどの電話には少なくとも1つの脆弱性があります。このような脆弱性の蔓延は、特権の昇格を確実に防止することの難しさをある程度示しています。
上記の回答に同意しますが、少し拡張したいと思います。カーネルの脆弱性が一般的です(つい最近、Benが特権エスカレーションを可能にするいくつかのネットワークドライバーの脆弱性を報告しました)。Linuxに最適なchrootがありません保護(grsecを使用した場合でも)しますが、grsecパッチが適用されたカーネル(サーバーには「最も高い」保護が適用されている必要があります)により、非rootが実際に何かを実行することが非常に困難になります。攻撃者がユーザーアカウントにアクセスできるようになったら、rootを獲得することにはそれほど関心がありませんが、それをネットワーク内の他のサーバーの足がかりとして使用したり、zeusタイプのc&cとして使用したりすることに関心があります。ここでは説明しません。ここでzeusを選択すると、議論が非常に広範囲になりますが、経験則として、cronを実行して「しばらくお待ちください、ページを読み込んでいます」という正規表現ベースの検索を行うことができます。エクスプロイトキット)。攻撃者は通常、アクセスを維持するためにゼロアクセスを使用しますが、これは別のJavaScriptベースのエクスプロイトキットです。つまり、簡単に言うと、すべてのセキュリティ更新を実行し、grsecカーネルを実行すれば、体調は良好です。