TCTF 2019 ghost pepper wp
TCTF 2019 ghost pepper wp
刚开始一看是jetty和karaf,一直在去调jetty,想用jetty那个泄露绝对路径的漏洞,第一天晚上一直在调,后来发现看错版本号了,这个版本里没有那个漏洞。
第二天就在分析karaf,没有找到输入点,所以网上的漏洞基本最后都挂掉了。
在第二天下午的时候,刷/system/console得到302,遂进入控制台,在gogo中得到flag,但是当时一脸迷茫,flag如下flag{DOYOULOVEJOLOKIA?ILOVEITVERYMUCH},于是搜了一把JOLOKIA,发现是一个jmx的东西https://jolokia.org
出题人以为我们的脑洞是这样的
简单的一搜,还真的有漏洞
https://www.freebuf.com/vuls/166695.html
https://blog.gdssecurity.com/labs/2018/4/18/jolokia-vulnerabilities-rce-xss.html
当时光记得看jndi了,于是常规起ldap服务器,扔poc,打了几次一直报错,说我json请求无效。
后来发现需要去掉content-type头,结果去掉content-Type头后依然报错。刚开始以为是我ldap服务有毛病,于是开新服务器,监听80和1389,发现确实没有数据包出来,遂看了眼报错。
1.5.0后默认不开代理,报错让看文档的proxy。
https://jolokia.org/reference/html/proxy.html
恩,不开代理的话没有办法jndi。
需要另辟蹊径。
文章里有讲可以通过访问/jolokia/list来查看可用的MBeans。
于是就访问了一下,json拷出来,放进vscode,结构如下。
刚开始看着也一脸懵逼,不知道这东西怎么用,然后看了一个文章上发送的请求,对比了一下其中的参数,大概了解到了一点门路。尝试构造了几个包,看了看文档发现,operation需要用EXEC,而attribute用READ/WRITE,详细见jolokia的文档。
既然提示讲了karaf,那必然要往karaf上走。
google “org.apache.karaf” “随便找了个方法(记不清了)”
发现这东西在karaf的定义上有详细的定义。
通过阅读文档发现这个jmx就是个操作命令行的接口,跟直接操作命令行的效果是一样的。因为之前我们通过system/console来得到的flag,所以思路就出来了,通过jmx调用mbeans去安装webconsole,然后访问就好了,这也能之前解释为什么我们能够访问到webconsole了。
找了一下,确实存在这个接口,命令行执行如下:
看了一下list的feature中,确实存在响应的方法,搜一下。
于是构造如下数据包,想测一下,结果报错。
刚开始没有发现这个报错的原因,后来又测了几个mbeans发现,有的发现正常,有的爆这个错误。于是看一下list,总结发现只要是有多参数的操作都会出现这种情况,刚开始以为会自动识别参数类型,然后进行调用相应的重载方法,后来考虑是不是调用有问题。
于是搜索了一下,发现还真是这样。
需要指定参数类型,于是带上参数类型请求。
执行成功。打开console
gogo获取flag