0x00前言
周末之中,参加TCTF,只做出来一道web题目,借此记录一下被虐过程
0x01 Weclome
关注公众号,签到,1分....
0x02 Ghost Pepper
打开网页,显示需要登陆,但是同时看到一个提示,the site say karaf,遂用karf,karf登陆进去,进去之后显示只有404错误,用dirsearch扫一遍也无果,因此将目标点聚集在jetty上面

因为之前在做题目的时候看到出题人的一条twitter说这次比赛会有0-day的出现,因此就往这方面找咯

既然是有0-day,那就先要弄清楚软件的功能咯,读文档.ing...经过几个小时的肝文档...终于在jolokia这个路径下发现了蛛丝马迹,在这个页面中显示

于是继续查找jolokia官方文档,在一篇文章中看到基于jolokia的信息泄露,进行尝试,输入url
http://111.186.63.207:31337/jolokia/read/Catalina:type=Manager,context=*,host=111.186.63.207
但是出现报错信息

遂进行一些其他的尝试无果后,在它文档中查找API的文档,同时注意到当时网站给到一个信息karaf,Karaf是apache旗下的一个开源项目.Karaf同时也是一个基于OSGi的运行环境,Karaf提供了一个轻量级的OSGi容器,可以用于部署各种组件,应用程序。因此下载一个本地容器进行测验,官网上下载karaf,进行安装,看到如下界面即安装成功

从karaf文档中看到webconsole有如下参考
You can use the WebConsole to:
manage Apache Karaf features
manage OSGi bundles
manage the instances
manage the confgurations
manage the log service
遂运行命令feature:install webconsole安装webconsole,安装完成之后用karaf karaf在localhost:8181/system/console里面进入控制台

发现gogo的控制台能够运行命令,bingo,那么只需要通过jolokia打开webconsole的如下控制台应该就可以读到flag

于是乎,继续肝文档,发现jolokia的基本命令为下
exec 响应
http://localhost:8080/jolokia/exec/java.lang:type=Memory/gcbaseURL/exec/<Mbean>/<method>/argument1,argument2,argument3
| Key | Description | Example | 
| type | exec | |
| mbean | MBean's ObjectName | java.lang:type=Threading | 
| operation | The operation to execute, optionally with a signature as described above. | dumpAllThreads | 
| arguments | An array of arguments for invoking this operation. | [true,true] | 
你能通过exec来调用一个mbean参数重置API,因此构造payload
curl -s 'http://111.186.63.207:31337/jolokia/exec/org.apache.karaf:name=root,type=feature/installFeature(java.lang.String)/webconsole' | python -m json.tool

get flag

使用POST方法一样可以

flag{DOYOULOVEJOLOKIA?ILOVEITVERYMUCH}
这次比赛应该算战队的第一步吧,以后慢慢加油啦,赋一张图纪念一下
