【发布时间】:2016-05-11 22:57:51
【问题描述】:
我正在尝试向客户再次确认 Imagetragick 漏洞确实固定在 heroku 上。我不想仅仅相信heroku发表的声明是真的,我想确认一下自己。
我在 rails 应用程序上使用 mini_magick 和carrierwave,但这应该适用于任何使用 imagemagick(回形针等)的设置
【问题讨论】:
标签: ruby-on-rails security heroku imagemagick
我正在尝试向客户再次确认 Imagetragick 漏洞确实固定在 heroku 上。我不想仅仅相信heroku发表的声明是真的,我想确认一下自己。
我在 rails 应用程序上使用 mini_magick 和carrierwave,但这应该适用于任何使用 imagemagick(回形针等)的设置
【问题讨论】:
标签: ruby-on-rails security heroku imagemagick
事实证明,通过查看 heroku 服务器上的 policy.xml 文档来确认相对容易。唯一花哨的一点是知道在哪里看。所以请执行以下操作(记住您在生产环境中,所以不要去编辑任何文件;无论如何它们最终都会被覆盖):
heroku run bash [-a] [app name if needed]
find / | grep "policy.xml" (not really necessary, just showing my work)
cat /etc/ImageMagick/policy.xml
它应该显示以下内容:
<policymap>
<policy domain="coder" rights="none" pattern="EPHEMERAL" />
<policy domain="coder" rights="none" pattern="URL" />
<policy domain="coder" rights="none" pattern="HTTPS" />
<policy domain="coder" rights="none" pattern="MVG" />
<policy domain="coder" rights="none" pattern="MSL" />
<policy domain="coder" rights="none" pattern="TEXT" />
<policy domain="coder" rights="none" pattern="SHOW" />
<policy domain="coder" rights="none" pattern="WIN" />
<policy domain="coder" rights="none" pattern="PLT" />
</policymap>
然后您可以根据修复确认:
如下:
<policymap>
<policy domain="coder" rights="none" pattern="EPHEMERAL" />
<policy domain="coder" rights="none" pattern="URL" />
<policy domain="coder" rights="none" pattern="HTTPS" />
<policy domain="coder" rights="none" pattern="MVG" />
<policy domain="coder" rights="none" pattern="MSL" />
<policy domain="coder" rights="none" pattern="TEXT" />
<policy domain="coder" rights="none" pattern="SHOW" />
<policy domain="coder" rights="none" pattern="WIN" />
<policy domain="coder" rights="none" pattern="PLT" />
</policymap>
【讨论】:
确认漏洞已修复的实际方法是在目标上执行 POC 漏洞利用。官方披露的here 还展示了一种通过在终端中执行以下命令来轻松测试服务器的方法。
(git应该安装在服务器上或手动下载git的内容。)
命令
git clone https://github.com/ImageTragick/PoCs
cd PoCs
chmod +x test.sh && ./test.sh
安全输出
此输出意味着您的服务器不再易受攻击。
user@host:~/code/PoCs$ ./test.sh
testing read
SAFE
testing delete
SAFE
testing http with local port: 38663
SAFE
testing http with nonce: a7DyBeV7
SAFE
testing rce1
SAFE
testing rce2
SAFE
testing MSL
SAFE
不安全的输出
如果您在输出中的任何位置看到 UNSAFE 字样,则您的服务器仍然存在漏洞。
user@host:~/code/PoCs$ ./test.sh
testing read
UNSAFE
testing delete
UNSAFE
testing http with local port: 44755
UNSAFE
testing http with nonce: a7DvBer2
UNSAFE
testing rce1
UNSAFE
testing rce2
UNSAFE
testing MSL
UNSAFE
【讨论】: