アカウント名:
パスワード:
リンク先のITmediaの記事に書かれていますが、root権限がなくてもシステムの時刻を変更することができます。
このため管理者パスワードを入力しなくても、「systemsetup」ユーティリティを使って簡単にOS Xに変更を加えることができてしまうという。
$ systemsetup -setdate mm:dd:yy$ systemsetup -settime hh:mm:ss
実際の挙動は知らないけれど、 ITmedia の記事には「root 権限がなくてもシステムの時刻を変更することができる」なんて書いてないよ。それに、システム全体に影響のある設定が root 権限なしでできるってのは、さすがにないだろうという気がする。
そこに書いてあるのは、「システムの日付が 1970 年 1 月 1 日になっていれば、過去に sudo したことのあるユーザーが再度 sudo するのにパスワードを入力する必要がない」とい
僕は勘違いしていましたが、「/var/db/sudo/username ディレクトリーが未来の時刻になっていると sudo がパスワードを要求しない」というわけではないみたいですね。 /var/db/sudo/username ディレクトリーの時刻に合わせてシステム時刻を変えて、あたかも /var/db/sudo/username ディレクトリーが過去 5 分以内に作られたかのような振りをしてやれば、パスワードを入力することなく sudo ができるということのようです。特に sudo -k が「次回はパスワードを要求するようにする」という意味だと思って使っていると、じつは前回入力を epoch として扱うだけな
リンク先に書いてあるとおりだとすると、正規のユーザがsudoやsudo -kを行ったかどうかは関係無いのでは?
「If … the user has ever run the "sudo" command」と書いてあるので、過去に少なくとも 1 度 sudo を使ったことがあることは必要です。 sudo -k は既にある /var/db/sudo/username ディレクトリーの時刻を epoch に変えるだけで、ディレクトリーが存在しない場合に作るわけではないということだと思います。 Sophos のブログ記事にも、 sudo -K を使えば /var/db/sudo/username が削除されるので対策になると書いてあります。
僕は sudo できるユーザーが離席している間に、攻撃者 (root 権限を取りたい通りがかりの人) が離席中の人のアカウントからシステム時刻を設定すれば良い、という点を完全に見落としていました。 #2453590 でも全然駄目でした。
sudo -k を使わなくても、 /var/db/sudo/username ディレクトリーの時刻に合わせてシステム時刻を変えれば良いと思うので、 sudo -k は本質ではないと思います…が、まだ何か間違えているかも。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
にわかな奴ほど語りたがる -- あるハッカー
そもそも (スコア:0)
この操作にroot権限が必要だったりしません?
Mac OSはどうなのか知りませんが。
Re: (スコア:2)
リンク先のITmediaの記事に書かれていますが、root権限がなくてもシステムの時刻を変更することができます。
$ systemsetup -setdate mm:dd:yy
$ systemsetup -settime hh:mm:ss
Re: (スコア:2)
実際の挙動は知らないけれど、 ITmedia の記事には「root 権限がなくてもシステムの時刻を変更することができる」なんて書いてないよ。それに、システム全体に影響のある設定が root 権限なしでできるってのは、さすがにないだろうという気がする。
そこに書いてあるのは、「システムの日付が 1970 年 1 月 1 日になっていれば、過去に sudo したことのあるユーザーが再度 sudo するのにパスワードを入力する必要がない」とい
Re: (スコア:0)
特別な意味を持ってるみたいです。
こんな大事な場所での素朴な実装が時代を感じさせます。
Re: (スコア:2)
僕は勘違いしていましたが、「/var/db/sudo/username ディレクトリーが未来の時刻になっていると sudo がパスワードを要求しない」というわけではないみたいですね。 /var/db/sudo/username ディレクトリーの時刻に合わせてシステム時刻を変えて、あたかも /var/db/sudo/username ディレクトリーが過去 5 分以内に作られたかのような振りをしてやれば、パスワードを入力することなく sudo ができるということのようです。特に sudo -k が「次回はパスワードを要求するようにする」という意味だと思って使っていると、じつは前回入力を epoch として扱うだけな
Re: (スコア:0)
前提条件は、sudoが可能なユーザがログインした状態で放置されている端末で、
パスワードなどの入力無しにシステムクロックを変更可能、だけかと。
・そういう端末でsudo -kを実行
・sudo-kにより、sudoは、「前回1970/1/1 00:00に実行された」と、実行記録を書き換える
・システムクロックをその直後に設定すれば、sudoはそれを「制限時間内の再実行」と見なして通す
と。
sudoは、
(1) その端末上で、パスワードが入力されるなど、正しくsudoが実行された
(2)
Re:そもそも (スコア:2)
「If … the user has ever run the "sudo" command」と書いてあるので、過去に少なくとも 1 度 sudo を使ったことがあることは必要です。 sudo -k は既にある /var/db/sudo/username ディレクトリーの時刻を epoch に変えるだけで、ディレクトリーが存在しない場合に作るわけではないということだと思います。 Sophos のブログ記事にも、 sudo -K を使えば /var/db/sudo/username が削除されるので対策になると書いてあります。
僕は sudo できるユーザーが離席している間に、攻撃者 (root 権限を取りたい通りがかりの人) が離席中の人のアカウントからシステム時刻を設定すれば良い、という点を完全に見落としていました。 #2453590 でも全然駄目でした。
sudo -k を使わなくても、 /var/db/sudo/username ディレクトリーの時刻に合わせてシステム時刻を変えれば良いと思うので、 sudo -k は本質ではないと思います…が、まだ何か間違えているかも。