0%

0CTF/TCTF2019 Ghost Pepper Writeup

前言

Shout-out to rr师傅 ,这次TCTF又长见识,学习了。rr师傅把0day拿出来出题,对于一个Java没有学过的web狗简直没有活路,枯了!!!
对于郁离歌师傅的学习能力和ctf的思路感到自己好卑微,Shout-out to yulige师傅
本文根据郁离歌师傅的结题思路进行复现的,师傅请绕过

正文

使用firefox进连接,会直接显示”karaf”的提示,chrome的话会在cookie中有所提示,用karaf:karaf进行登录,会有404的返回。但是都没有想到去搜索karaf这个关键字,看到响应头中Server:Jetty(9.3.24.v20180605),搜了一下,发现这个是java的服务器,当时心里想gg了,但还是去搜了一波与Jetty相关的漏洞,测试了几个feature,发现有jolokia.

访问/jolokia/list,返回一大串的json文件,顺着郁离歌师傅的思路,返回去想为什么开始要用karaf做密码账号?,搜索一下karaf
https://karaf.apache.org/manual/latest/
发现这是一个轻量级的多态容器,由此知道这道题应该会和这个有关系
https://karaf.apache.org/manual/latest/webconsole

由官方文档知道访问/system/console可以进入终端控制台。但是我们直接去访问时返回404,说明没有安装。
那是否要利用karaf的类进行webconsole的安装,然后进入控制台拿flag?,然后再list中搜索一下。

好像是root权限,那应该就是这个思路去拿flag了。
https://www.anquanke.com/post/id/173262#h2-0
https://xz.aliyun.com/t/4258#toc-0
根据这两篇文章,我们可以知道可以通过构造poc进行webconsole的安装,这里因为我没有学过java,就贴一下郁离歌师傅的poc。

1
2
3
4
5
6
{
"type":"EXEC",
"operation":"installFeature(java.lang.String)",
"mbean":"org.apache.karaf:name=root,type=feature",
"arguments":["webconsole"]
}


看到返回了200,然后再进行/system/console的访问,点Main->Gogo进入终端,执行命令拿flag。

总结

这次TCTF虽然没有做出题,但是学到了东西。还知道了一个道理:在ctf中任何的提醒都是有价值的。对于不知道的一定要去搜索,搜索,搜索!!!
这次也知道了,思路真的很重要。对于我来说比赛经验少了,在思路的方面一定要多多膜拜大佬们,共勉!!!

文献

http://yulige.top/?p=673
https://www.veracode.com/blog/research/exploiting-spring-boot-actuators
https://karaf.apache.org/manual/latest/webconsole