サーバーの脆弱性を探しています。 /var
ディレクトリを探していると、次のような結果が得られます。
drwxr-xr-x 3 root root 4.0K Aug 14 21:02 kerberos
drwxr-xr-x 12 root root 4.0K Nov 11 05:04 lib
drwxr-xr-x 2 root root 4.0K Jun 10 2014 local
lrwxrwxrwx 1 root root 11 Aug 14 21:00 lock -> ../run/lock <-- CHECK THIS
drwxr-xr-x 3 root root 4.0K Aug 14 21:05 log
lrwxrwxrwx 1 root root 10 Aug 14 21:00 mail -> spool/mail
drwxr-xr-x 2 root root 4.0K Jun 10 2014 nis
drwxr-xr-x 2 root root 4.0K Jun 10 2014 opt
drwxr-xr-x 2 root root 4.0K Jun 10 2014 preserve
lrwxrwxrwx 1 root root 6 Aug 14 21:00 run -> ../run
drwxr-xr-x 4 root root 4.0K Aug 14 21:00 spool
lock
"ファイル"のアクセス許可を見ると、他のユーザーのアクセス許可はrwx
であることがわかります。したがって、所有者ではない別のユーザー(この場合はroot)がこの「ファイル」を読み取り、実行、および書き込みできる可能性があるため、lock
がどのようなファイルであるかを確認します。
file lock
lock: broken symbolic link to `../run/lock'
stat lock
File: ‘lock’ -> ‘../run/lock’
Size: 11 Blocks: 0 IO Block: 4096 symbolic link
Device: fb01h/64257d Inode: 6424574 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-11-14 00:18:52.218518690 +0000
Modify: 2015-08-14 21:00:52.000000000 +0000
Change: 2015-11-11 04:56:35.543404826 +0000
Birth: -
この情報によると、ルートを取得し、この権限を使用して他の情報にアクセスしたり、コマンドを実行したりできますか?
たとえば、私は試しました:
echo "ls /etc" >> lock
しかし、私はPermission denied
を受け取ります。
いくつかの質問:
ロック許可についての私の解釈は正しいですか?
この壊れたシンボリックリンクを利用して何かをすることはできますか?
この壊れたシンボリックリンクでどんな種類の質問をする必要がありますか?
いいえ、そのようなリンクを使用してルートを取得することは通常不可能です。
より具体的な質問に回答するには:
この「ファイル」が実際のファイルであり、シンボリックリンクではなかった場合、解釈は正しくなりますが、正しくありません。
シンボリックリンク(別名symlinks)アクセス許可はほとんど常に無視されます。symlinksは、それらが指すファイルから実際のアクセス許可を継承します。表示されるrwxrwxrwx
アクセス許可は、単に詰め物と見なすことができます。 POSIX標準 は、OSがシンボリックリンクに対してどの権限を表示する必要があるかを定義することさえできないほど真実です。
作成されたシンボリックリンクのファイルモードビットの値は指定されていません。 POSIX.1-2008で指定されたすべてのインターフェースは、stat構造体のst_modeフィールドで返されるファイルモードビットの値が指定されていないことを除いて、シンボリックリンクの内容を常に読み取ることができるかのように動作します。
一部のシステムはすべての許可ビットセット(あなたの場合のようにrwxrwxrwx
)を表示し、他のシステムはリンクされたファイルが存在する場合はその許可を表示し、一部はさらにビットandリンクとターゲット権限間の操作...).
これらのアクセス許可はほぼ常に無視されると上記で述べました。これは、OSのハンドフルでは完全に真実ではないためです。たとえば、Mac OS Xシステムは上記のPOSIX標準から逸脱しており、read権限がリンク解決機能を制御します。これは、影響が非常に少ない(良好または悪い)セキュリティの面で(それはシステムを維持することを幾分困難にするだけです)。
それで、これらすべてを念頭に置いて、この壊れたリンクに対するあなたの現在の許可は何ですか?存在する場合はターゲットと同じです。ただし、ターゲットが存在しないため、十分なパラメーターがある場合でも、リンクを使用して操作を実行することはできません(そのため、壊れています。単に機能しません)。
壊れたリンク自体は異常ではなく、セキュリティ上の弱点はありません。このようなリンク切れは、chroot
またはネットワーク共有を使用する環境でよく見られます。シンボリックリンクは、正しいルートを使用するか、正しいネットワーク共有をマウントしたもののみを正常に解決します。
パスが/var/lock
であり、存在しないディレクトリ/run/lock
を指すリンクがあります。 /var/lock
パスを引き継ぐには、これら2つのパスの1つだけを改ざんできれば十分です。
/home/myuser/fakelock
を指す)をポイントし、アプリケーションがvar/lock
に入れようとするすべてのロックを制御します。道。これらのディレクトリのいずれにも書き込み権限がない場合、あなたはねじ込みで調査を続ける必要があります。ここでは悪用するものは何もありません。
シンボリックリンクの権限は、ほとんど意味がありません。読み取り権限がない場合、それが指している場所を確認できません。書き込み権限がない場合、ターゲットを変更することはできませんが、それだけです。実際には、0777以外の権限を持つリンクを作成します。かなりのトリックです。リンクのターゲットに対する権限により、ターゲットで実行できる操作が決まります。ルート所有の壊れたリンクのターゲットを作成したファイルで置き換える場合、ターゲットはあなたが所有し、関係なく適切に動作します直接アクセスしたか、リンクを介してアクセスしたか。