Linux提权-信息搜集
服务器信息枚举
判断是否虚拟化
|
查找当前shell是否处于docker中
|
查看系统信息
|
查看内核版本信息
|
查看系统架构信息
|
查看发行版本信息
|
查看系统主机名信息
|
用户信息枚举
查看当前用户
|
查看当前用户详细信息
|
查看所有用户信息
|
查看系统中所有用户组
|
查看id和对应组信息
|
查看当前登陆到系统的用户信息
|
查看当前登陆的用户
|
历史登陆信息
|
查找系统中所有超管用户
|
环境配置枚举
- 系统路径:PATH环境变量存储了系统中可执行文件的位置
- 用户信息:HOME环境变量存储了用户的家目录路径,USER环境变量存储了用户名
- 命令行选项:SHELL环境变量存储了用户的默认Shell程序的路径
- 其他信息:LANGUAGE环境变量存储了用户的默认语言环境
环境变量配置不当可能导致权限提升
查看系统环境变量
|
查看可执行文件路径信息
|
查看用户环境配置文件
|
/etc/profile是Linux的一个配置文件,包含了系统级别的配置信息;在启动时被读取,并设置系统的环境变量、用户变量、Shell选项等。profile还可以包含shell脚本用于执行一些初始化和配置工作
查看可用Shell路径
|
网络信息枚举
查看网络接口信息
|
还可以通过查看IP配置文件来查看网络接口信息
- Ubuntu18之前查看/etc/network/interfaces文件
- Ubuntu18之后查看/etc/netplan/*.yaml
- CentOS 8及之前查看/etc/sysconfig/network-scripts/ifcfg-*文件
- CentOS Stream 9查看/etc/NetworkManager/system-connections/下的文件
查看ARP缓存信息
|
查看路由信息
|
查看网络连接信息
|
查看DNS信息
|
系统进程枚举
查看系统进程
|
特权访问枚举
查看sudoers文件
|
查看是否可以无密码使用sudo
|
- -S表示从标准输入获取密码,也就是上面的空密码
- -l 表示列出当前用户能用的权限
- -k 表示重置时间戳,也就是下次再执行sudo时便需要输入密码
cron任务枚举
查看所有cron任务
列出/etc/下所有以cron开头的文件的详细信息
|
这是一些可能的文件:
- /etc/crontab:该文件是cron的主配置文件,用来管理全局定时任务,即对整个系统有效的定时任务,包含任务的时间、命令以及执行此任务的用户。此配置任务还包含:SHELL字段,用来指定运行任务时使用的Shell路径信息;PATH字段,用来指定运行cron作业时使用的环境变量路径的值。
- /etc/cron.d目录,该目录下也一般存放系统级别的定时任务
- /etc/cron.daily、/etc/cron.hourly、/etc/cron.monthly、/etc/cron.weekly目录下分别指定了每天、每小时、每个月、每周运行一次的脚本。
所有用户的定时任务
列举所有用户的定时任务(需要root权限)
|
查看当前用户的定时任务
|
查看其他用户的定时任务
|
软件信息枚举
CentOS查看已安装程序
|
Debian、Ubuntu查看已安装程序
|
文件枚举
查看系统是否安装了文件传输、Shell反弹、代码编译等工具
|
查看系统敏感文件权限
|
查看特殊权限文件
|
查看可写文件
|
查看指定扩展名文件
|
查找关键字文件
|
查看历史命令记录文件
查找可能存在的历史命令记录文件,如Bash历史记录文件、MySQL历史记录文件等等。
|
其中bash_history记录历史命令,我们可能从中获得一些服务的凭据之类的重要信息。
查看隐藏文件
比如有些管理员会将难记忆的密码通过隐藏文件的方式保存,我们可以通过bash历史命令文件进行搜索查看并获取一些敏感信息
这是一个示例查找命令
|
查看配置文件
|
查找之后我们就可以去看看里面的文件有什么信息
查看SSH私钥文件
|
如果能找到的话,我们就可以将该文件复制到kali,然后执行下面命令以root用户登陆目标服务器
|
信息搜集辅助工具
Metasploit模块
在Metasoloit的post/linux/gather/文件夹下有很多针对服务器信息搜集的后渗透模块。
开源脚本搜集信息
比如LinEnum,它可以获取服务器的各种信息,其实该脚本就是多条命令的集合,也可以自己写。