2016-09-27 12 views
1

Windowsサーバーに関するセキュリティテストの目的で、Windows Webアプリケーションへのシンボリックリンクをアップロードしようとします。しかし、正式に入手できる情報に基づいて、Windowsのハードリンク(これはNTFSジャンクションと同じであると思われる)が、Linuxの場合と同じようにハードディスクからコピーできるファイルとして存在するかどうかは不明です。漠然としていますが、NTFSジャンクションは「通常の」ファイルとは異なるファイルシステム成果物の一部であるという感覚があります。これを確認または拒否するドキュメントは見つかりません。私はNTFSがシンボリックリンクの直接操作をサポートしているかどうかを知りたいので、シンボリックリンクを別のコンピュータに移動することができます。Windows/NTFSではシンボリックリンクを別のコンピュータに移動できますか?

Windowsソフトリンクファイル(.lnk)はこのように限定されていませんが、テストの目的には合致しません。

私の目的は、シンボリックリンクを仮想マシンからコピーして、それを私がテストしているサーバにアップロードすることです。

これは可能ですか? (私はそうではないという印象の下にいる)私が見たことから、Windows上のすべてのプログラムは、ハードリンクを宛先ファイルと見なすだろう。ファイルを一時的に破損させるために特別なエディタを使用するなど、これを回避する方法はありますか?シンボリックリンクがファイルシステム上の通常のファイルとして存在する場合、シンボリックリンクを変更して、後で使用するためにWindows以外のOSに移動できますか?

これがサーバーの障害に関するより良い質問であるかどうかを教えてください。これはセキュリティに直接関係するものではなく、セキュリティ練習のサービスでは日常的な技術的問題のほうが多いので、スタック・エクスチェンジのセキュリティには当てはまりません。

答えて

1

AFAIRでは、NTFS(ディレクトリ)ジャンクションは実際にはシンボリックリンクです。 juctnionは、リンク先を含むrepars pointという特別なファイル属性として実装されています。

ハードリンクは、ターゲットファイルのベースMFTレコードへの直接参照として実装され、ディレクトリツリー内に通常のエントリとして格納されます。実際には、ハードリンクを「元の」ファイルと区別することはできません(すべてのファイルとディレクトリには、ディレクトリツリー内のどこかにハードリンクが含まれています)。

シンボリックリンク自体をコピーする場合は、シンボリックリンクであり、ターゲットに関する情報を抽出する必要があります。ファイル操作(削除およびおそらくは名前変更を除く)は、リンク先にリダイレクトされます。したがって、一般的には、リンク先領域に正確なコピーを作成してシンボリックリンクをコピーすることができます。

実際の質問は、コピー操作を実行するために使用しているインターフェイスがターゲット上にシンボリックリンクを作成できるかどうかです。

+0

私はアプリケーションを介してWebサーバーに直接リンクするためにアップロードすることでこれを達成しようとしています。目標は、私のユーザーのために許可されていないファイルをつかむことができるように、IISにリンクをたどるようにトリックすることです。ファイルをシンボリックリンクに置き換えることは、Unixシステムの一般的な攻撃です。 – baordog

3

非常に直接的な回答はありません。私はバックアップ/修復/イメージングプロジェクトを担当しており、ディスクイメージ全体をWebサービス経由でサーバにコピーしています。あなたが望むことは可能ですが、考慮すべき点はたくさんあります。一般的にハードリンクが互いに区別できないことが想定される

ハードリンク

は、しかし、リンクされたファイルとその「元」のファイル間の微妙な違いがあります。その違いは、$MFT(winapi関数DeviceIOControlでUSN関連の引数を使用)へのクエリは、ファイルの1つだけを返すことです。これは、オリジナルのファイルと考えられます。 winapi関数NtQueryInformationFileを呼び出して、ハードリンクを列挙することができます。

シンボリックリンクとジャンクションは、異なる動物です...

あなたはフォルダはそれから属性を取得することにより、接合やシンボリックリンクであることを知ることができます。ジャンクションまたはシンボリックリンクの場合は、属性にReparsePointフラグがあります。 BTW - ジャンクションとシンボリックリンクの違いは、ジャンクションが同じボリューム上の別の場所へのリダイレクトであり、シンボリックリンクがボリューム外の場所へのリダイレクトであることです。リダイレクトターゲットは常にどちらかの方法で別のフォルダになります。面白いのは何

は、彼らが情報をリダイレクト含む本当にファイルでありながら、シンボリックリンクとジャンクションの両方が、見て、フォルダのように作用することです。 'emを開くと、NTFSは通常リダイレクトを見て、リダイレクト先を開きます。 NTFSはリダイレクト対象のアクセス許可をチェックするため、攻撃としては堅牢な戦略ではない可能性があります。

ジャンクション/シンボリックリンクを開くときに、フラグFILE_FLAG_OPEN_REPARSE_POINTを追加できます。これを行うと、NTFSはリダイレクトを実行しませんが、という内容のコンテンツを実際にリダイレクトして開きます。その情報の形式を知っていれば、サーバーでジャンクション/シンボリックリンクを再構築できます。リダイレクトは存在しないかもしれない場所を指しているかもしれないし、一時的にしか存在しないかもしれないことに注意してください。これは、一部のネットワークリソースが常に利用可能であるとは限りません。

つまり、ジャンクションまたはシンボリックリンクをコピーすることは可能です。ハードリンクをコピーすることは名目上、前述の微妙な点を念頭に置いてファイルをコピーすることを意味します。ターゲットファイルが存在する限り、手動でハードリンクを作成することもできます。

ハードリンクでは、NTFSのセキュリティ画像に1つの興味深い不具合があります。ユーザーがファイルにアクセスでき、そのファイルへのハードリンクをユーザーがアクセスできないフォルダーに作成した場合でも、ハードリンクへのパスを使用してそのファイルを開くことができます。これは、リンクと元のファイルの両方がディスク上の同じファイル(およびセキュリティ情報)を指しているためです。いずれかのリンクで変更された権限は、すべてのリンクに影響します。これを知らずに、あなたは不注意、私はこれは少し混乱である知っている

:-)ファイルシステム上に大混乱をもたらすことができますので、私はこの方法をまとめてみましょう:

NTFSのディレクトリエントリは、フォルダやファイルすることができます。ハードリンクはすべて1つのファイルを指すディレクトリエントリです。シンボリックリンクとジャンクションは実際にはのような働きをしているファイルで、ほとんどの実用的な目的のためにというフォルダになります(上記のリダイレクト情報を取得する方法を理解するまで)。

関連する問題