エクスプロイトWebサイトでは、概念実証を示すときに / etc/passwd ファイルを標的とするセキュリティアナリストとハッカーがいます。
サーバーにローカルファイルインクルードまたはパストラバーサルの脆弱性があり、ハッカーが/ etc/passwdファイルにアクセス(表示、読み取り、編集は不可)できる場合、これの影響は何ですか?このファイルでは、すべてのパスワードが意図的に難読化されていませんか?
realの唯一の反響は偵察です-攻撃者はログイン名とgecosフィールドを知ることができます(これにより、パスワードを推測)/etc/passwd
ファイルから。
その理由の1つは、20年ほど前に、ほとんどのUnixバリアントはハッシュされたパスワードを/etc/passwd
ファイルに保持することからシフトし、/etc/shadow
に移動したことです。これは、「[指]」や「識別」などのツールが機能するためには、/etc/passwd
が誰でも読み取り可能である必要があるためです。パスワードが/etc/shadow
に分離されると、そのファイルはrootだけが読み取り可能になりました。
とは言っても、/etc/passwd
は従来の「ちょっと、私がしてはいけないものを手に入れた」ファイルなので、セキュリティアナリストやハッカーに人気の高い「フラグ」のままです。それを読むことができれば、/ etcの下にある他のものも読むことができます。そのうちのいくつかは、攻撃者にとって役立つ可能性があります。しかし、yumがシステム上にあるかどうかわからない場合、(たとえば)/etc/yum.conf
をテストするのは困難です。 /etc/passwd
は常に存在し、アクセスが機能したかどうかの信頼できるテストです。
言い換えると、/etc/passwd
を取得するimplicitrepercussionは、攻撃者がコントロールを回避したことですそして、任意の読み取り可能なファイルを取得できます。
*勝利、明示、黙示の保証はありません
@gowenfawrが主要なポイントに達している間、私はいくつか追加します:
ほとんどのシステムすべてではないは、実際のパスワードを/etc/shadow
で非表示にします。システムが脆弱かどうかを確認するには、実際のユーザーアカウントを確認してください。こんな感じ
stighemmer:x:...
その後、パスワードは安全です。
こんな感じ
stighemmer:kjsaashgdkwqvbm:...
次に、パスワードは[〜#〜] not [〜#〜]安全です。
はい、パスワードは一方向ハッシュ関数を使用して難読化されていますが、それだけでは不十分です。このファイルがあると、ハッカーは実際にログインを試行せずに、特定のユーザーが特定のパスワードを持っているかどうかを確認できます。
1970年には、このチェックは遅く、物事はかなり安全でした。今日、ハッカーは1秒あたり数百万のパスワードをチェックできます。 oneのユーザーが推測可能なパスワードを持っている場合、そのユーザーのアカウントがハッキングされます。そして、「推測可能」なものの限界は、すべてのプロセッサー世代でプッシュされます。
これで確認しましたが、パスワードは安全に/etc/shadow
に保存されています。良い、問題は解決しました。
結構です。 /etc/passwd
には詳細情報が含まれています。
すべてのユーザーのfull名が含まれています。これはソーシャルエンジニアリング攻撃に非常に役立ちます。
インストールされているソフトウェアを示すシステムユーザーのリストが含まれています。
それで、「Hey Stig、postgresのパスワードを忘れてしまいました。リマインドしてください?Signed、Other Real User」というメールが届きます。私の便利なメールクライアントには完全なメールアドレスが表示されないため、このメールが遠隔地から送信されていることに気づきません。 「 『S3CR37』です」と返信します。会社のデータベースがハッキングされました。
もちろん、フルネームが公開されるのはこれだけではありません。とにかく、ソーシャルエンジニアリング攻撃についてユーザーに教える必要があります。
これは、攻撃者が短時間でブルートフォース攻撃を行うのに役立つ可能性があります。攻撃者はユーザー名をすでに持っているため、ユーザー名を見つける必要はありませんが、パスワードを見つけるためだけに攻撃を仕掛けることができます。
シャドウパスワードを使用していない場合を除き、/etc/passwd
へのアクセスは、ファイル名が示唆するような大きなリスクではありません(この時代にシャドウパスワードを使用していない場合は、問題があります)。
最初のUNIXシステムは実際にパスワードを/etc/passwd
に保存したため、ファイルはそのように呼ばれます。また、ユーザーのホームディレクトリやシェルなど、ユーザーメタデータの他のいくつかの側面も格納しました。振り返ってみると、このメタデータを使用するプログラムが/etc/passwd
を読み取ってそのデータにアクセスできる必要があることを意味するため、これはこれまでに行われた最大の設計決定ではありませんでした。
/etc/passwd
のパスワードは当時のアルゴリズムを使用して暗号化されましたが、暗号化されたパスワードを含めることは依然として不必要な露出のリスクでした、そのため、シャドウパスワードを実装してそれを解決しました。 /etc/passwd
の形式は、歴史的な理由により変更できませんでしたが、最新のシステムはそこにプレースホルダーを配置しただけです(x
が一般的です)。実際のパスワード関連情報(実際のハッシュ、パスワードの古さなど)は、ルートだけが読み取ることができる別のファイル/etc/shadow
に格納されます。
/etc/passwd
へのアクセスが完全に無害であると言っているわけではありません。それでもユーザー名のリストが生成されます。これは理論的には無害ですが(ユーザー名は秘密にされているわけではないため)、何人のユーザーが自分のユーザー名をパスワードとして使用しているのかを知るのは憂鬱です。それはこの日と年齢ではそれほど頻繁に起こりませんが、それでも試してみる価値があるほど頻繁に起こります。
また、/etc/passwd
のGECOSフィールドには、ユーザーの本名などのメタデータが含まれていることがよくあります。これは、それ自体で簡単な推測を行う場合や、推測の可能性が高い詳細な検索を行う場合に役立ちます。ただし、これはかなり洗練されたものであり、/etc/passwd
自体へのアクセスをはるかに超える(そして必要としないこともあります)
クライアントの脆弱性評価を実行するとき、私は_/etc/passwd
_を「ねえ、このアプリケーションでLFIを取得しました。注意してください」として使用します。これは単純でよく知られたファイルであり、一般に、ファイルシステムに対する十分な権限があり、ファイルを読み取ることができることを示します。これは脆弱性の評価であるため、私とクライアントは、存在する脆弱性、提供された証拠、および問題の解決方法に関するガイダンスのみに注意します。
クライアントのペンテストを実行しているとき、このファイルには通常パスワードが含まれていませんが、多くの情報が得られます。それから、パスワードの推測を開始するためのログイン名があり、既存のLFIを使用してユーザーのホームディレクトリからファイルを読み取ることができます。
これと同じ理由が、XSSの概念実証と<script>alert(1)</script>
にも当てはまります。これはXSSでできる最悪のことではありませんが、攻撃者として私が自分の制御下でJavaScriptを実行できることは証明です。
攻撃者は手動で作成したユーザー(これまでに触れたほとんどのLinuxではUID> 500または> 1000)を確認し、割り当てられたシェル(/ bin/ba(sh))を確認して、ユーザーがサービスやWebアプリで作業する可能性のあるものを知ることができます。マシンで利用可能。 SSHだけがターゲットではありません!
この情報は、一般的なブルートフォースだけでなく、有効なユーザー名の知識を必要とするすべての攻撃にも役立ちます(創造的です)。
上で述べたように、攻撃者が/ etc/passwdを読み取ることができる場合、攻撃者はシステム上でさらに多くの情報を読み取ることができ、リバースシェルやローカル特権エスカレーションを取得する方法があるかどうかを体系的に判断できます。
いくつかのLinux Privescガイド(初心者向けのmubixおよびg0tmilk)を読んで、いくつかの実践的なPrivescトレーニング(vulnhub.com/kioptrixが良い出発点)のために脆弱なvmsを手に入れることをお勧めします。