実行中のプロセスのEUIDを変更する


回答:


17

プロセスがroot-privileges実行されている場合、プロセスにgdbをアタッチし、そのプロセス内からseteuidを呼び出すことができます。

例:

[root@user-desktop ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=user_u:system_r:unconfined_t

[root@user-desktop ~]# gdb /bin/bash $$
GNU gdb Fedora (6.8-27.el5)
# cut copyright & license statements
This GDB was configured as "x86_64-redhat-linux-gnu"...
# cut some initialization output    
0x00000036b0a99335 in waitpid () from /lib64/libc.so.6
(gdb) call seteuid(500)
$1 = 0 
(gdb) quit
The program is running.  Quit anyway (and detach it)? (y or n) y
Detaching from program: /bin/bash, process 29017

[root@user-desktop ~]# id
uid=0(root) gid=0(root) euid=500(user) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=user_u:system_r:unconfined_t

3
タスクを達成する創造的なアプローチの1 ...
キホーテいんちき

うわー...はい、それは創造的です。実際、デバッガーでプロセスにアタッチすることは考えていませんでした。少しの「予想」ハッカーで、いくつかの状況で機能する「cheuid <processID> <EUID>」を実装できます。具体的には、gdbの実行者と影響を受けるプロセスの両方がrootである必要があると考えています。私の知る限り、ルート以外のプロセスに接続してgdbをrootとして実行しているだけで、デバッガの特権ではなく実行プロセスの特権で実行されるため、seuuidは失敗します。
PBR

2

独自のEUIDを変更するプロセスについて話している場合、それを行う方法はたくさんあります。

  • setuid()-EUIDが0のプロセスで使用されると、副作用としてEUIDが設定される
  • seteuid()
  • setreuid()

プログラムの有効なUIDと、保存されたUIDがあるかどうかに応じて、非ルートプログラムで2つのEUID値を切り替えることができる場合があります。ルート特権プログラムでは、注意する必要があります。変更を元に戻すことができるかどうかを判断し、ジョブに正しい機能を使用する必要があります。(rootとしてsetuid()を使用することは元に戻せません。)

すでに別のプロセスから実行されているプロセスを変更しようとしている場合、それを行う標準的な方法はありません。また、多くの非標準的な方法があるかどうかもわかりません。/ dev / kmemにいくつかの情報を入れることもできますが、「シンアイス」という表現が思い浮かびます。


2

これを「コマンドラインから」実行中のプロセスだけに実行する方法はありません。

確かに言えることです。唯一の「たぶん」は/ procであり、そこで(文字通りおよびgoogleを介して)突っ込み、EUIDの変更を許可する/ procのすべてに関して行き詰まりに陥りました。/ proc / {pid} / statusにあるUIDとGIDの設定を確認できますが、少なくとも私が知る限り、/ procにあるものを使用して変更することはできません。

しかし、変更したいプロセスのソースコードを制御する場合、そのようなものを機能させることは簡単です-コマンドラインからプロセスのEUIDを変更する方法です。たとえばSIGUSR1のシグナルハンドラを実装し、プロセスが独自のEUIDを変更するようにできますが、そのシグナルを受信したときに必要になります。次に、コマンドラインから "kill"を介してSIGUSR1シグナルを送信するプロセスを送信します。これは、要求されたとおりです...そして、EUIDが変更されます。

これはあなたが考えていたものではないかもしれませんが、...それはあなたがそれをどうするかというあなたの質問に対する答えです...そしてそれは私が考えることができる唯一の答えです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.