攻击成功,并得到一个shell,但是这里却只是一个简单的shell,首先需要把它转换为一个交互式的shell
在简单shell中直接按删除键是不行的,要按住ctrl键之后,再按住删除键才可以,其他键的使用也一样
命令
python -c 'import pty;pty.spawn("/bin/bash")'
现在已经进入了一个交互的shell了,但是可以看到这只是一个普通的用户,所以我们要把他提到root用户
suid提权的原理
suid是什么,有什么作用?
SUID (Set owner User ID up on execution) 是给予文件的一个特殊类型的文件权 限。在 Linux/Unix中,当一个程序运行的时候, 程序将从登录用户处继承权限。 SUID被定义为给予一个用户临时的(程序/文件)所有者的权限来运行一个程序/文 件。简而言之用户在执行程序/文件/命令的时候,将获取文件所有者的权限以及所有 者的UID和GID
简单来说。suid,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。
所以我们去找一个文件拥有者为root,而且其执行位上有s的执行文件,那么即使我们用普通用户运行这个文件时,这个文件的执行权限就是root
命令
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {}
为什么使用find命令呢?
原因:在find的后面,是可以带入命令的,而我们要的就是执行其他命令。也就是说,当我们调用find命令时,因为find命令有s权限,所以find在执行时的权限就是root命令,而在find后面的带入的命令也就是在root权限下执行的命令了
去查看find
带入命令的方法:
-exec command 。-exec选项后面跟随着所要执行的命令或脚本,然后是一对大括号 { },-个空格,一个反斜杠\加上一个分号。因为分号;在bash的环境下空格是有特殊意义的,因此利用反斜杠来跳脱
提权命令
先创建一个空文件test,使用命令:
find test -exec '/bin/sh' \ ;