看我如何获取Chef服务器的Meterpreter Shell

这篇文章主要是想警告使用Chef的朋友,你们的管理员账户很可能早已在Chef web interface中泄露。管理员通常无法设置默认管理凭据。在这种情况下,Chef server主页将为你提供。

在最近的一次渗透测试中,我成功拿下了一台Chef server。然而对于Chef我并不了解,我使用较多的是Puppet,可以说在系统方面的大部分时间我都在使用Puppet。由于此前我从未遇到过Chef,因此我需要在最短的时间内,找出一个可以使用Chef基础架构shell一定范围内所有敏感主机的方法。以下是我的实行过程。

注意:所有这些很可能都是从命令行执行的。我通过Chef web interface获取了一个帐户,并且大部分时间都花在了GUI上。如果你知道如何在命令行上完成这些操作,你可以通过我的联系方式告知我。谢谢!

首先,需要创建一个新的管理用户用于上传cookbooks。如果你手头已经有一个使用习惯的管理用户,那么你可以忽略这一步。

记下创建新管理用户后界面为你提供的专用RSA密钥。

如果你还没有安装过Chef,那么请在你的攻击机上安装它。出现提示时请输入Chef URL。使用Chef server在其SSL证书中的主机名(不是IP地址或别名/cname),否则最终将导致你可能无法使用knife连接。

安装完成后,配置knife连接到Chef server。确保输入的URL和用户名无误。其他选项你可以设置为默认。

将你的私有RSA密钥写入~/.chef目录(.pem文件)中。同时,请确保你已相应地配置了你的~/.chef/knife.rb文件。

使用你的私钥,下载Chef server的证书并验证knife连接是否正常工作。使用以下命令来执行此操作。

快速浏览可用的cookbooks,确保knife连接正常。

现在,你需要创建一个cookbook和recipe。我使用以下命令来执行此操作。但该命令似乎已被弃用,你可以根据提示来替换该命令。

接着,我们来启动Metasploit,并创建一个web-delivery multi-handler。这里我选择使用的是python multi-handler payload。

成功执行后,我们将会获取到以下输出结果:

填充你的cookbook模板文件。下面所有你需要的都在recipes/default.rb中。

填充metadata.rb文件。以下为演示,在实际操作中请尽量避免使用类似于 ‘evil’ 或 ‘pwnage’ 等字符串。

是时候把你的Cookbook上传到服务器上了。

请确认你的cookbook现在是否已存在于Chef服务器中。你可以在命令行或Web界面中执行以下操作。

导航到网站上的“Cookbooks”列表。

将cookbook recipe分配给你想要shell的目标,并将其添加到每个节点的运行列表中。 转到节点列表,单击你感兴趣的节点,单击Edit。

在左下栏的’Available Recipes’列表中找到你的cookbook recipe,然后将其拖到右上角的 ‘Run List’ 中。点击底部的 ‘Save Node’按钮提交更改。

看!成功获取到了一个meterpreter shell。

为了操作的安全性,一旦你成功获取到了shell连接,请返回到web界面,并从已成功连接的节点运行列表中删除recipe。你不需要从相同的端点产生多个shell。

在完成你的任务后,请务必清除你与之交互过的系统中存在的任何痕迹。kill你的Meterpreter会话,删除你创建的管理用户以及recipe。你可以通过以下命令完成。

关闭会话:

主机与knife的连接:

*参考来源:coalfire,FB小编 secist 编译,转载请注明来自FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-05-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏磨磨谈

ceph luminous 新功能之磁盘智能分组

本篇是luminous一个新功能介绍,关于磁盘智能分组的,这个在ceph里面叫crush class,这个我自己起名叫磁盘智能分组,因为这个实现的功能就是根据磁...

17220
来自专栏小灰灰

借助GitHub搭建属于自己的maven仓库

在Github上也写了不少的项目了,然后经常遇到的一个问题就是,很多自己写的项目,希望在另外一个项目中使用时,只能把这个项目下载下来,相当之不方便

44880
来自专栏林德熙的博客

Roslyn 通过 nuget 统一管理信息

在日常的开发中,如果需要发布多个库,多个库之间的版权和作者等信息都是相同的。如果需要每次更改信息都打开项目进行编辑,这个效率是很低的。本文提供一个方式,通过安装...

10420
来自专栏黑白安全

Signal 桌面应用程序新代码注入漏洞,窃取用户明文聊天记录

距离 Signal 桌面应用程序上一个代码注入漏洞(CVE-2018-10994)被披露不到一周的时间内,安全研究人员又发现了另一个严重的代码注入漏洞(CVE-...

9730
来自专栏云飞学编程

Python爬虫,反爬手段之防盗链的处理

我们日常访问网页,如果从一个网页跳转到另一个网页,http 头字段里面会带个 Referer的参数。那么图片服务器通过检测 Referer 是否来自指定域名,来...

50920
来自专栏北京马哥教育

基于ansible role实现LAMP平台批量部署

前言 作为运维人员,当面对几十台或上百台服务器需要修改某个参数或部署某个平台,你将从何入手呢?ansible的出现很好的解决了这一困扰,ansible基于P...

25340
来自专栏Seebug漏洞平台

Nginx权限提升漏洞(CVE-2016-1247 )分析

Author: xd0o1XD(知道创宇404实验室) data:2016-11-17 0x00 漏洞概述 1.漏洞简介 11月15日,国外安全研究员Dawi...

52960
来自专栏吴柯的运维笔记

Git(分布式版本控制系统)配置与使用

“每个理性的IT人士都置顶了吴柯的运维笔记” Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git是一个开源的分布式版本控...

32350
来自专栏一个爱瞎折腾的程序猿

分享我在 vue 项目中关于 api 请求的一些实现及项目框架

axios 默认提交格式为:application/json 可使用 qs 模块(需要安装)转换后提交格式为 application/x-www-form-u...

15610
来自专栏北京马哥教育

Ansible 详细用法说明(一)

Ansible 一、概述 运维工具按需不需要有代理程序来划分的话分两类: agent(需要有代理工具):基于专用的agent程序完成管理功能,puppet, f...

37150

扫码关注云+社区

领取腾讯云代金券