私はctf作業中であり、権限の昇格の最後の段階にあります。このsudo -l
コマンドを使用すると、出力は次のようになります。
Matching Defaults entries for nick on 192:
always_set_home, !env_reset, env_keep="LANG LC_ADDRESS LC_CTYPE LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE LC_ATIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE",!insults, targetpw
User nick may run the following commands on 192:
(ALL) ALL
(root) NOPASSWD: /restart-apache
env_resetを無効にしてはいけないことを知っていますが、それを使用してrootアクセス権を取得する方法がわかりません。
$ file restart-apache
restart-apache: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, BuildID[sha1]=1b1a4ab278b2d1be83e8b14adfc358cfd277d655, for GNU/Linux 3.2.0, with debug_info, not stripped
ベストアンサー1
sudoersのマニュアルページから:
ただし
env_reset
、このオプションが無効になっている場合、およびenv_check
オプションenv_delete
によって明示的に拒否されていないすべての変数は、呼び出しプロセスによって継承されます。
したがって、起動したプロセスに任意の環境変数を挿入できます。
どのタイプのプログラムなのかは示していませんが、/restart-apache
シェルスクリプトなら簡単です。機能に影響を与える可能性のある環境変数はありますか?シェルスクリプトがほぼすべてのコマンドを実行すると、正確に何が起こりますか?どこで見つけることができますか?
PATH
まあ、私は幸運ではなく、実際にコンパイルされたプログラムだったので、おそらく合格できませんでした。可能しかし、それを信じるのは難しいです。
出力はfile
切り捨てられるようです。私が得た出力はfile /bin/ls
次のようになります(複数行に分割されています)。
/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,
for GNU/Linux 2.6.32, BuildID[sha1]=3c233e12c466a83aa9b2094b07dbfaa5bd10eccd,
stripped
(通訳のフルパスが質問の出力から欠落しています。)
あなたのプログラムが「ld-linux-x86-64.so.2
一般的な」動的実行可能ファイルのように使用されている場合は、そのようなプログラムを実行すると実際に何が起こっているのかを確認できます。たとえば、ここで:/lib64/ld-linux-x86-64.so.2 とは何ですか、なぜファイルの実行に使用できますか?。
スポイラー:プログラム自体は最初に実行されません。
私達はまた見つけました動的リンカーのマニュアルページ。マニュアルページには、プログラムの起動時に設定される方法に影響を与えるいくつかの興味深い環境変数がリストされています(たとえば、必要な操作をLD_*
実行するにはいくつかのコーディングを実行する必要があるかもしれません)。