Hack The Box Traverxecにて。
less
コマンドに関するとても面白い権限昇格があったのでメモっておきます。
現状
次のコマンドだけなにもパスワードを入力せずに実行できる:
sudo journalctl -n5 -unostromo.service
実行した様子:
ゴールは、ユーザdavidからrootへ権限昇格すること(ただしdavidのパスワードは不明)。
実際に権限昇格してみる
以下のコマンドはどれも実行時にパスワードを求められる:
sudo journalctl -n3 -unostromo.service
sudo journalctl -n5
sudo journalctl -n 5 -unostromo.service
sudo journalctl
また、その結果をパイプに渡しても
sudo journalctl -n3 -unostromo.servic | less
sudo journalctl -n3 -unostromo.servic | cat
パイプより後のコマンドはdavid権限なのでprivescには無意味。
ふつうjournalctl
コマンドを引数なしでやるとページャ(less
コマンドを使った状態)で表示される:
このless
コマンド実行状態で、!/bin/sh
と入力すればシェルが起動する。
これを念頭において、davidからrootへの権限昇格を考える。
改めて、今(root権限で)次が実行出来る:
sudo journalctl -n5 -unostromo.service
-n5
というのは5行だけ表示という意味(上の画像参照)。
だから普通に実行すれば上の画像のようにただ結果が5行分表示されるだけ。
要は、このsudo journalctl
をページャ表示(つまりroot権限でのless
コマンド実行)させて、そこで!/bin/sh
とすればrootシェルが得られる。
どうするか...
答えは、ウィンドウを小さくしてページャ表示されるようにする。
つまり、ウィンドウの高さを5行分表示出来ない高さにしてやればページャ表示される:
あとはこの状態で!/bin/sh
と打ち込んでroot権限のシェルがとれる。