Binary Exploitationの旅 さまざまな権限 -支配せよ。この領域を。-
今回はサイバーセキュリティを知る上で重要な権限の話をします。
- 権限とは
- コンピューターの権限
- 実践- 権限を扱うアプリケーション
- 実践- ちょっとしたExploit
権限とは
権限というのはAがBに対してCという行為をすることを許可されるためのものだと思ってください。
例としては、この記事の後半部分を読むためには200円を払わないと、「あなたが僕の記事の後半部分に対して読むという行為」を許可されません。これは200円を払うことで権限を入手できると言えます。
コンピューターの権限
さて、コンピューターの権限の話をします。コンピューターはその内部に様々な情報を持っていますが、その情報をどのように操作できるかは様々な区切りによって分けられています。例えば「ユーザー」というのはその一つです。
コンピュータのソフトウェア部分をつかさどり、ハードウェアとの通信を担う多くのOperating Systemはユーザーに対してファイルに関する3つの権限を与えます。
それは「読み込み権限」、「書き込み権限」、「実行権限」の3つです。さらにユーザーがそれを実行した場合の権限や三つの権限を変えるための権限として所有権があります。
上の表をみてください。これはあるファイルを扱うアプリケーション上の単純なユーザーとその権限の一覧です。
例として、「hoge.txtはAliceが読み書き、Bobが読み書きできる権限があり、さらにその所有権はBobにあります。」このファイルの所有権はBobにあるため、Bobは三つの権限を自由に変更できます。
また、foo.execを見て下さい。これは「Aliceが読み・実行でき、Bobが読み・実行できる権限があり、さらにその所有権がAliceにあるファイルです。」これで重要なところはこのファイルを実行している時に扱える権限はAliceの現在持っている権限と同じになるというところです。
つまり、foo.execがpiyo.txtを表示する機能を持っていれば、Bobがfoo.execを実行して、Aliceの権限を行使してpiyo.txtの中身を読むことができます。
またpoi.execの所有権はMasterにあります。このMasterは特権を持っています。特権を持っているユーザーは全てに関する権限を持ちます。すなわち、全てのファイルに関しての所有権を持っているのと同じ状態になります。
実践- 権限を扱うアプリケーション
権限を擬似的に扱うアプリケーションを作成しました。使用するファイルのソースコードを以下に貼っておきます。(ここから先で分からないことがあれば、DMで聞いてくだされば答えます。)
ここから先は
¥ 200
皆さんの支援が私の生活費になります。