为了完整讲解“webshell权限提升技巧”的攻略,我将整个过程分成以下几个步骤:
- 查看当前webshell权限:在初步进入网站后,我们通常只能拿到webshell权限,通过以下命令来查看当前权限:
id && uname -a
其中,id命令用来查看当前用户和其属于的用户组,uname命令用来查看操作系统和内核版本信息。
- 获取更高的权限:接下来,我们需要查看系统中有哪些已安装的有root权限的软件或者系统管理员可访问的目录,以此为突破口获取更高的权限。可以使用如下命令实现:
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null
find / -user <username> -perm -4000 -type f 2>/dev/null
这些命令将会查找所有拥有SUID或SGID位权限的文件,并且可以使用上述命令来查找可直接执行指令的用户。
- 利用SUID/SGID权限:当我们找到一个SUID/SGID位的可执行文件时,可以使用它来提升自己的权限。如下命令可以利用ping命令提升权限:
ping.bash -p '/bin/bash -p'
- 在可写目录中寻找攻击突破口:在web服务器上,虽然许多目录拥有权限进行写操作,但是它们并不一定允许执行权限。然而,可能存在某些可写入且具有执行权限的目录。可以使用如下命令来查找:
find / -type d -writable -exec ls -al {} \; 2>/dev/null
一旦我们找到了一个具有写权限和执行权限的目录,我们就可以上传一些提权脚本进行试探。
- 通过写入Cronjob提升权限:如果我们想长期持续地拥有root权限,可以尝试写入Cronjob。在Cronjob中我们可以设置一些可执行的命令,因此我们也可以编写一个自动化的脚本,以此来尝试提权,例如:
echo '* * * * * root /path/to/your/script.sh' >> /etc/crontab
这些步骤可以帮助我们基于webshell的权限进行提升。当然,实际中还会存在不确定因素,需要根据具体情况灵活操作。
下面是两个基于以上技巧的示例:
- 使用SUID提权
假设我们已经找到一个SUID位的可执行文件,通过ls -al我们可以看到它的权限信息:
-rwsr-xr-x 1 root root 1234 Oct 14 12:22 /usr/bin/vim
我们把vim的权限提升为rws,即设置SUID位和SGID位。然后我们就可以使用vim命令来执行任何命令,如:
./vim -c ':!/bin/sh' /dev/null
使用这条命令,我们就能够利用vim命令来执行任意命令以获取更高的权限。
- 使用Cronjob持续提权
一旦我们能够写入一些可执行的文件到服务器上,我们就可以利用Cronjob来进行自动化提权。在Cronjob的环境下,我们可以将一个脚本设置成定期执行,例如:
* * * * * root /path/to/your/script.sh
在这种方式下,我们就能够长期保持系统的root权限。因此,提高systemd/System V init脚本的权限来维持持久性也是一种可行的选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:webshell权限提升技巧 - Python技术站